X-Git-Url: http://git.maemo.org/git/?a=blobdiff_plain;f=src%2Fmodest-tny-account-store.c;h=29420e6df2df861d6061724160950152337b6ae5;hb=2e6660c0486049ecdd74b4253b1e0ae309cb702c;hp=e7c98863f82c15370fd28d40c1e30846cf9de1bd;hpb=a279e17c3a6251f4e4e87c61c51e7ee20b875507;p=modest diff --git a/src/modest-tny-account-store.c b/src/modest-tny-account-store.c index e7c9886..29420e6 100644 --- a/src/modest-tny-account-store.c +++ b/src/modest-tny-account-store.c @@ -116,7 +116,7 @@ static void connection_status_changed (TnyAccount *account, TnyConnectionStatus status, gpointer data); -static gboolean only_local_accounts (ModestTnyAccountStore *self); +static inline gboolean only_local_accounts (ModestTnyAccountStore *self); /* list my signals */ enum { @@ -1512,9 +1512,9 @@ connection_status_changed (TnyAccount *account, runnning */ if (status == TNY_CONNECTION_STATUS_CONNECTED) { const gchar *account_name; - ModestWindow *main_window; + ModestWindow *top_window; ModestTnyAccountStorePrivate *priv = NULL; - + priv = MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE (data); /* Remove this handler */ @@ -1524,8 +1524,8 @@ connection_status_changed (TnyAccount *account, /* Perform a send receive */ account_name = modest_tny_account_get_parent_modest_account_name_for_server_account (account); - main_window = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr (), FALSE); - modest_ui_actions_do_send_receive (account_name, FALSE, FALSE, TRUE, main_window); + top_window = modest_window_mgr_get_current_top (modest_runtime_get_window_mgr ()); + modest_ui_actions_do_send_receive (account_name, FALSE, FALSE, TRUE, top_window); } } @@ -1716,27 +1716,10 @@ insert_account (ModestTnyAccountStore *self, g_object_unref (transport_account); } -static gboolean +static inline gboolean only_local_accounts (ModestTnyAccountStore *self) { - ModestTnyAccountStorePrivate *priv = NULL; - gboolean only_local = TRUE; - TnyIterator *iter; - - /* Check if this is the first remote account we add */ - priv = MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE (self); - iter = tny_list_create_iterator (priv->store_accounts); - - while (!tny_iterator_is_done (iter) && only_local) { - TnyAccount *account = (TnyAccount *) tny_iterator_get_current (iter); - if (modest_tny_folder_store_is_remote (TNY_FOLDER_STORE (account))) - only_local = FALSE; - g_object_unref (account); - tny_iterator_next (iter); - } - g_object_unref (iter); - - return only_local; + return (modest_tny_account_store_get_num_remote_accounts (self) > 0) ? FALSE : TRUE; } static void @@ -2257,3 +2240,25 @@ modest_tny_account_store_set_send_mail_blocked (ModestTnyAccountStore *self, priv->send_mail_blocked = blocked; } + +static void +count_remote_accounts (gpointer data, gpointer user_data) +{ + TnyFolderStore *account = TNY_FOLDER_STORE (data); + gint *count = (gint *) user_data; + + if (modest_tny_folder_store_is_remote (account)) + (*count)++; +} + +guint +modest_tny_account_store_get_num_remote_accounts (ModestTnyAccountStore *self) +{ + ModestTnyAccountStorePrivate *priv = MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE (self); + gint count = 0; + + /* Count remote accounts */ + tny_list_foreach (priv->store_accounts, (GFunc) count_remote_accounts, &count); + + return count; +}