static void remove_connection_specific_transport_accounts (ModestTnyAccountStore *self);
-static void connection_status_changed (TnyAccount *account,
- TnyConnectionStatus status,
- gpointer data);
-
static inline gboolean only_local_accounts (ModestTnyAccountStore *self);
/* list my signals */
account_list = (account_type == TNY_ACCOUNT_TYPE_STORE ?
priv->store_accounts :
priv->transport_accounts);
-
+
iter = tny_list_create_iterator (account_list);
while (!tny_iterator_is_done (iter) && !found) {
TnyAccount *tny_account;
}
tny_iterator_next (iter);
}
-
- if (iter)
- g_object_unref (iter);
+ g_object_unref (iter);
}
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);
}
__FUNCTION__, server_account_name ? server_account_name : "<NULL>");
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
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,
gchar *password;
password = modest_account_mgr_get_server_account_password (priv->account_mgr,
server_account_name);
- if (!password || strlen(password) == 0)
+
+ if (already_asked)
+ msg = g_strdup (_("mcen_ib_username_pw_incorrect"));
+ else if (!password || strlen(password) == 0)
msg = g_strdup_printf (_("emev_ni_ui_smtp_passwd_invalid"),
tny_account_get_name (account),
tny_account_get_hostname (account));
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 =
if (!server_account_name) {
return NULL; /* No connection-specific SMTP server was specified for this connection. */
}
-
+
TnyAccount* account = modest_tny_account_store_get_tny_account_by (self,
MODEST_TNY_ACCOUNT_STORE_QUERY_ID,
server_account_name);
/* printf ("DEBUG: %s: account=%p\n", __FUNCTION__, account); */
- g_free (server_account_name);
+ g_free (server_account_name);
/* Unref the get()ed object, as required by the tny_maemo_conic_device_get_iap() documentation. */
g_object_unref (connection);
-
+
return account;
#else
return NULL; /* TODO: Implement this for GNOME, instead of just Maemo? */
modest_account_mgr_free_account_names (account_names);
}
-static void
-connection_status_changed (TnyAccount *account,
- TnyConnectionStatus status,
- gpointer data)
-{
- /* We do this here and not in the connection policy because we
- don't want to do it for every account, just for the
- accounts that are interactively added when modest is
- runnning */
- if (status == TNY_CONNECTION_STATUS_CONNECTED) {
- const gchar *account_name;
- ModestWindow *top_window;
- ModestTnyAccountStorePrivate *priv = NULL;
-
- priv = MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE (data);
-
- /* Remove this handler */
- priv->sighandlers = modest_signal_mgr_disconnect (priv->sighandlers,
- G_OBJECT (account),
- "connection_status_changed");
-
- /* Perform a send receive */
- account_name = modest_tny_account_get_parent_modest_account_name_for_server_account (account);
- 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);
- }
-}
-
static TnyAccount*
create_tny_account (ModestTnyAccountStore *self,
const gchar *name,
{
TnyAccount *account = NULL;
ModestTnyAccountStorePrivate *priv = NULL;
-
+
priv = MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE(self);
account = modest_tny_account_new_from_account (priv->account_mgr,
we use a new account if any */
forget_password_in_memory (self, tny_account_get_id (account));
- /* Install a signal handler that will refresh the
- account the first time it becomes online. Do this
- only if we're adding a new account while the
- program is running (we do not want to do this
- allways) */
- if (type == TNY_ACCOUNT_TYPE_STORE && notify)
- priv->sighandlers = modest_signal_mgr_connect (priv->sighandlers,
- G_OBJECT (account),
- "connection_status_changed",
- G_CALLBACK (connection_status_changed),
- self);
-
/* Set the account store */
g_object_set_data (G_OBJECT(account), "account_store", self);
} else {
self = MODEST_TNY_ACCOUNT_STORE (user_data);
priv = MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE (self);
- /* Remove the connection-status-changed handler if it's still there */
- if (modest_signal_mgr_is_connected (priv->sighandlers,
- G_OBJECT (account),
- "connection_status_changed")) {
- priv->sighandlers = modest_signal_mgr_disconnect (priv->sighandlers,
- G_OBJECT (account),
- "connection_status_changed");
- }
-
/* Cancel all pending operations */
tny_account_cancel (TNY_ACCOUNT (account));
}
-void
+void
modest_tny_account_store_shutdown (ModestTnyAccountStore *self,
ModestTnyAccountStoreShutdownCallback callback,
gpointer userdata)
ModestTnyAccountStorePrivate *priv = MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE (self);
/* Get references */
- num_accounts = tny_list_get_length (priv->store_accounts) +
- tny_list_get_length (priv->transport_accounts);
+ num_accounts = 0;
+ if (priv->store_accounts)
+ num_accounts += tny_list_get_length (priv->store_accounts);
+ if (priv->transport_accounts)
+ num_accounts += tny_list_get_length (priv->transport_accounts);
+
for (i = 0 ; i < num_accounts ; i++)
g_object_ref (self);
if (priv->store_accounts) {
tny_list_foreach (priv->store_accounts, (GFunc)account_shutdown, op_data);
}
-
+
if (priv->transport_accounts) {
tny_list_foreach (priv->transport_accounts, (GFunc)account_shutdown, op_data);
}