X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fmodest-tny-account-store.c;h=47e6b818b67bd0e661ce6e56b1f1be794a4c62bd;hp=d674e752dc187ed46f6bd3b2c5655573d03b82f5;hb=f65289e467bc8ce1c1c4d8c13fafff637ae13034;hpb=6a7726066a9cead3c0d5a79841b5e0ae355ce74d diff --git a/src/modest-tny-account-store.c b/src/modest-tny-account-store.c index d674e75..47e6b81 100644 --- a/src/modest-tny-account-store.c +++ b/src/modest-tny-account-store.c @@ -40,7 +40,7 @@ #include #include #include - +#include "modest-text-utils.h" #include #include #include @@ -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 { @@ -335,8 +335,8 @@ add_mmc_account(ModestTnyAccountStore *self, gboolean emit_insert_signal) g_return_if_fail (priv->session); TnyAccount *mmc_account = modest_tny_account_new_for_local_folders (priv->account_mgr, - priv->session, - MODEST_MCC1_VOLUMEPATH); + priv->session, + g_getenv (MODEST_MMC1_VOLUMEPATH_ENV)); /* Add to the list of store accounts */ tny_list_append (priv->store_accounts, G_OBJECT (mmc_account)); @@ -358,6 +358,7 @@ on_vfs_volume_mounted(GnomeVFSVolumeMonitor *volume_monitor, { ModestTnyAccountStore *self; ModestTnyAccountStorePrivate *priv; + gchar *volume_path_uri; gchar *uri = NULL; @@ -367,10 +368,14 @@ on_vfs_volume_mounted(GnomeVFSVolumeMonitor *volume_monitor, /* Check whether this was the external MMC1 card: */ uri = gnome_vfs_volume_get_activation_uri (volume); - if (uri && (!strcmp (uri, MODEST_MCC1_VOLUMEPATH_URI))) { + volume_path_uri = g_strconcat (MODEST_MMC1_VOLUMEPATH_URI_PREFIX, + g_getenv (MODEST_MMC1_VOLUMEPATH_ENV), + NULL); + if (uri && (!strcmp (uri, volume_path_uri))) { add_mmc_account (self, TRUE /* emit the insert signal. */); } - + + g_free (volume_path_uri); g_free (uri); } @@ -382,13 +387,17 @@ on_vfs_volume_unmounted(GnomeVFSVolumeMonitor *volume_monitor, ModestTnyAccountStore *self; ModestTnyAccountStorePrivate *priv; gchar *uri = NULL; + gchar *volume_path_uri; self = MODEST_TNY_ACCOUNT_STORE(user_data); priv = MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE(self); /* Check whether this was the external MMC1 card: */ uri = gnome_vfs_volume_get_activation_uri (volume); - if (uri && (strcmp (uri, MODEST_MCC1_VOLUMEPATH_URI) == 0)) { + volume_path_uri = g_strconcat (MODEST_MMC1_VOLUMEPATH_URI_PREFIX, + g_getenv (MODEST_MMC1_VOLUMEPATH_ENV), + NULL); + if (uri && (strcmp (uri, volume_path_uri) == 0)) { TnyAccount *mmc_account = NULL; gboolean found = FALSE; TnyIterator *iter = NULL; @@ -422,6 +431,7 @@ on_vfs_volume_unmounted(GnomeVFSVolumeMonitor *volume_monitor, __FUNCTION__); } } + g_free (volume_path_uri); g_free (uri); } @@ -483,11 +493,8 @@ on_account_changed (ModestAccountMgr *acc_mgr, static void show_password_warning_only (const gchar *msg) { - ModestWindow *main_window = - modest_window_mgr_get_main_window (modest_runtime_get_window_mgr (), FALSE); /* don't create */ - /* Show an explanatory temporary banner: */ - if (main_window) + if (modest_window_mgr_get_num_windows (modest_runtime_get_window_mgr ())) modest_platform_information_banner (NULL, NULL, msg); } @@ -574,10 +581,10 @@ get_password (TnyAccount *account, const gchar * prompt_not_used, gboolean *canc __FUNCTION__, server_account_name ? server_account_name : ""); if (cancel) *cancel = TRUE; - + return NULL; } - + /* This hash map stores passwords, including passwords that are not stored in gconf. */ /* Is it in the hash? if it's already there, it must be wrong... */ pwd_ptr = (gpointer)&pwd; /* pwd_ptr so the compiler does not complained about @@ -590,7 +597,7 @@ get_password (TnyAccount *account, const gchar * prompt_not_used, gboolean *canc MODEST_DEBUG_BLOCK( g_debug ("%s: Already asked = %d\n", __FUNCTION__, already_asked); ); - + /* If the password is not already there, try ModestConf */ if (!already_asked) { pwd = modest_account_mgr_get_server_account_password (priv->account_mgr, @@ -647,18 +654,18 @@ get_password (TnyAccount *account, const gchar * prompt_not_used, gboolean *canc if (settings_have_password) { /* The password must be wrong, so show the account settings dialog so it can be corrected: */ show_wrong_password_dialog (account); - + if (cancel) *cancel = TRUE; - + return NULL; } - + /* we don't have it yet. Get the password from the user */ const gchar* account_id = tny_account_get_id (account); gboolean remember = FALSE; pwd = NULL; - + if (already_asked) { const gchar *msg; gboolean username_known = @@ -666,7 +673,7 @@ get_password (TnyAccount *account, const gchar * prompt_not_used, gboolean *canc server_account_name); /* If the login has ever succeeded then show a specific message */ if (username_known) - msg = dgettext ("hildon-common-strings", "ecdg_ib_set_password_incorrect"); + msg = _CS ("ecdg_ib_set_password_incorrect"); else msg = _("mcen_ib_username_pw_incorrect"); show_password_warning_only (msg); @@ -851,7 +858,7 @@ volume_path_is_mounted (const gchar* path) * GnomeVFSVolume even if the drive is not mounted: */ /* GnomeVFSVolume *volume = gnome_vfs_volume_monitor_get_volume_for_path (monitor, - MODEST_MCC1_VOLUMEPATH); + g_getenv (MODEST_MMC1_VOLUMEPATH_ENV)); if (volume) { gnome_vfs_volume_unref(volume); } @@ -951,7 +958,7 @@ modest_tny_account_store_new (ModestAccountMgr *account_mgr, add_connection_specific_transport_accounts (MODEST_TNY_ACCOUNT_STORE(obj)); /* This is a singleton, so it does not need to be unrefed. */ - if (volume_path_is_mounted (MODEST_MCC1_VOLUMEPATH)) { + if (volume_path_is_mounted (g_getenv (MODEST_MMC1_VOLUMEPATH_ENV))) { /* It is mounted: */ add_mmc_account (MODEST_TNY_ACCOUNT_STORE (obj), FALSE /* don't emit the insert signal. */); } @@ -1113,12 +1120,13 @@ modest_tny_account_store_alert (TnyAccountStore *self, if (error->code == TNY_SERVICE_ERROR_CERTIFICATE) retval = modest_platform_run_certificate_confirmation_dialog (server_name, error->message); - else if (error->code == TNY_SERVICE_ERROR_AUTHENTICATE) { + else if (error->code == TNY_SERVICE_ERROR_AUTHENTICATE || + error->code == TNY_SERVICE_ERROR_CONNECT) { + modest_platform_run_information_dialog (NULL, prompt, TRUE); /* Show the account dialog if it was wrong */ - if (error->code == TNY_SERVICE_ERROR_CONNECT || - error->code == TNY_SERVICE_ERROR_AUTHENTICATE) + if (error->code == TNY_SERVICE_ERROR_AUTHENTICATE) show_wrong_password_dialog (account); retval = TRUE; @@ -1502,9 +1510,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 */ @@ -1514,8 +1522,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); } } @@ -1706,27 +1714,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 @@ -2247,3 +2238,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; +}