Properly use libalarm API (fixes NB#91719).
[modest] / src / hildon2 / modest-platform.c
index a59415d..c909a50 100644 (file)
@@ -92,6 +92,7 @@
 #define COMMON_FOLDER_DIALOG_ENTRY "entry"
 #define COMMON_FOLDER_DIALOG_ACCOUNT_PICKER "account-picker"
 #define FOLDER_PICKER_CURRENT_FOLDER "current-folder"
+#define MODEST_ALARMD_APPID PACKAGE_NAME
 
 
 static void _modest_platform_play_email_tone (void);
@@ -520,7 +521,7 @@ modest_platform_get_icon (const gchar *name, guint icon_size)
         */
        if (!name || strlen(name) == 0)
                return NULL;
-       
+
        current_theme = gtk_icon_theme_get_default ();
        pixbuf = gtk_icon_theme_load_icon (current_theme, name, icon_size,
                                           GTK_ICON_LOOKUP_NO_SVG,
@@ -703,10 +704,11 @@ folder_chooser_dialog_run (ModestFolderView *original)
 
        gtk_container_add (GTK_CONTAINER (GTK_DIALOG (userdata.dialog)->vbox), pannable);
        gtk_container_add (GTK_CONTAINER (pannable), folder_view);
+       gtk_widget_set_size_request (pannable, -1, 320);
+
        gtk_widget_show (folder_view);
        gtk_widget_show (pannable);
-       gtk_widget_show_all (userdata.dialog);
-       gtk_widget_set_size_request (pannable, -1, 320);
+       gtk_widget_show (userdata.dialog);
        g_signal_connect (G_OBJECT (folder_view), "folder-activated", 
                          G_CALLBACK (folder_chooser_activated), 
                          (gpointer) &userdata);
@@ -955,6 +957,8 @@ modest_platform_run_new_folder_dialog (GtkWindow *parent_window,
 {
        gchar *real_suggested_name = NULL, *tmp = NULL;
        gint result;
+       ModestTnyAccountStore *acc_store;
+       TnyAccount *account;
 
        if(suggested_name == NULL)
        {
@@ -990,10 +994,20 @@ modest_platform_run_new_folder_dialog (GtkWindow *parent_window,
        }
 
        /* In hildon 2.2 we always suggest the archive folder as parent */
-       suggested_folder = TNY_FOLDER_STORE (
-               modest_tny_account_get_special_folder 
-               (modest_tny_account_store_get_local_folders_account (modest_runtime_get_account_store ()),
-                TNY_FOLDER_TYPE_ARCHIVE));
+       acc_store = modest_runtime_get_account_store ();
+       account = modest_tny_account_store_get_mmc_folders_account (acc_store);
+       if (account) {
+               suggested_folder = (TnyFolderStore *)
+                       modest_tny_account_get_special_folder (account, 
+                                                              TNY_FOLDER_TYPE_ARCHIVE);
+               g_object_unref (account);
+               account = NULL;
+       }
+
+       /* If there is not archive folder then fallback to local folders account */ 
+       if (!suggested_folder)
+               suggested_folder = (TnyFolderStore *)
+                       modest_tny_account_store_get_local_folders_account (acc_store);
 
        tmp = g_strconcat (_("mcen_fi_new_folder_name"), ":", NULL);
        result = modest_platform_run_folder_common_dialog (parent_window, 
@@ -1311,7 +1325,7 @@ modest_platform_set_update_interval (guint minutes)
        /* Delete any existing alarm,
         * because we will replace it: */
        if (alarm_cookie) {
-               if (alarmd_event_del(alarm_cookie) != 1)
+               if (alarmd_event_del(alarm_cookie) != 0)
                        g_warning ("%s: alarm %d was not on the queue", __FUNCTION__, (int)alarm_cookie);
                alarm_cookie = 0;
                modest_conf_set_int (conf, MODEST_CONF_ALARM_ID, 0, NULL);
@@ -1328,6 +1342,7 @@ modest_platform_set_update_interval (guint minutes)
        alarm_event_t *event = alarm_event_create ();
        alarm_event_add_actions (event, 1);
        alarm_action_t *action = alarm_event_get_action (event, 0);
+       alarm_event_set_alarm_appid (event, MODEST_ALARMD_APPID);
        event->alarm_time = minutes * 60; /* seconds */
        
        /* Set recurrence every few minutes: */
@@ -1341,7 +1356,7 @@ modest_platform_set_update_interval (guint minutes)
        action->dbus_interface = g_strdup (MODEST_DBUS_IFACE);
        action->dbus_service = g_strdup (MODEST_DBUS_SERVICE);
        action->dbus_name = g_strdup (MODEST_DBUS_METHOD_SEND_RECEIVE);
-       action->flags = ALARM_ACTION_TYPE_DBUS | ALARM_ACTION_DBUS_USE_ACTIVATION;
+       action->flags = ALARM_ACTION_WHEN_TRIGGERED | ALARM_ACTION_TYPE_DBUS | ALARM_ACTION_DBUS_USE_ACTIVATION;
 
        /* Use ALARM_EVENT_NO_DIALOG: Otherwise, a dialog will be shown if 
         * exec_name or dbus_path is NULL, even though we have specified no dialog text.
@@ -1374,11 +1389,13 @@ modest_platform_set_update_interval (guint minutes)
 void
 modest_platform_push_email_notification(void)
 {
-       gboolean screen_on = TRUE, app_in_foreground;
+       gboolean screen_on, app_in_foreground;
 
        /* Get the window status */
        app_in_foreground = hildon_program_get_is_topmost (hildon_program_get_instance ());
 
+       screen_on = modest_window_mgr_screen_is_on (modest_runtime_get_window_mgr ());
+
        /* If the screen is on and the app is in the
           foreground we don't show anything */
        if (!(screen_on && app_in_foreground)) {
@@ -1874,7 +1891,7 @@ modest_platform_run_certificate_confirmation_dialog (const gchar* server_name,
 
        gchar *question = g_strdup_printf (_("mcen_nc_unknown_certificate"),
                                           server_name);
-       
+
        /* We use GTK_RESPONSE_APPLY because we want the button in the
           middle of OK and CANCEL the same as the browser does for
           example. With GTK_RESPONSE_HELP the view button is aligned
@@ -1886,7 +1903,7 @@ modest_platform_run_certificate_confirmation_dialog (const gchar* server_name,
                _HL("wdgt_bd_view"),          GTK_RESPONSE_APPLY,   /* abusing this... */
                _HL("wdgt_bd_no"), GTK_RESPONSE_CANCEL,
                NULL, NULL);
-       
+
        g_signal_connect (G_OBJECT(note), "response", 
                          G_CALLBACK(on_cert_dialog_response),
                          (gpointer) certificate);
@@ -2436,16 +2453,16 @@ modest_platform_create_move_to_dialog (GtkWindow *parent_window,
 TnyList *
 modest_platform_get_list_to_move (ModestWindow *window)
 {
+       TnyList *list = NULL;
+
        if (MODEST_IS_HEADER_WINDOW (window)) {
                ModestHeaderView *header_view;
 
                header_view = modest_header_window_get_header_view (MODEST_HEADER_WINDOW (window));
-
-               return modest_header_view_get_selected_headers (header_view);
+               list = modest_header_view_get_selected_headers (header_view);
        } else if (MODEST_IS_FOLDER_WINDOW (window)) {
                ModestFolderView *folder_view;
                TnyFolderStore *selected_folder;
-               TnyList *list;
 
                list = TNY_LIST (tny_simple_list_new ());
                folder_view = modest_folder_window_get_folder_view (MODEST_FOLDER_WINDOW (window));
@@ -2455,7 +2472,18 @@ modest_platform_get_list_to_move (ModestWindow *window)
                        g_object_unref (selected_folder);
                }
                return list;
+       } else if (MODEST_IS_MSG_VIEW_WINDOW (window)) {
+               TnyHeader *header;
+
+               header = modest_msg_view_window_get_header (MODEST_MSG_VIEW_WINDOW (window));
+               if (header) {
+                       list = TNY_LIST (tny_simple_list_new ());
+                       tny_list_prepend (list, G_OBJECT (header));
+                       g_object_unref (header);
+               }
        } else {
-               return NULL;
+               g_return_val_if_reached (NULL);
        }
+
+       return list;
 }