* make modest work on pre-OSSO 1.1 once more (don't require the notification stuff)
[modest] / src / maemo / modest-platform.c
index f2f8745..c621008 100644 (file)
@@ -34,7 +34,7 @@
 #include <modest-main-window.h>
 #include <modest-header-view.h>
 #include "maemo/modest-maemo-global-settings-dialog.h"
-
+#include "modest-widget-memory.h"
 #include <modest-hildon-includes.h>
 #include <osso-helplib.h>
 #include <dbus_api/modest-dbus-callbacks.h>
@@ -47,9 +47,9 @@
 #include <gtk/gtkmenuitem.h>
 #include <gtk/gtkmain.h>
 #include <string.h>
-#include <hildon/hildon-notification.h>
 
 #define HILDON_OSSO_URI_ACTION "uri-action"
+#define URI_ACTION_COPY "copy:"
 
 static osso_context_t *osso_context = NULL;
        
@@ -271,8 +271,8 @@ modest_platform_activate_file (const gchar *path, const gchar *mime_type)
 }
 
 typedef struct  {
-       GSList * actions;
-       gchar *uri;
+       GSList *actions;
+       gchar  *uri;
 } ModestPlatformPopupInfo;
 
 static gboolean
@@ -304,7 +304,21 @@ activate_uri_popup_item (GtkMenuItem *menu_item,
                g_printerr ("modest: no action name defined\n");
                return;
        }
+
+       /* special handling for the copy menu item -- copy the uri to the clipboard */
+       /* if it's a copy thingy, the uri will look like 'copy:http://slashdot.org' */
+       if (g_str_has_prefix (action_name, URI_ACTION_COPY)) {
+               GtkClipboard *clipboard = gtk_clipboard_get (GDK_NONE);
+               action_name += strlen(URI_ACTION_COPY); /* jump past the prefix */
+
+               if (g_str_has_prefix (action_name, "mailto:")) /* ignore mailto: prefixes */
+                       action_name += strlen ("mailto:");
+               
+               gtk_clipboard_set_text (clipboard, action_name, strlen (action_name));
+               return; /* we're done */
+       }
        
+       /* now, the real uri-actions... */
        for (node = popup_info->actions; node != NULL; node = g_slist_next (node)) {
 #ifdef MODEST_HILDON_VERSION_0
                OssoURIAction *action = (OssoURIAction *) node->data;
@@ -330,6 +344,7 @@ modest_platform_show_uri_popup (const gchar *uri)
 
        if (uri == NULL)
                return FALSE;
+       
 #ifdef MODEST_HILDON_VERSION_0
        scheme = osso_uri_get_scheme_from_uri (uri, NULL);
        actions_list = osso_uri_get_actions (scheme, NULL);
@@ -378,7 +393,18 @@ modest_platform_show_uri_popup (const gchar *uri)
 #endif 
                        gtk_widget_show (menu_item);
                }
+
+               /* always add the copy item */
+               GtkWidget* menu_item = gtk_menu_item_new_with_label (dgettext("osso-uri", "uri_link_copy_link_location"));
+               g_object_set_data_full (G_OBJECT(menu_item), HILDON_OSSO_URI_ACTION,
+                                       g_strconcat (URI_ACTION_COPY, uri, NULL),
+                                       g_free);
+               g_signal_connect (G_OBJECT (menu_item), "activate", G_CALLBACK (activate_uri_popup_item),NULL);
+               gtk_menu_shell_append (GTK_MENU_SHELL (menu), menu_item);
+               gtk_widget_show (menu_item);
+
                
+               /* and what to do when the link is deleted */
                g_signal_connect (G_OBJECT (menu), "delete-event", G_CALLBACK (delete_uri_popup), popup_info);
                gtk_menu_popup (GTK_MENU(menu), NULL, NULL, NULL, NULL, 1, gtk_get_current_event_time ());
                                                  
@@ -806,6 +832,7 @@ void
 modest_platform_on_new_msg (void)
 {
        return; /* TODO: Reenable this later. I disabled it to avoid having one notification per email. */
+#ifndef MODEST_HILDON_VERSION_0
        HildonNotification *not;
 
        /* Create a new notification. FIXME put the right values, need
@@ -816,7 +843,7 @@ modest_platform_on_new_msg (void)
                                       "system.note.dialog");
 
        /* Play sound SR-SND-18. TODO: play the right file */
-/*     hildon_notification_set_sound (not, "/usr/share/sounds/ui-battery_low.wav"); */
+/*     hildon_notification_set_sound (not, "/usr/share/sounds/ui-new_email.wav"); */
 
        /* Set the led pattern */
        notify_notification_set_hint_int32 (NOTIFY_NOTIFICATION (not), "led-pattern", 3);
@@ -825,8 +852,9 @@ modest_platform_on_new_msg (void)
           could be called from a thread */
        if (!notify_notification_show (NOTIFY_NOTIFICATION (not), NULL))
                g_error ("Failed to send notification");
-
+               
        g_object_unref (not);
+#endif /*MODEST_HILDON_VERSION_0*/
 }
 
 
@@ -879,3 +907,20 @@ modest_platform_show_addressbook (GtkWindow *parent_window)
                /* TODO: warning about error showing dialog */
        }
 }
+
+GtkWidget *
+modest_platform_create_folder_view (TnyFolderStoreQuery *query)
+{
+       GtkWidget *widget = modest_folder_view_new (query);
+
+       /* Show all accounts by default */
+       modest_folder_view_set_style (MODEST_FOLDER_VIEW (widget),
+                                     MODEST_FOLDER_VIEW_STYLE_SHOW_ONE);
+
+       /* Restore settings */
+       modest_widget_memory_restore (modest_runtime_get_conf(), 
+                                     G_OBJECT (widget),
+                                     MODEST_CONF_FOLDER_VIEW_KEY);
+
+       return widget;
+}