+ if (tny_account_get_account_type (account) == TNY_ACCOUNT_TYPE_STORE) {
+ if (!TNY_IS_CAMEL_POP_STORE_ACCOUNT (account) &&
+ !TNY_IS_CAMEL_IMAP_STORE_ACCOUNT (account)) {
+
+ /* No need to connect a local account */
+ if (callback)
+ callback (FALSE, NULL, parent_window, account, user_data);
+
+ goto clean;
+ }
+ }
+ modest_platform_connect_and_perform (parent_window, force, account, callback, user_data);
+
+ clean:
+ if (account)
+ g_object_unref (account);
+}
+
+static void
+src_account_connect_performer (gboolean canceled,
+ GError *err,
+ GtkWindow *parent_window,
+ TnyAccount *src_account,
+ gpointer user_data)
+{
+ DoubleConnectionInfo *info = (DoubleConnectionInfo *) user_data;
+
+ if (canceled || err) {
+ /* If there was any error call the user callback */
+ info->callback (canceled, err, parent_window, src_account, info->data);
+ } else {
+ /* Connect the destination account */
+ modest_platform_connect_if_remote_and_perform (parent_window, TRUE,
+ TNY_FOLDER_STORE (info->dst_account),
+ info->callback, info->data);
+ }
+
+ /* Free the info object */
+ g_object_unref (info->dst_account);
+ g_slice_free (DoubleConnectionInfo, info);
+}
+
+
+void
+modest_platform_double_connect_and_perform (GtkWindow *parent_window,
+ gboolean force,
+ TnyFolderStore *folder_store,
+ DoubleConnectionInfo *connect_info)
+{
+ modest_platform_connect_if_remote_and_perform(parent_window,
+ force,
+ folder_store,
+ src_account_connect_performer,
+ connect_info);
+}
+
+GtkWidget *
+modest_platform_get_account_settings_dialog (ModestAccountSettings *settings)
+{
+ ModestAccountSettingsDialog *dialog = modest_account_settings_dialog_new ();
+
+ modest_account_settings_dialog_set_account (dialog, settings);
+ return GTK_WIDGET (dialog);
+}
+
+GtkWidget *
+modest_platform_get_account_settings_wizard (void)
+{
+ ModestEasysetupWizardDialog *dialog = modest_easysetup_wizard_dialog_new ();
+
+ return GTK_WIDGET (dialog);
+}
+
+ModestConnectedVia
+modest_platform_get_current_connection (void)
+{
+ TnyDevice *device = NULL;
+ ModestConnectedVia retval = MODEST_CONNECTED_VIA_ANY;
+
+ device = modest_runtime_get_device ();
+
+ if (!tny_device_is_online (device))
+ return MODEST_CONNECTED_VIA_ANY;
+
+#ifdef MODEST_HAVE_CONIC
+ /* Get iap id */
+ const gchar *iap_id = tny_maemo_conic_device_get_current_iap_id (TNY_MAEMO_CONIC_DEVICE (device));
+ if (iap_id) {
+ ConIcIap *iap = tny_maemo_conic_device_get_iap (
+ TNY_MAEMO_CONIC_DEVICE (device), iap_id);
+ const gchar *bearer_type = con_ic_iap_get_bearer_type (iap);
+ if (bearer_type) {
+ if (!strcmp (bearer_type, CON_IC_BEARER_WLAN_INFRA) ||
+ !strcmp (bearer_type, CON_IC_BEARER_WLAN_ADHOC) ||
+ !strcmp (bearer_type, "WIMAX")) {
+ retval = MODEST_CONNECTED_VIA_WLAN_OR_WIMAX;
+ } else {
+ retval = MODEST_CONNECTED_VIA_ANY;
+ }
+ }
+ g_object_unref (iap);
+ }
+#else
+ retval = MODEST_CONNECTED_VIA_WLAN_OR_WIMAX; /* assume WLAN (fast) internet */
+#endif /* MODEST_HAVE_CONIC */
+ return retval;
+}
+
+
+
+gboolean
+modest_platform_check_memory_low (ModestWindow *win,
+ gboolean visuals)
+{
+ gboolean lowmem;
+
+ /* are we in low memory state? */
+ lowmem = osso_mem_in_lowmem_state () ? TRUE : FALSE;
+
+ if (win && lowmem && visuals)
+ modest_platform_run_information_dialog (
+ GTK_WINDOW(win),
+ dgettext("ke-recv","memr_ib_operation_disabled"),
+ TRUE);
+
+ if (lowmem)
+ g_debug ("%s: low memory reached. disallowing some operations",
+ __FUNCTION__);
+
+ return lowmem;