* Adds the force parameter to the connect_and_perform which forces the device to...
authorSergio Villar Senin <svillar@igalia.com>
Fri, 11 Jan 2008 12:54:45 +0000 (12:54 +0000)
committerSergio Villar Senin <svillar@igalia.com>
Fri, 11 Jan 2008 12:54:45 +0000 (12:54 +0000)
* Fixes one special case of bug 77978, which was not considered in the original bug report

pmo-trunk-r4020

src/dbus_api/modest-dbus-callbacks.c
src/gnome/modest-platform.c
src/maemo/modest-platform.c
src/modest-platform.h
src/modest-ui-actions.c
src/widgets/modest-folder-view.c

index 654b3ba..071d159 100644 (file)
@@ -476,7 +476,7 @@ on_idle_open_message_performer (gpointer user_data)
        /* Lock before the call as we're in an idle handler */
        gdk_threads_enter ();
        if (info->connect) {
-               modest_platform_connect_and_perform (GTK_WINDOW (main_win), info->account, 
+               modest_platform_connect_and_perform (GTK_WINDOW (main_win), TRUE, info->account, 
                                                     on_open_message_performer, info);
        } else {
                on_open_message_performer (FALSE, NULL, GTK_WINDOW (main_win), info->account, info);
index dc4c4c8..2105b1f 100644 (file)
@@ -392,6 +392,7 @@ modest_platform_run_alert_dialog (const gchar* prompt,
 
 void 
 modest_platform_connect_and_perform (GtkWindow *parent_window, 
+                                    gboolean force,
                                     TnyAccount *account, 
                                     ModestConnectedPerformer callback, 
                                     gpointer user_data)
@@ -402,6 +403,7 @@ modest_platform_connect_and_perform (GtkWindow *parent_window,
 
 void 
 modest_platform_connect_and_perform_if_network_account (GtkWindow *parent_window, 
+                                                       gboolean force,
                                                        TnyAccount *account,
                                                        ModestConnectedPerformer callback, 
                                                        gpointer user_data)
index 20f02f2..a41e3ce 100644 (file)
@@ -1966,6 +1966,7 @@ on_conic_device_went_online (TnyMaemoConicDevice *device, const gchar* iap_id, g
        
 void 
 modest_platform_connect_and_perform (GtkWindow *parent_window, 
+                                    gboolean force,
                                     TnyAccount *account, 
                                     ModestConnectedPerformer callback, 
                                     gpointer user_data)
@@ -1974,15 +1975,10 @@ modest_platform_connect_and_perform (GtkWindow *parent_window,
        TnyDevice *device;
        TnyConnectionStatus conn_status;
        OnWentOnlineInfo *info;
-       gboolean user_requested;
        
        device = modest_runtime_get_device();
        device_online = tny_device_is_online (device);
 
-       /* Whether the connection is user requested or automatically
-          requested, for example via D-Bus */
-       user_requested = (parent_window) ? TRUE : FALSE;
-
        /* If there is no account check only the device status */
        if (!account) {
                
@@ -2009,7 +2005,7 @@ modest_platform_connect_and_perform (GtkWindow *parent_window,
                        info->callback = callback;
                
                        tny_maemo_conic_device_connect_async (TNY_MAEMO_CONIC_DEVICE (device), NULL,
-                                                             user_requested, on_conic_device_went_online, 
+                                                             force, on_conic_device_went_online, 
                                                              info);
  
                        /* We'll cleanup in on_conic_device_went_online */
@@ -2062,7 +2058,7 @@ modest_platform_connect_and_perform (GtkWindow *parent_window,
                 * and the account */
                
                tny_maemo_conic_device_connect_async (TNY_MAEMO_CONIC_DEVICE (device), NULL,
-                                                     user_requested, on_conic_device_went_online, 
+                                                     force, on_conic_device_went_online, 
                                                      info);
                
        } else {
@@ -2081,6 +2077,7 @@ modest_platform_connect_and_perform (GtkWindow *parent_window,
 
 void
 modest_platform_connect_if_remote_and_perform (GtkWindow *parent_window, 
+                                              gboolean force,
                                               TnyFolderStore *folder_store, 
                                               ModestConnectedPerformer callback, 
                                               gpointer user_data)
@@ -2122,7 +2119,7 @@ modest_platform_connect_if_remote_and_perform (GtkWindow *parent_window,
                }
        }
  
-       modest_platform_connect_and_perform (parent_window, account, callback, user_data);
+       modest_platform_connect_and_perform (parent_window, force, account, callback, user_data);
  
        return;
 }
index 606b3d9..9e2d386 100644 (file)
@@ -416,6 +416,7 @@ typedef void (*ModestConnectedPerformer) (gboolean canceled,
 
 /*
  * modest_platform_connect_and_perform:
+ * @force: force the device to connect if we're offline, if FALSE then it does not connect if required
  * @parent_window: the parent #GtkWindow for any interactive or progress feedback UI.
  * @account: The account to be used.
  * @callback: will be called when finished, can be NULL
@@ -427,6 +428,7 @@ typedef void (*ModestConnectedPerformer) (gboolean canceled,
  * @account is NULL, only a network connection is made using the platform's device.
  */            
 void modest_platform_connect_and_perform (GtkWindow *parent_window, 
+                                         gboolean force,
                                          TnyAccount *account, 
                                          ModestConnectedPerformer callback, 
                                          gpointer user_data);
@@ -443,9 +445,10 @@ void modest_platform_connect_and_perform (GtkWindow *parent_window,
  * will in that case synchronously and instantly perform the @callback
  */
 void modest_platform_connect_if_remote_and_perform (GtkWindow *parent_window, 
-                                                                TnyFolderStore *folder_store,
-                                                                ModestConnectedPerformer callback, 
-                                                                gpointer user_data);
+                                                   gboolean force,
+                                                   TnyFolderStore *folder_store,
+                                                   ModestConnectedPerformer callback, 
+                                                   gpointer user_data);
 
 /**
  * modest_platform_get_account_settings_dialog:
index 95c7023..c9ab096 100644 (file)
@@ -1220,7 +1220,7 @@ open_msgs_from_headers (TnyList *headers, ModestWindow *win)
 
        /* Connect to the account and perform */
        if (uncached_msgs > 0) {
-               modest_platform_connect_and_perform ((GtkWindow *) win, g_object_ref (account), 
+               modest_platform_connect_and_perform ((GtkWindow *) win, TRUE, g_object_ref (account), 
                                                     open_msgs_performer, g_object_ref (not_opened_headers));
        } else {
                /* Call directly the performer, do not need to connect */
@@ -1769,7 +1769,8 @@ modest_ui_actions_do_send_receive (const gchar *account_name,
                                                                     TNY_ACCOUNT_TYPE_STORE);
 
        /* Invoke the connect and perform */
-       modest_platform_connect_and_perform ((win) ? GTK_WINDOW (win) : NULL, info->account, 
+       modest_platform_connect_and_perform ((win) ? GTK_WINDOW (win) : NULL, 
+                                            (win) ? TRUE : FALSE, info->account, 
                                             do_send_receive_performer, info);
 }
 
@@ -2691,6 +2692,7 @@ modest_ui_actions_create_folder(GtkWidget *parent_window,
        if (parent_folder) {
                /* The parent folder will be freed in the callback */
                modest_platform_connect_if_remote_and_perform (GTK_WINDOW (parent_window), 
+                                                              TRUE,
                                                               parent_folder,
                                                               create_folder_performer, 
                                                               parent_folder);
@@ -2842,7 +2844,7 @@ modest_ui_actions_on_rename_folder (GtkAction *action,
                        RenameFolderInfo *rename_folder_data = g_new0 (RenameFolderInfo, 1);
                        rename_folder_data->folder = folder;
                        rename_folder_data->new_name = folder_name;
-                       modest_platform_connect_if_remote_and_perform (GTK_WINDOW(main_window), 
+                       modest_platform_connect_if_remote_and_perform (GTK_WINDOW(main_window), TRUE,
                                        folder, on_rename_folder_performer, rename_folder_data);
                }
        }
@@ -2947,6 +2949,7 @@ delete_folder (ModestMainWindow *main_window, gboolean move_to_trash)
                g_object_ref (G_OBJECT (info->folder));
                TnyAccount *account = tny_folder_get_account (TNY_FOLDER (folder));
                modest_platform_connect_if_remote_and_perform (GTK_WINDOW (main_window), 
+                                                              TRUE,
                                                               TNY_FOLDER_STORE (account), 
                                                               on_delete_folder_cb, info);
                g_object_unref (account);
@@ -4668,7 +4671,7 @@ modest_ui_actions_on_main_window_move_to (GtkAction *action,
                        info->folder_view = folder_view;
                        g_object_ref (G_OBJECT (info->src_folder));
                        g_object_ref (G_OBJECT (info->dst_folder));
-                       modest_platform_connect_if_remote_and_perform(GTK_WINDOW (win), 
+                       modest_platform_connect_if_remote_and_perform(GTK_WINDOW (win), TRUE,
                                    TNY_FOLDER_STORE (dst_folder), on_move_folder_cb, info);
                }
        } else if (gtk_widget_is_focus (GTK_WIDGET(header_view))) {
@@ -4687,7 +4690,7 @@ modest_ui_actions_on_main_window_move_to (GtkAction *action,
                }
                if (do_xfer) /* Transfer messages */ {
                        g_object_ref (dst_folder);
-                       modest_platform_connect_if_remote_and_perform(GTK_WINDOW (win), 
+                       modest_platform_connect_if_remote_and_perform(GTK_WINDOW (win), TRUE,
                                        TNY_FOLDER_STORE (dst_folder), xfer_messages_from_move_to_cb, dst_folder);
                }
        }
@@ -4731,7 +4734,7 @@ modest_ui_actions_on_msg_view_window_move_to (GtkAction *action,
 
        if (do_xfer) {
                g_object_ref (dst_folder);
-               modest_platform_connect_if_remote_and_perform(GTK_WINDOW (win), 
+               modest_platform_connect_if_remote_and_perform(GTK_WINDOW (win), TRUE,
                                TNY_FOLDER_STORE (dst_folder), xfer_messages_from_move_to_cb, dst_folder);
         }
        g_object_unref (account);
@@ -4962,7 +4965,7 @@ modest_ui_actions_on_retrieve_msg_contents (GtkAction *action,
        g_object_unref (iter);
 
        /* Connect and perform the message retrieval */
-       modest_platform_connect_and_perform ((GtkWindow *) window, 
+       modest_platform_connect_and_perform ((GtkWindow *) window, TRUE,
                                             g_object_ref (account), 
                                             retrieve_msg_contents_performer, 
                                             g_object_ref (headers));
index abefb52..6a04db8 100644 (file)
@@ -2204,7 +2204,7 @@ drag_and_drop_from_folder_view_dst_folder_performer (gboolean canceled,
        }
 
        /* Connect to source folder and perform the copy/move */
-       modest_platform_connect_if_remote_and_perform (NULL, 
+       modest_platform_connect_if_remote_and_perform (NULL, TRUE,
                                                       info->src_folder,
                                                       drag_and_drop_from_folder_view_src_folder_performer,
                                                       info);
@@ -2289,7 +2289,7 @@ drag_and_drop_from_folder_view (GtkTreeModel     *source_model,
        info->helper = helper;
 
        /* Connect to the destination folder and perform the copy/move */
-       modest_platform_connect_if_remote_and_perform (GTK_WINDOW (win), 
+       modest_platform_connect_if_remote_and_perform (GTK_WINDOW (win), TRUE,
                                                       dest_folder,
                                                       drag_and_drop_from_folder_view_dst_folder_performer,
                                                       info);