X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmaemo%2Fmodest-platform.c;h=3fec9882bb80fa48776dcc52800a1f03520464b2;hp=b53ee1bcb62fbeeb4e3cd5473b57167cea00efc2;hb=01caca884dfff113cacec47e7758f01b9bbe07d0;hpb=52d79eb245568e26a25d3b129f1b4ed8031c95bb diff --git a/src/maemo/modest-platform.c b/src/maemo/modest-platform.c index b53ee1b..3fec988 100644 --- a/src/maemo/modest-platform.c +++ b/src/maemo/modest-platform.c @@ -59,7 +59,8 @@ static osso_context_t *osso_context = NULL; -static void folder_name_insensitive_press (GtkWidget *widget, ModestWindow *window); +static void folder_name_insensitive_press (GtkWidget *widget, + ModestWindow *window); static void on_modest_conf_update_interval_changed (ModestConf* self, const gchar *key, @@ -203,14 +204,11 @@ guess_mime_type_from_name (const gchar* name) gchar* modest_platform_get_file_icon_name (const gchar* name, const gchar* mime_type, - gchar **effective_mime_type) + gchar **effective_mime_type) { GString *mime_str = NULL; gchar *icon_name = NULL; gchar **icons, **cursor; - - - g_return_val_if_fail (name || mime_type, NULL); if (!mime_type || !g_ascii_strcasecmp (mime_type, "application/octet-stream")) mime_str = g_string_new (guess_mime_type_from_name(name)); @@ -568,18 +566,26 @@ entry_insert_text (GtkEditable *editable, hildon_banner_show_information (gtk_widget_get_parent (GTK_WIDGET (data)), NULL, _CS("ckdg_ib_maximum_characters_reached")); } else { - if (chars_length == 0) { - /* A blank space is not valid as first character */ - if (strcmp (text, " ")) { - GtkWidget *ok_button; - GList *buttons; - - /* Show OK button */ - buttons = gtk_container_get_children (GTK_CONTAINER (GTK_DIALOG (data)->action_area)); - ok_button = GTK_WIDGET (buttons->next->data); + gboolean is_valid = FALSE; + + if (!text) + is_valid = FALSE; + else if (strlen(text) == 0 && g_str_has_prefix (chars, " ")) + is_valid = FALSE; + else + is_valid = !g_str_has_prefix(text, " "); + + /* A blank space is not valid as first character */ + if (is_valid) { + GtkWidget *ok_button; + GList *buttons; + + /* Show OK button */ + buttons = gtk_container_get_children (GTK_CONTAINER (GTK_DIALOG (data)->action_area)); + ok_button = GTK_WIDGET (buttons->next->data); gtk_widget_set_sensitive (ok_button, TRUE); g_list_free (buttons); - } + } /* Write the text in the entry */ @@ -775,7 +781,9 @@ modest_platform_run_folder_name_dialog (GtkWindow *parent_window, /* Add accept button (with unsensitive handler) */ buttons = gtk_container_get_children (GTK_CONTAINER (GTK_DIALOG (dialog)->action_area)); accept_btn = GTK_WIDGET (buttons->next->data); - g_signal_connect (G_OBJECT (accept_btn), "insensitive-press", G_CALLBACK (folder_name_insensitive_press), parent_window); + g_signal_connect (G_OBJECT (accept_btn), "insensitive-press", + G_CALLBACK (folder_name_insensitive_press), + parent_window); /* Create label and entry */ label = gtk_label_new (label_text); @@ -826,7 +834,7 @@ modest_platform_run_folder_name_dialog (GtkWindow *parent_window, static void folder_name_insensitive_press (GtkWidget *widget, ModestWindow *window) { - hildon_banner_show_information (NULL, NULL, _("(empty)")); + hildon_banner_show_information (NULL, NULL, _CS("ckdg_ib_enter_name")); } gint @@ -1025,8 +1033,34 @@ on_idle_wait_for_previous_connect_to_finish(gpointer user_data) 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; @@ -1036,6 +1070,7 @@ gboolean modest_platform_connect_and_wait (GtkWindow *parent_window) if (tny_device_is_online (device)) { printf ("DEBUG: %s: Already online.\n", __FUNCTION__); + set_account_to_online (account); return TRUE; } else { @@ -1073,8 +1108,13 @@ gboolean modest_platform_connect_and_wait (GtkWindow *parent_window) /* 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) @@ -1087,7 +1127,7 @@ gboolean modest_platform_connect_and_wait_if_network_account (GtkWindow *parent_ } } - 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) @@ -1158,17 +1198,13 @@ gboolean modest_platform_set_update_interval (guint minutes) /* Register alarm: */ - /* Get current time: */ - time_t time_now; - time (&time_now); - struct tm *st_time = localtime (&time_now); - - /* Add minutes to tm_min field: */ - st_time->tm_min += minutes; - - /* Set the time in alarm_event_t structure: */ + /* Set the interval in alarm_event_t structure: */ alarm_event_t *event = g_new0(alarm_event_t, 1); - event->alarm_time = mktime (st_time); + event->alarm_time = minutes * 60; /* seconds */ + + /* Set recurrence every few minutes: */ + event->recurrence = minutes; + event->recurrence_count = -1; /* Means infinite */ /* Specify what should happen when the alarm happens: * It should call this D-Bus method: */