static gboolean
check_for_active_account (ModestAccountViewWindow *self, const gchar* account_name)
{
+ ModestTnySendQueue *send_queue;
ModestTnyAccountStore *acc_store;
ModestMailOperationQueue* queue;
- TnyConnectionStatus store_conn_status, transport_conn_status;
+ TnyConnectionStatus store_conn_status;
TnyAccount *store_account = NULL, *transport_account = NULL;
- gboolean retval = TRUE;
- gboolean do_disconnect = TRUE;
+ gboolean retval = TRUE, sending = FALSE;
acc_store = modest_runtime_get_account_store ();
queue = modest_runtime_get_mail_operation_queue ();
return FALSE;
}
- store_conn_status = tny_account_get_connection_status (store_account);
- transport_conn_status = tny_account_get_connection_status (transport_account);
+ /* 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 (TNY_IS_SEND_QUEUE (send_queue))
+ sending = modest_tny_send_queue_sending_in_progress (send_queue);
- if (store_conn_status == TNY_CONNECTION_STATUS_CONNECTED ||
- transport_conn_status == TNY_CONNECTION_STATUS_CONNECTED) {
+ store_conn_status = tny_account_get_connection_status (store_account);
+ if (store_conn_status == TNY_CONNECTION_STATUS_CONNECTED || sending) {
gint response;
response = modest_platform_run_confirmation_dialog (GTK_WINDOW (self),
_("emev_nc_disconnect_account"));
- do_disconnect = (response == FALSE);
if (response == GTK_RESPONSE_OK) {
retval = TRUE;
} else {
retval = FALSE;
}
- }
+ }
- if (do_disconnect) {
+ if (retval) {
/* 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_DISCONNECTED) &&
(tny_account_get_connection_status (store_account) != TNY_CONNECTION_STATUS_DISCONNECTED_BROKEN)) {
- 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_DISCONNECTED) &&
- (tny_account_get_connection_status (transport_account) != TNY_CONNECTION_STATUS_DISCONNECTED_BROKEN)) {
- tny_account_cancel (transport_account);
+ if (sending) {
tny_camel_account_set_online (TNY_CAMEL_ACCOUNT (transport_account),
FALSE, NULL, NULL);
}
}
static void
-on_wizard_response (GtkDialog *dialog, gint response, gpointer user_data)
+on_wizard_response (GtkDialog *dialog,
+ gint response,
+ gpointer user_data)
{
/* The response has already been handled by the wizard dialog itself,
* creating the new account.
*/
- /* Destroy the dialog: */
if (dialog)
gtk_widget_destroy (GTK_WIDGET (dialog));
+
+ /* Re-focus the account list view widget */
+ if (MODEST_IS_ACCOUNT_VIEW_WINDOW (user_data)) {
+ ModestAccountViewWindowPrivate *priv;
+ priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE (user_data);
+ gtk_widget_grab_focus (GTK_WIDGET (priv->account_view));
+ }
}
static void
{
GtkDialog *wizard;
GtkWindow *dialog;
-
+
/* Show the easy-setup wizard: */
dialog = modest_window_mgr_get_modal (modest_runtime_get_window_mgr());
if (dialog && MODEST_IS_EASYSETUP_WIZARD_DIALOG(dialog)) {
gtk_dialog_response (GTK_DIALOG (self), GTK_RESPONSE_OK);
}
-
-
static GtkWidget*
button_box_new (ModestAccountViewWindow *self)
{
g_signal_connect (G_OBJECT(priv->close_button), "clicked",
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_widget_set_sensitive (priv->edit_button, FALSE);
- gtk_widget_set_sensitive (priv->delete_button, FALSE);
+ /* Should has been created by window_vbox_new */
+ if (priv->account_view) {
+ GtkTreeSelection *sel;
+ 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);
+ }
+ }
gtk_widget_show_all (button_box);
return button_box;
const gchar *account,
gpointer user_data)
{
+ ModestAccountViewWindowPrivate *priv;
+
/* If there is no account left then close the window */
if (!modest_account_mgr_has_accounts (acc_mgr, TRUE)) {
gboolean ret_value;
g_signal_emit_by_name (G_OBJECT (user_data), "delete-event", NULL, &ret_value);
+ } else {
+ /* Re-focus the account list view widget */
+ priv = MODEST_ACCOUNT_VIEW_WINDOW_GET_PRIVATE (user_data);
+ gtk_widget_grab_focus (GTK_WIDGET (priv->account_view));
}
}