* Fixes NB#85819, block in information banner when retrieving from global search...
[modest] / src / dbus_api / modest-dbus-callbacks.c
index 7b9f16c..0c155b3 100644 (file)
@@ -71,7 +71,6 @@ typedef struct
 
 
 static gboolean notify_error_in_dbus_callback (gpointer user_data);
-static gboolean notify_msg_not_found_in_idle (gpointer user_data);
 static gboolean on_idle_compose_mail(gpointer user_data);
 static gboolean on_idle_top_application (gpointer user_data);
 
@@ -448,7 +447,8 @@ find_msg_async_cb (TnyFolder *folder,
         OpenMsgPerformerInfo *info = (OpenMsgPerformerInfo *) user_data;
 
         if (err || cancelled) {
-                g_idle_add (notify_msg_not_found_in_idle, NULL);
+               modest_platform_run_information_dialog (NULL, _("mail_ni_ui_folder_get_msg_folder_error"), TRUE);
+               g_idle_add (notify_error_in_dbus_callback, NULL);
                 goto end;
         }
 
@@ -456,7 +456,8 @@ find_msg_async_cb (TnyFolder *folder,
         if (header && (tny_header_get_flags (header) & TNY_HEADER_FLAG_DELETED)) {
                 g_object_unref (header);
                 g_object_unref (msg);
-                g_idle_add (notify_msg_not_found_in_idle, NULL);
+               modest_platform_run_information_dialog (NULL, _("mail_ni_ui_folder_get_msg_folder_error"), TRUE);
+               g_idle_add (notify_error_in_dbus_callback, NULL);
                 goto end;
         }
 
@@ -577,7 +578,8 @@ on_open_message_performer (gboolean canceled,
 
        info = (OpenMsgPerformerInfo *) user_data;
         if (canceled || err) {
-                g_idle_add (notify_msg_not_found_in_idle, NULL);
+               modest_platform_run_information_dialog (NULL, _("mail_ni_ui_folder_get_msg_folder_error"), TRUE);
+               g_idle_add (notify_error_in_dbus_callback, NULL);
                 on_find_msg_async_destroy (info);
                 return;
         }
@@ -596,11 +598,13 @@ on_open_message_performer (gboolean canceled,
                 folder = tny_store_account_find_folder (TNY_STORE_ACCOUNT (account), info->uri, NULL);
         }
         if (!folder) {
-                g_idle_add (notify_msg_not_found_in_idle, NULL);
+               modest_platform_run_information_dialog (NULL, _("mail_ni_ui_folder_get_msg_folder_error"), TRUE);
+               g_idle_add (notify_error_in_dbus_callback, NULL);
                 on_find_msg_async_destroy (info);
                 return;
         }
         
+       info->animation_timeout = g_timeout_add (1000, on_show_opening_animation, info);
         /* Get message */
         tny_folder_find_msg_async (folder, info->uri, find_msg_async_cb, NULL, info);
         g_object_unref (folder);
@@ -658,7 +662,8 @@ on_open_message (GArray * arguments, gpointer data, osso_rpc_t * retval)
                        info->account = g_object_ref (account);
                info->uri = uri;
                info->connect = TRUE;
-               info->animation_timeout = g_timeout_add (1000, on_show_opening_animation, info);
+               info->animation = NULL;
+               info->animation_timeout = 0;
 
                /* Try to get the message, if it's already downloaded
                   we don't need to connect */
@@ -1129,46 +1134,10 @@ on_send_receive(GArray *arguments, gpointer data, osso_rpc_t * retval)
        return OSSO_OK;
 }
 
-static gboolean
-on_idle_open_default_inbox(gpointer user_data)
-{
-       ModestWindow *main_win;
-       GtkWidget *folder_view;
-       
-       if (!check_and_offer_account_creation ()) /* this has it's only lock already */
-               return FALSE;
-
-       /* This is a GDK lock because we are an idle callback and
-        * the code below is or does Gtk+ code */
-       gdk_threads_enter (); /* CHECKED */
-
-       main_win = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr (),
-                                                     TRUE); /* create if non-existent */
-       if (!main_win) {
-               g_warning ("%s: BUG: no main window", __FUNCTION__);
-               gdk_threads_leave (); /* CHECKED */
-               return FALSE; /* don't call me again */
-       }
-               
-       /* Get the folder view */
-       folder_view = modest_main_window_get_child_widget (MODEST_MAIN_WINDOW (main_win),
-                                                          MODEST_MAIN_WINDOW_WIDGET_TYPE_FOLDER_VIEW);
-       modest_folder_view_select_first_inbox_or_local (MODEST_FOLDER_VIEW (folder_view));
-       
-       gdk_threads_leave (); /* CHECKED */
-       
-       /* This D-Bus method is obviously meant to result in the UI being visible,
-        * so show it, by calling this idle handler directly: */
-       on_idle_top_application(user_data);
-       
-       return FALSE; /* Do not call this callback again. */
-}
-
 static gint 
 on_open_default_inbox(GArray * arguments, gpointer data, osso_rpc_t * retval)
 {
-       /* Use g_idle to context-switch into the application's thread: */
-       g_idle_add(on_idle_open_default_inbox, NULL);
+       g_idle_add(on_idle_top_application, NULL);
        
        return OSSO_OK;
 }
@@ -1840,7 +1809,7 @@ modest_dbus_req_filter (DBusConnection *con,
                                         MODEST_DBUS_METHOD_SEARCH)) {
                
        /* don't try to search when there not enough mem */
-               if (modest_platform_check_memory_low (NULL)) {
+               if (modest_platform_check_memory_low (NULL, TRUE)) {
                        g_warning ("%s: not enough memory for searching",
                                   __FUNCTION__);
                        reply_empty_results (con, message);
@@ -1902,13 +1871,3 @@ notify_error_in_dbus_callback (gpointer user_data)
 
        return FALSE;
 }
-
-static gboolean
-notify_msg_not_found_in_idle (gpointer user_data)
-{
-       modest_platform_run_information_dialog (NULL, _("mail_ni_ui_folder_get_msg_folder_error"), FALSE);
-
-       g_idle_add (notify_error_in_dbus_callback, NULL);
-
-       return FALSE;
-}