X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-ui-actions.c;h=1c86dc936b89e4f9ec1a5c0fb6f911575b81dbcb;hb=3c6dd53ea3d17b288282f73d6cc4dc6bfa6ea6e1;hp=d4c6622dfc5aaf1eff03e1d963d529e593851b87;hpb=2b6c4fa7f90c2e9e24627eba531e3f03f7a6391f;p=modest diff --git a/src/modest-ui-actions.c b/src/modest-ui-actions.c index d4c6622..1c86dc9 100644 --- a/src/modest-ui-actions.c +++ b/src/modest-ui-actions.c @@ -526,7 +526,7 @@ modest_ui_actions_on_delete_message (GtkAction *action, ModestWindow *win) if (prev_row_reference != NULL) gtk_tree_row_reference_free (prev_row_reference); if (prev_path != NULL) - gtk_tree_path_free (prev_path); + gtk_tree_path_free (prev_path); } /* Update toolbar dimming state */ @@ -2189,6 +2189,7 @@ modest_ui_actions_on_header_activated (ModestHeaderView *header_view, ModestMainWindow *main_window) { TnyList *headers; + GtkWidget *open_widget; g_return_if_fail (MODEST_IS_MAIN_WINDOW(main_window)); @@ -2206,6 +2207,10 @@ modest_ui_actions_on_header_activated (ModestHeaderView *header_view, if (modest_platform_check_memory_low (MODEST_WINDOW(main_window))) return; + modest_ui_actions_check_menu_dimming_rules (MODEST_WINDOW (main_window)); + open_widget = modest_window_get_action_widget (MODEST_WINDOW (main_window), "/MenuBar/EmailMenu/EmailOpenMenu"); + if (!GTK_WIDGET_IS_SENSITIVE (open_widget)) + return; /* headers = tny_simple_list_new (); */ /* tny_list_prepend (headers, G_OBJECT (header)); */ @@ -3363,6 +3368,30 @@ modest_ui_actions_on_move_folder_to_trash_folder (GtkAction *action, ModestMainW } +typedef struct _PasswordDialogFields { + GtkWidget *username; + GtkWidget *password; + GtkWidget *dialog; +} PasswordDialogFields; + +static void +password_dialog_check_field (GtkEditable *editable, + PasswordDialogFields *fields) +{ + const gchar *value; + gboolean any_value_empty = FALSE; + + value = gtk_entry_get_text (GTK_ENTRY (fields->username)); + if ((value == NULL) || value[0] == '\0') { + any_value_empty = TRUE; + } + value = gtk_entry_get_text (GTK_ENTRY (fields->password)); + if ((value == NULL) || value[0] == '\0') { + any_value_empty = TRUE; + } + gtk_dialog_set_response_sensitive (GTK_DIALOG (fields->dialog), GTK_RESPONSE_ACCEPT, !any_value_empty); +} + void modest_ui_actions_on_password_requested (TnyAccountStore *account_store, const gchar* server_account_name, @@ -3374,6 +3403,7 @@ modest_ui_actions_on_password_requested (TnyAccountStore *account_store, { g_return_if_fail(server_account_name); gboolean completed = FALSE; + PasswordDialogFields *fields = NULL; /* Initalize output parameters: */ if (cancel) @@ -3434,11 +3464,16 @@ modest_ui_actions_on_password_requested (TnyAccountStore *account_store, gtk_entry_set_text (GTK_ENTRY (entry_username), initial_username); /* Dim this if a connection has ever succeeded with this username, * as per the UI spec: */ - const gboolean username_known = - modest_account_mgr_get_server_account_username_has_succeeded( - modest_runtime_get_account_mgr(), server_account_name); - gtk_widget_set_sensitive (entry_username, !username_known); - + /* const gboolean username_known = */ + /* modest_account_mgr_get_server_account_username_has_succeeded( */ + /* modest_runtime_get_account_mgr(), server_account_name); */ + /* gtk_widget_set_sensitive (entry_username, !username_known); */ + + /* We drop the username sensitive code and disallow changing it here + * as tinymail does not support really changing the username in the callback + */ + gtk_widget_set_sensitive (entry_username, FALSE); + #ifdef MODEST_PLATFORM_MAEMO /* Auto-capitalization is the default, so let's turn it off: */ hildon_gtk_entry_set_input_mode (GTK_ENTRY (entry_username), HILDON_GTK_INPUT_MODE_FULL); @@ -3490,6 +3525,15 @@ modest_ui_actions_on_password_requested (TnyAccountStore *account_store, TRUE, FALSE, 0); */ + fields = g_slice_new0 (PasswordDialogFields); + fields->username = entry_username; + fields->password = entry_password; + fields->dialog = dialog; + + g_signal_connect (entry_username, "changed", G_CALLBACK (password_dialog_check_field), fields); + g_signal_connect (entry_password, "changed", G_CALLBACK (password_dialog_check_field), fields); + password_dialog_check_field (NULL, fields); + gtk_widget_show_all (GTK_WIDGET(GTK_DIALOG(dialog)->vbox)); while (!completed) { @@ -3553,6 +3597,7 @@ modest_ui_actions_on_password_requested (TnyAccountStore *account_store, */ gtk_widget_destroy (dialog); + g_slice_free (PasswordDialogFields, fields); /* printf ("DEBUG: %s: cancel=%d\n", __FUNCTION__, *cancel); */ }