#include "modest-tny-platform-factory.h"
#include "maemo/easysetup/modest-easysetup-wizard.h"
#include "maemo/modest-account-settings-dialog.h"
-#include <maemo/modest-maemo-utils.h>
+#include <modest-utils.h>
#include "widgets/modest-ui-constants.h"
/* 'private'/'protected' functions */
transport_account =
modest_tny_account_store_get_server_account (acc_store,
account_name,
- TNY_ACCOUNT_TYPE_STORE);
+ TNY_ACCOUNT_TYPE_TRANSPORT);
store_conn_status = tny_account_get_connection_status (store_account);
transport_conn_status = tny_account_get_connection_status (transport_account);
if (store_conn_status == TNY_CONNECTION_STATUS_CONNECTED ||
transport_conn_status == TNY_CONNECTION_STATUS_CONNECTED) {
- GtkWidget *note = NULL;
gint response;
- note = hildon_note_new_confirmation (GTK_WINDOW (self),
- _("emev_nc_disconnect_account"));
- response = gtk_dialog_run (GTK_DIALOG(note));
-
- gtk_widget_destroy (note);
+ response = modest_platform_run_confirmation_dialog (GTK_WINDOW (self),
+ _("emev_nc_disconnect_account"));
if (response == GTK_RESPONSE_OK) {
/* FIXME: We should only cancel those of this account */
modest_mail_operation_queue_cancel_all (queue);
+
+ /* Also disconnect the account */
+ if (tny_account_get_connection_status (store_account) == TNY_CONNECTION_STATUS_CONNECTED) {
+ tny_account_cancel (store_account);
+ tny_camel_account_set_online (TNY_CAMEL_ACCOUNT (store_account),
+ FALSE, NULL, NULL);
+ }
+ if (tny_account_get_connection_status (transport_account) == TNY_CONNECTION_STATUS_CONNECTED) {
+ tny_account_cancel (transport_account);
+ tny_camel_account_set_online (TNY_CAMEL_ACCOUNT (transport_account),
+ FALSE, NULL, NULL);
+ }
retval = TRUE;
} else {
retval = FALSE;
account_title);
}
- GtkDialog *dialog = GTK_DIALOG (hildon_note_new_confirmation (GTK_WINDOW (self),
- txt));
- gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
- gtk_window_set_transient_for (GTK_WINDOW (dialog), GTK_WINDOW (self));
+ response = modest_platform_run_confirmation_dialog (GTK_WINDOW (self), txt);
g_free (txt);
txt = NULL;
-
- response = gtk_dialog_run (dialog);
- gtk_widget_destroy (GTK_WIDGET (dialog));
- while (gtk_events_pending ())
- gtk_main_iteration ();
if (response == GTK_RESPONSE_OK) {
/* Remove account. If it succeeds then it also removes
}
static void
+on_account_settings_dialog_response (GtkDialog *dialog,
+ gint response,
+ gpointer user_data)
+{
+ TnyAccount *store_account = NULL;
+ gchar* account_name = NULL;
+ ModestAccountViewWindowPrivate *priv = NULL;
+
+ priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE (user_data);
+ account_name = modest_account_view_get_selected_account (priv->account_view);
+ store_account = modest_tny_account_store_get_server_account (modest_runtime_get_account_store (),
+ account_name,
+ TNY_ACCOUNT_TYPE_STORE);
+
+ /* Reconnect the store account, no need to reconnect the
+ transport account because it will connect when needed */
+ if (tny_account_get_connection_status (store_account) ==
+ TNY_CONNECTION_STATUS_DISCONNECTED)
+ tny_camel_account_set_online (TNY_CAMEL_ACCOUNT (store_account),
+ TRUE, NULL, NULL);
+
+ /* Disconnect this handler */
+ g_signal_handlers_disconnect_by_func (dialog, on_account_settings_dialog_response, user_data);
+
+ /* Free */
+ g_free (account_name);
+}
+
+static void
on_edit_button_clicked (GtkWidget *button, ModestAccountViewWindow *self)
{
- ModestAccountViewWindowPrivate *priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE(self);
+ ModestAccountViewWindowPrivate *priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE (self);
gchar* account_name = modest_account_view_get_selected_account (priv->account_view);
if (!account_name)
/* Show the Account Settings window: */
ModestAccountSettingsDialog *dialog = modest_account_settings_dialog_new ();
+ ModestAccountSettings *settings;
- modest_account_settings_dialog_set_account_name (dialog, account_name);
- gtk_window_set_modal (GTK_WINDOW (dialog), TRUE);
- modest_maemo_show_dialog_and_forget (GTK_WINDOW (self), GTK_DIALOG (dialog));
+ settings = modest_account_mgr_load_account_settings (modest_runtime_get_account_mgr (), account_name);
+
+ modest_account_settings_dialog_set_account (dialog, settings);
+ g_object_unref (settings);
+ modest_window_mgr_set_modal (modest_runtime_get_window_mgr (), GTK_WINDOW (dialog));
+
+ /* When the dialog is closed, reconnect */
+ g_signal_connect (dialog, "response",
+ G_CALLBACK (on_account_settings_dialog_response),
+ self);
+
+ modest_utils_show_dialog_and_forget (GTK_WINDOW (self), GTK_DIALOG (dialog));
}
g_free (account_name);
{
GObject *obj = g_object_new(MODEST_TYPE_ACCOUNT_VIEW_WINDOW, NULL);
- /* Attach dialog help */
- modest_platform_set_dialog_help (GTK_DIALOG (obj), "applications_email_accountsettings");
-
return GTK_WIDGET(obj);
}