+
+static void
+add_outbox_from_transport_account_to_global_outbox (ModestTnyAccountStore *self,
+ const gchar *account_name,
+ TnyAccount *transport_account)
+{
+ TnyList *folders = NULL;
+ TnyIterator *iter_folders = NULL;
+ TnyAccount *local_account = NULL, *account_outbox = NULL;
+ TnyFolder *per_account_outbox = NULL;
+ ModestTnyAccountStorePrivate *priv = NULL;
+
+ priv = MODEST_TNY_ACCOUNT_STORE_GET_PRIVATE(self);
+
+ /* Create per account local outbox */
+ account_outbox =
+ modest_tny_account_new_for_per_account_local_outbox_folder (priv->account_mgr,
+ account_name,
+ priv->session);
+ tny_list_append (priv->store_accounts_outboxes, G_OBJECT (account_outbox));
+
+ /* Get the outbox folder */
+ folders = tny_simple_list_new ();
+ tny_folder_store_get_folders (TNY_FOLDER_STORE (account_outbox), folders, NULL, NULL);
+ g_assert (tny_list_get_length (folders) == 1);
+
+ iter_folders = tny_list_create_iterator (folders);
+ per_account_outbox = TNY_FOLDER (tny_iterator_get_current (iter_folders));
+ g_object_unref (iter_folders);
+ g_object_unref (folders);
+ g_object_unref (account_outbox);
+
+ /* Add the outbox of the new per-account-local-outbox account
+ to the global local merged OUTBOX of the local folders
+ account */
+ local_account = modest_tny_account_store_get_local_folders_account (self);
+ modest_tny_local_folders_account_add_folder_to_outbox (MODEST_TNY_LOCAL_FOLDERS_ACCOUNT (local_account),
+ per_account_outbox);
+ /* Add the pair to the hash table */
+ g_hash_table_insert (priv->outbox_of_transport,
+ transport_account,
+ per_account_outbox);
+
+ g_object_unref (local_account);
+ g_object_unref (per_account_outbox);
+}
+