* Fixes one special case of bug 77978, which was not considered in the original bug report
pmo-trunk-r4020
/* 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);
void
modest_platform_connect_and_perform (GtkWindow *parent_window,
+ gboolean force,
TnyAccount *account,
ModestConnectedPerformer callback,
gpointer user_data)
void
modest_platform_connect_and_perform_if_network_account (GtkWindow *parent_window,
+ gboolean force,
TnyAccount *account,
ModestConnectedPerformer callback,
gpointer user_data)
void
modest_platform_connect_and_perform (GtkWindow *parent_window,
+ gboolean force,
TnyAccount *account,
ModestConnectedPerformer callback,
gpointer user_data)
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) {
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 */
* 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 {
void
modest_platform_connect_if_remote_and_perform (GtkWindow *parent_window,
+ gboolean force,
TnyFolderStore *folder_store,
ModestConnectedPerformer callback,
gpointer user_data)
}
}
- modest_platform_connect_and_perform (parent_window, account, callback, user_data);
+ modest_platform_connect_and_perform (parent_window, force, account, callback, user_data);
return;
}
/*
* 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
* @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);
* 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:
/* 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 */
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);
}
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);
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);
}
}
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);
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))) {
}
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);
}
}
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);
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));
}
/* 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);
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);