#include <libosso.h>
#include <alarmd/alarm_event.h> /* For alarm_event_add(), etc. */
#include <tny-maemo-conic-device.h>
+#include <tny-simple-list.h>
#include <tny-folder.h>
#include <tny-camel-imap-store-account.h>
#include <tny-camel-pop-store-account.h>
gchar *suggested_name,
gchar **folder_name)
{
- return modest_platform_run_folder_name_dialog (parent_window,
- _("mcen_ti_new_folder"),
- _("mcen_fi_new_folder_name"),
- suggested_name,
- folder_name);
+ gchar *real_suggested_name = NULL;
+ gint result;
+
+ if(suggested_name == NULL)
+ {
+ const gchar *default_name = _("mcen_ia_default_folder_name");
+ unsigned int i;
+ gchar num_str[3];
+
+ for(i = 0; i < 100; ++ i)
+ {
+ TnyList *list = tny_simple_list_new ();
+ TnyFolderStoreQuery *query = tny_folder_store_query_new ();
+ guint length;
+
+ sprintf(num_str, "%.2u", i);
+
+ if (i == 0)
+ real_suggested_name = g_strdup (default_name);
+ else
+ real_suggested_name = g_strdup_printf (_("mcen_ia_default_folder_name_s"),
+ num_str);
+
+ tny_folder_store_query_add_item (query, real_suggested_name,
+ TNY_FOLDER_STORE_QUERY_OPTION_MATCH_ON_NAME);
+
+ tny_folder_store_get_folders (parent_folder, list, query, NULL);
+
+ length = tny_list_get_length (list);
+ g_object_unref (query);
+ g_object_unref (list);
+
+ if (length == 0)
+ break;
+
+ g_free (real_suggested_name);
+ }
+
+ /* Didn't find a free number */
+ if (i == 100)
+ real_suggested_name = g_strdup (default_name);
+ }
+ else
+ {
+ real_suggested_name = suggested_name;
+ }
+
+ result = modest_platform_run_folder_name_dialog (parent_window,
+ _("mcen_ti_new_folder"),
+ _("mcen_fi_new_folder_name"),
+ real_suggested_name,
+ folder_name);
+ if (suggested_name == NULL)
+ g_free(real_suggested_name);
+
+ return result;
}
gint
return result;
}
+static void
+set_account_to_online (TnyAccount *account)
+{
+ /* TODO: This is necessary to prevent a cancel of the password dialog
+ * from making a restart necessary to be asked the password again,
+ * but it causes a hang:
+ */
+ #if 0
+ if (account && TNY_IS_CAMEL_STORE_ACCOUNT (account)) {
+ /* Make sure that store accounts are online too,
+ * because tinymail sets accounts to offline if
+ * a password dialog is ever cancelled.
+ * We don't do this for transport accounts because
+ * a) They fundamentally need network access, so they can't really be offline.
+ * b) That might cause a transport connection to happen too early.
+ */
+ GError *error = NULL;
+ tny_camel_account_set_online (TNY_CAMEL_ACCOUNT (account), TRUE, &error);
+ if (error) {
+ g_warning ("%s: tny_camel_account_set_online() returned a GError:\n %s\n",
+ __FUNCTION__, error->message);
+ g_error_free (error);
+ }
+ }
+ #endif
+}
-gboolean modest_platform_connect_and_wait (GtkWindow *parent_window)
+gboolean modest_platform_connect_and_wait (GtkWindow *parent_window, TnyAccount *account)
{
if (connect_request_in_progress)
return FALSE;
if (tny_device_is_online (device)) {
printf ("DEBUG: %s: Already online.\n", __FUNCTION__);
+ set_account_to_online (account);
return TRUE;
} else
{
/* g_main_context_unref (context); */
g_slice_free (UtilIdleData, data);
-
- return tny_device_is_online (device);
+
+ gboolean result = tny_device_is_online (device);
+
+ if (result)
+ set_account_to_online (account);
+
+ return result;
}
gboolean modest_platform_connect_and_wait_if_network_account (GtkWindow *parent_window, TnyAccount *account)
}
}
- return modest_platform_connect_and_wait (parent_window);
+ return modest_platform_connect_and_wait (parent_window, account);
}
gboolean modest_platform_connect_and_wait_if_network_folderstore (GtkWindow *parent_window, TnyFolderStore *folder_store)