From 09e6f1b208cad6b13358d3d07d6d28128f936bd9 Mon Sep 17 00:00:00 2001 From: Jose Dapena Paz Date: Thu, 30 Oct 2008 13:50:28 +0000 Subject: [PATCH] * Moved account delete button from accounts view to account settings dialog. pmo-trunk-r6202 --- src/hildon2/modest-account-view-window.c | 65 ------------------ .../modest-default-account-settings-dialog.c | 71 ++++++++++++++++++++ 2 files changed, 71 insertions(+), 65 deletions(-) diff --git a/src/hildon2/modest-account-view-window.c b/src/hildon2/modest-account-view-window.c index b191595..ebd7743 100644 --- a/src/hildon2/modest-account-view-window.c +++ b/src/hildon2/modest-account-view-window.c @@ -61,7 +61,6 @@ typedef struct _ModestAccountViewWindowPrivate ModestAccountViewWindowPrivate; struct _ModestAccountViewWindowPrivate { GtkWidget *new_button; GtkWidget *edit_button; - GtkWidget *delete_button; ModestAccountView *account_view; guint acc_removed_handler; }; @@ -142,7 +141,6 @@ on_selection_changed (GtkTreeSelection *sel, ModestAccountViewWindow *self) /* Set the status of the buttons */ gtk_widget_set_sensitive (priv->edit_button, has_selection); - gtk_widget_set_sensitive (priv->delete_button, has_selection); } /** Check whether any connections are active, and cancel them if @@ -230,63 +228,6 @@ check_for_active_account (ModestAccountViewWindow *self, const gchar* account_na } static void -on_delete_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) -{ - ModestAccountViewWindowPrivate *priv; - ModestAccountMgr *account_mgr; - gchar *account_title = NULL, *account_name = NULL; - - priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); - - account_mgr = modest_runtime_get_account_mgr(); - account_name = modest_account_view_get_selected_account (priv->account_view); - if(!account_name) - return; - - account_title = modest_account_mgr_get_display_name(account_mgr, account_name); - /* This could happen if the account is being deleted */ - if (!account_title) - return; - - if (check_for_active_account (self, account_name)) { - /* The warning text depends on the account type: */ - gchar *txt = NULL; - gint response; - ModestProtocol *protocol; - - protocol = modest_protocol_registry_get_protocol_by_type (modest_runtime_get_protocol_registry (), - modest_account_mgr_get_store_protocol (account_mgr, account_name)); - txt = modest_protocol_get_translation (protocol, MODEST_PROTOCOL_TRANSLATION_DELETE_MAILBOX, account_title); - if (txt == NULL) { - txt = g_strdup_printf (_("emev_nc_delete_mailbox"), - account_title); - } - - response = modest_platform_run_confirmation_dialog (GTK_WINDOW (self), txt); - g_free (txt); - txt = NULL; - - if (response == GTK_RESPONSE_OK) { - /* Remove account. If it succeeds then it also removes - the account from the ModestAccountView: */ - gboolean is_default = FALSE; - gchar *default_account_name = modest_account_mgr_get_default_account (account_mgr); - if (default_account_name && (strcmp (default_account_name, account_name) == 0)) - is_default = TRUE; - g_free (default_account_name); - - gboolean removed = modest_account_mgr_remove_account (account_mgr, account_name); - if (!removed) { - g_warning ("%s: modest_account_mgr_remove_account() failed.\n", __FUNCTION__); - } - - } - g_free (account_title); - } - g_free (account_name); -} - -static void on_account_settings_dialog_response (GtkDialog *dialog, gint response, gpointer user_data) @@ -398,21 +339,16 @@ setup_button_box (ModestAccountViewWindow *self, GtkButtonBox *box) priv->new_button = gtk_button_new_from_stock(_("mcen_bd_new")); priv->edit_button = gtk_button_new_with_label(_("mcen_bd_edit")); - priv->delete_button = gtk_button_new_from_stock(_("mcen_bd_delete")); g_signal_connect (G_OBJECT(priv->new_button), "clicked", G_CALLBACK(on_new_button_clicked), self); - g_signal_connect (G_OBJECT(priv->delete_button), "clicked", - G_CALLBACK(on_delete_button_clicked), - self); g_signal_connect (G_OBJECT(priv->edit_button), "clicked", G_CALLBACK(on_edit_button_clicked), self); gtk_box_pack_start (GTK_BOX(box), priv->new_button, FALSE, FALSE,2); gtk_box_pack_start (GTK_BOX(box), priv->edit_button, FALSE, FALSE,2); - gtk_box_pack_start (GTK_BOX(box), priv->delete_button, FALSE, FALSE,2); /* Should has been created by window_vbox_new */ if (priv->account_view) { @@ -420,7 +356,6 @@ setup_button_box (ModestAccountViewWindow *self, GtkButtonBox *box) sel = gtk_tree_view_get_selection (GTK_TREE_VIEW(priv->account_view)); if (gtk_tree_selection_count_selected_rows (sel) == 0) { gtk_widget_set_sensitive (priv->edit_button, FALSE); - gtk_widget_set_sensitive (priv->delete_button, FALSE); } } diff --git a/src/hildon2/modest-default-account-settings-dialog.c b/src/hildon2/modest-default-account-settings-dialog.c index 33b4b88..55e1770 100644 --- a/src/hildon2/modest-default-account-settings-dialog.c +++ b/src/hildon2/modest-default-account-settings-dialog.c @@ -114,6 +114,7 @@ struct _ModestDefaultAccountSettingsDialogPrivate GtkWidget *entry_user_email; /* GtkWidget *entry_incoming_port; */ GtkWidget *button_signature; + GtkWidget *button_delete; GtkWidget *page_complete_easysetup; @@ -482,6 +483,62 @@ on_button_signature (GtkButton *button, gpointer user_data) } } +static void +on_button_delete (GtkButton *button, gpointer user_data) +{ + ModestDefaultAccountSettingsDialog *self; + ModestDefaultAccountSettingsDialogPrivate *priv; + ModestAccountMgr *account_mgr; + gchar *account_title = NULL; + + self = MODEST_DEFAULT_ACCOUNT_SETTINGS_DIALOG (user_data); + priv = MODEST_DEFAULT_ACCOUNT_SETTINGS_DIALOG_GET_PRIVATE (self); + + account_mgr = modest_runtime_get_account_mgr(); + if(!priv->account_name) + return; + + account_title = get_entered_account_title (self); + + /* The warning text depends on the account type: */ + gchar *txt = NULL; + gint response; + ModestProtocol *protocol; + + protocol = modest_protocol_registry_get_protocol_by_type ( + modest_runtime_get_protocol_registry (), + modest_account_mgr_get_store_protocol (account_mgr, priv->account_name)); + txt = modest_protocol_get_translation (protocol, + MODEST_PROTOCOL_TRANSLATION_DELETE_MAILBOX, + account_title); + if (txt == NULL) { + txt = g_strdup_printf (_("emev_nc_delete_mailbox"), + account_title); + } + + response = modest_platform_run_confirmation_dialog (GTK_WINDOW (self), txt); + g_free (txt); + txt = NULL; + + if (response == GTK_RESPONSE_OK) { + /* Remove account. If it succeeds then it also removes + the account from the ModestAccountView: */ + gboolean is_default = FALSE; + gchar *default_account_name = modest_account_mgr_get_default_account (account_mgr); + if (default_account_name && (strcmp (default_account_name, priv->account_name) == 0)) + is_default = TRUE; + g_free (default_account_name); + + gboolean removed = modest_account_mgr_remove_account (account_mgr, priv->account_name); + if (!removed) { + g_warning ("%s: modest_account_mgr_remove_account() failed.\n", __FUNCTION__); + } + gtk_widget_destroy (GTK_WIDGET (self)); + } + g_free (account_title); + +} + static GtkWidget* create_page_user_details (ModestDefaultAccountSettingsDialog *self) { @@ -591,12 +648,21 @@ create_page_user_details (ModestDefaultAccountSettingsDialog *self) FALSE, FALSE, 0); gtk_widget_show (priv->button_signature); + /* Delete button: */ + if (!priv->button_delete) + priv->button_delete = gtk_button_new_with_label (_("mcen_bd_delete")); + gtk_box_pack_start (GTK_BOX (GTK_DIALOG (self)->action_area), priv->button_delete, + FALSE, FALSE, 0); + g_object_unref (title_sizegroup); g_object_unref (value_sizegroup); g_signal_connect (G_OBJECT (priv->button_signature), "clicked", G_CALLBACK (on_button_signature), self); + g_signal_connect (G_OBJECT (priv->button_delete), "clicked", + G_CALLBACK (on_button_delete), self); + gtk_widget_show (GTK_WIDGET (box)); return GTK_WIDGET (box); @@ -1111,6 +1177,11 @@ modest_default_account_settings_dialog_load_settings (ModestAccountSettingsDialo g_free (priv->account_name); priv->account_name = g_strdup (account_name); + if (priv->account_name) + gtk_widget_show (priv->button_delete); + else + gtk_widget_hide (priv->button_delete); + if (priv->settings) g_object_unref (priv->settings); priv->settings = g_object_ref (settings); -- 1.7.9.5