X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmaemo%2Fmodest-account-view-window.c;h=8e4a312a8cb49accd0b8257d1903f217f08712a9;hb=61bbe9ed9335ddcc1957bf8c3158975139c794a7;hp=48b2554b839ab1f3c11208a2cd13903b750049ce;hpb=97e73afb9a2ed65af4802ff47739694224b95cec;p=modest diff --git a/src/maemo/modest-account-view-window.c b/src/maemo/modest-account-view-window.c index 48b2554..8e4a312 100644 --- a/src/maemo/modest-account-view-window.c +++ b/src/maemo/modest-account-view-window.c @@ -35,6 +35,8 @@ #include #include "modest-platform.h" +#include "modest-ui-actions.h" +#include "modest-account-protocol.h" #include #include #include "modest-tny-platform-factory.h" @@ -188,7 +190,7 @@ check_for_active_account (ModestAccountViewWindow *self, const gchar* account_na /* If the transport account was not used yet, then the send queue could not exist (it's created on demand) */ send_queue = modest_runtime_get_send_queue (TNY_TRANSPORT_ACCOUNT (transport_account), FALSE); - if (send_queue) + if (TNY_IS_SEND_QUEUE (send_queue)) sending = modest_tny_send_queue_sending_in_progress (send_queue); store_conn_status = tny_account_get_connection_status (store_account); @@ -239,49 +241,12 @@ on_delete_button_clicked (GtkWidget *button, ModestAccountViewWindow *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; - - if (modest_account_mgr_get_store_protocol (account_mgr, account_name) - == MODEST_PROTOCOL_STORE_POP) { - txt = g_strdup_printf (_("emev_nc_delete_mailbox"), - account_title); - } else { - txt = g_strdup_printf (_("emev_nc_delete_mailboximap"), - 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); - } + if (check_for_active_account (self, account_name)) + modest_ui_actions_on_delete_account (GTK_WINDOW (self), account_name, account_title); + + g_free (account_title); g_free (account_name); } @@ -312,6 +277,7 @@ on_account_settings_dialog_response (GtkDialog *dialog, /* Free */ g_free (account_name); + g_object_unref (store_account); } static void @@ -327,14 +293,24 @@ on_edit_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) * the user wishes. */ if (check_for_active_account (self, account_name)) { - GtkWidget *dialog = modest_tny_account_store_show_account_settings_dialog (modest_runtime_get_account_store (), account_name); - - /* When the dialog is closed, reconnect */ - g_signal_connect (dialog, "response", - G_CALLBACK (on_account_settings_dialog_response), - self); + ModestAccountProtocol *proto; + ModestProtocolType proto_type; + + /* Get proto */ + proto_type = modest_account_mgr_get_store_protocol (modest_runtime_get_account_mgr (), + account_name); + proto = (ModestAccountProtocol *) + modest_protocol_registry_get_protocol_by_type (modest_runtime_get_protocol_registry (), + proto_type); + + /* Create and show the dialog */ + if (proto && MODEST_IS_ACCOUNT_PROTOCOL (proto)) { + ModestAccountSettingsDialog *dialog = + modest_account_protocol_get_account_settings_dialog (proto, account_name); + modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), GTK_WINDOW (dialog), (GtkWindow *) self); + gtk_widget_show (GTK_WIDGET (dialog)); + } } - g_free (account_name); } @@ -375,7 +351,8 @@ on_new_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) /* there is no such wizard yet */ wizard = GTK_DIALOG (modest_easysetup_wizard_dialog_new ()); modest_window_mgr_set_modal (modest_runtime_get_window_mgr(), - GTK_WINDOW (wizard)); + GTK_WINDOW (wizard), + GTK_WINDOW (self)); /* if there is already another modal dialog, make it non-modal */ if (dialog) @@ -389,7 +366,6 @@ on_new_button_clicked (GtkWidget *button, ModestAccountViewWindow *self) gtk_widget_show (GTK_WIDGET (wizard)); } - static void on_close_button_clicked (GtkWidget *button, gpointer user_data) { @@ -398,14 +374,13 @@ on_close_button_clicked (GtkWidget *button, gpointer user_data) gtk_dialog_response (GTK_DIALOG (self), GTK_RESPONSE_OK); } -static GtkWidget* -button_box_new (ModestAccountViewWindow *self) +static void +setup_button_box (ModestAccountViewWindow *self, GtkButtonBox *box) { ModestAccountViewWindowPrivate *priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self); - GtkWidget *button_box = gtk_hbutton_box_new (); - gtk_button_box_set_spacing (GTK_BUTTON_BOX (button_box), 6); - gtk_button_box_set_layout (GTK_BUTTON_BOX (button_box), + gtk_button_box_set_spacing (GTK_BUTTON_BOX (box), 6); + gtk_button_box_set_layout (GTK_BUTTON_BOX (box), GTK_BUTTONBOX_START); priv->new_button = gtk_button_new_from_stock(_("mcen_bd_new")); @@ -426,10 +401,10 @@ button_box_new (ModestAccountViewWindow *self) G_CALLBACK(on_close_button_clicked), self); - gtk_box_pack_start (GTK_BOX(button_box), priv->new_button, FALSE, FALSE,2); - gtk_box_pack_start (GTK_BOX(button_box), priv->edit_button, FALSE, FALSE,2); - gtk_box_pack_start (GTK_BOX(button_box), priv->delete_button, FALSE, FALSE,2); - gtk_box_pack_start (GTK_BOX(button_box), priv->close_button, FALSE, FALSE,2); + 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); + gtk_box_pack_start (GTK_BOX(box), priv->close_button, FALSE, FALSE,2); /* Should has been created by window_vbox_new */ if (priv->account_view) { @@ -441,8 +416,7 @@ button_box_new (ModestAccountViewWindow *self) } } - gtk_widget_show_all (button_box); - return button_box; + gtk_widget_show_all (GTK_WIDGET (box)); } static GtkWidget* @@ -519,9 +493,7 @@ modest_account_view_window_new (void) window_vbox_new (MODEST_ACCOUNT_VIEW_WINDOW (self)), TRUE, TRUE, 2); - gtk_box_pack_start (GTK_BOX((GTK_DIALOG (self)->action_area)), - button_box_new (MODEST_ACCOUNT_VIEW_WINDOW (self)), - TRUE, TRUE, 2); + setup_button_box (MODEST_ACCOUNT_VIEW_WINDOW (self), GTK_BUTTON_BOX (GTK_DIALOG (self)->action_area)); gtk_window_set_title (GTK_WINDOW (self), _("mcen_ti_emailsetup_accounts"));