#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>
#include <gtk/gtkicontheme.h>
#include <gtk/gtkmenuitem.h>
#include <gtk/gtkmain.h>
+#include <modest-text-utils.h>
#include <string.h>
con = osso_get_dbus_connection (osso_context);
#ifdef MODEST_HAVE_OSSO_MIME
result = osso_mime_open_file_with_mime_type (con, uri_path, mime_str->str);
- g_string_free (mime_str, TRUE);
-
- if (result != 1)
- hildon_banner_show_information (NULL, NULL, _("mcen_ni_noregistered_viewer"));
- return result != 1;
#else
result = hildon_mime_open_file_with_mime_type (con, uri_path, mime_str->str);
+#endif /*MODEST_HAVE_OSSO_MIME*/
g_string_free (mime_str, TRUE);
if (result != 1)
- hildon_banner_show_information (NULL, NULL, _("mcen_ni_noregistered_viewer"));
+ modest_platform_run_information_dialog (NULL, _("mcen_ni_noregistered_viewer"));
return result != 1;
-#endif /*MODEST_HAVE_OSSO_MIME*/
-
}
typedef struct {
gint chars_length;
chars = gtk_editable_get_chars (editable, 0, -1);
- chars_length = strlen (chars);
+ chars_length = g_utf8_strlen (chars, -1);
/* Show WID-INF036 */
- if (chars_length == 20) {
+ if (chars_length >= 20) {
hildon_banner_show_information (gtk_widget_get_parent (GTK_WIDGET (data)), NULL,
- dgettext("hildon-common-strings", "ckdg_ib_maximum_characters_reached"));
+ _CS("ckdg_ib_maximum_characters_reached"));
} else {
if (chars_length == 0) {
/* A blank space is not valid as first character */
gtk_widget_set_sensitive (ok_button, FALSE);
g_list_free (buttons);
- } else if (strlen (chars) == 21) {
+ } else if (g_utf8_strlen (chars,-1) >= 21)
hildon_banner_show_information (gtk_widget_get_parent (GTK_WIDGET (user_data)), NULL,
- dgettext("hildon-common-strings", "ckdg_ib_maximum_characters_reached"));
- }
-
+ _CS("ckdg_ib_maximum_characters_reached"));
/* Free */
g_free (chars);
}
modest_widget_memory_save (modest_runtime_get_conf (),
G_OBJECT (header_view), MODEST_CONF_HEADER_VIEW_KEY);
+ while (gtk_events_pending ())
+ gtk_main_iteration ();
+
/* free */
g_list_free(cols);
}
gtk_widget_destroy (dialog);
+ while (gtk_events_pending ())
+ gtk_main_iteration ();
+
return result;
}
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
gtk_widget_destroy (GTK_WIDGET (dialog));
+ while (gtk_events_pending ())
+ gtk_main_iteration ();
+
+ return response;
+}
+
+gint
+modest_platform_run_yes_no_dialog (GtkWindow *parent_window,
+ const gchar *message)
+{
+ GtkWidget *dialog;
+ gint response;
+
+ dialog = hildon_note_new_confirmation_add_buttons (parent_window, message,
+ _("mcen_bd_yes"), GTK_RESPONSE_YES,
+ _("mcen_bd_no"), GTK_RESPONSE_NO,
+ NULL);
+ gtk_window_set_modal (GTK_WINDOW(dialog), TRUE);
+
+ response = gtk_dialog_run (GTK_DIALOG (dialog));
+
+ gtk_widget_destroy (GTK_WIDGET (dialog));
+
+ while (gtk_events_pending ())
+ gtk_main_iteration ();
+
return response;
}
dialog = hildon_note_new_information (parent_window, message);
- gtk_dialog_run (GTK_DIALOG (dialog));
+ g_signal_connect_swapped (dialog,
+ "response",
+ G_CALLBACK (gtk_widget_destroy),
+ dialog);
- gtk_widget_destroy (GTK_WIDGET (dialog));
+ gtk_widget_show_all (dialog);
}
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)
if (TNY_IS_FOLDER (folder_store)) {
/* Get the folder's parent account: */
TnyAccount *account = tny_folder_get_account(TNY_FOLDER (folder_store));
- result = modest_platform_connect_and_wait_if_network_account (NULL, account);
- g_object_unref (account);
+ if (account != NULL) {
+ result = modest_platform_connect_and_wait_if_network_account (NULL, account);
+ g_object_unref (account);
+ }
} else if (TNY_IS_ACCOUNT (folder_store)) {
/* Use the folder store as an account: */
result = modest_platform_connect_and_wait_if_network_account (NULL, TNY_ACCOUNT (folder_store));