if (special_type == TNY_FOLDER_TYPE_OUTBOX) {
const gchar *modest_account_name =
modest_tny_account_get_parent_modest_account_name_for_server_account (account);
- g_assert (modest_account_name);
-
- gchar *account_id = g_strdup_printf (
- MODEST_PER_ACCOUNT_LOCAL_OUTBOX_FOLDER_ACCOUNT_ID_PREFIX "%s",
- modest_account_name);
- local_account = modest_tny_account_store_get_tny_account_by (modest_runtime_get_account_store(),
- MODEST_TNY_ACCOUNT_STORE_QUERY_ID,
- account_id);
- if (!local_account) {
- g_printerr ("modest: %s: modest_tny_account_store_get_tny_account_by(ID) returned NULL for %s\n", __FUNCTION__, account_id);
- return NULL;
+ if (modest_account_name) {
+ gchar *account_id = g_strdup_printf (
+ MODEST_PER_ACCOUNT_LOCAL_OUTBOX_FOLDER_ACCOUNT_ID_PREFIX "%s",
+ modest_account_name);
+
+ local_account = modest_tny_account_store_get_tny_account_by (modest_runtime_get_account_store(),
+ MODEST_TNY_ACCOUNT_STORE_QUERY_ID,
+ account_id);
+ if (!local_account) {
+ g_printerr ("modest: %s: modest_tny_account_store_get_tny_account_by(ID) returned NULL for %s\n", __FUNCTION__, account_id);
+ return NULL;
+ }
+
+ g_free (account_id);
+ } else {
+ g_warning ("%s: modest_account_name was NULL.", __FUNCTION__);
}
-
- g_free (account_id);
} else {
/* Other local folders are all in one on-disk directory: */
local_account = modest_tny_account_store_get_tny_account_by (modest_runtime_get_account_store(),
while (!tny_iterator_is_done (iter)) {
TnyFolder *folder =
TNY_FOLDER (tny_iterator_get_current (iter));
- if (modest_tny_folder_get_local_folder_type (folder) == special_type) {
- special_folder = folder;
- break;
- }
+ if (folder) {
+ if (modest_tny_folder_get_local_or_mmc_folder_type (folder) == special_type) {
+ special_folder = folder;
+ break; /* Leaving a ref for the special_folder return value. */
+ }
- g_object_unref (G_OBJECT(folder));
+ g_object_unref (G_OBJECT(folder));
+ }
+
tny_iterator_next (iter);
}
typedef gint (*TnyStatsFunc) (TnyFolderStats *stats);
+#define TASK_GET_ALL_COUNT 0
+#define TASK_GET_LOCAL_SIZE 1
+#define TASK_GET_FOLDER_COUNT 2
typedef struct _RecurseFoldersHelper {
- TnyStatsFunc function;
+ gint task;
guint sum;
guint folders;
} RecurseFoldersHelper;
helper->folders += tny_list_get_length (folders);
while (!tny_iterator_is_done (iter)) {
- TnyFolderStats *stats;
TnyFolder *folder;
folder = TNY_FOLDER (tny_iterator_get_current (iter));
- stats = tny_folder_get_stats (folder);
+ if (folder) {
+ if (helper->task == TASK_GET_ALL_COUNT)
+ helper->sum += tny_folder_get_all_count (folder);
- if (stats) {
- /* initially, we sometimes get -1 from tinymail; ignore that */
- if (helper->function && helper->function (stats) > 0)
- helper->sum += helper->function (stats);
+ if (helper->task == TASK_GET_LOCAL_SIZE)
+ helper->sum += tny_folder_get_local_size (folder);
- if (TNY_IS_FOLDER_STORE (folder)) {
+ if (TNY_IS_FOLDER_STORE (folder))
recurse_folders (TNY_FOLDER_STORE (folder), query, helper);
- }
- g_object_unref (stats);
- }
- g_object_unref (folder);
+
+ g_object_unref (folder);
+ }
+
tny_iterator_next (iter);
}
g_object_unref (G_OBJECT (iter));
/* Create helper */
helper = g_malloc0 (sizeof (RecurseFoldersHelper));
- helper->function = NULL;
+ helper->task = TASK_GET_FOLDER_COUNT;
helper->sum = 0;
helper->folders = 0;
/* Create helper */
helper = g_malloc0 (sizeof (RecurseFoldersHelper));
- helper->function = (TnyStatsFunc) tny_folder_stats_get_all_count;
+ helper->task = TASK_GET_ALL_COUNT;
helper->sum = 0;
recurse_folders (self, NULL, helper);
/* Create helper */
helper = g_malloc0 (sizeof (RecurseFoldersHelper));
- helper->function = (TnyStatsFunc) tny_folder_stats_get_local_size;
+ helper->task = TASK_GET_LOCAL_SIZE;
helper->sum = 0;
recurse_folders (self, NULL, helper);
return retval;
}
-const gchar* modest_tny_account_get_parent_modest_account_name_for_server_account (TnyAccount *self)
+const gchar*
+modest_tny_account_get_parent_modest_account_name_for_server_account (TnyAccount *self)
{
return (const gchar *)g_object_get_data (G_OBJECT (self), "modest_account");
}
-void modest_tny_account_set_parent_modest_account_name_for_server_account (TnyAccount *self, const gchar* parent_modest_acount_name)
+void
+modest_tny_account_set_parent_modest_account_name_for_server_account (TnyAccount *self,
+ const gchar* parent_modest_acount_name)
{
g_object_set_data_full (G_OBJECT(self), "modest_account",
(gpointer) g_strdup (parent_modest_acount_name), g_free);
}
+gboolean
+modest_tny_account_is_virtual_local_folders (TnyAccount *self)
+{
+ /* We should make this more sophisticated if we ever use ModestTnyLocalFoldersAccount
+ * for anything else. */
+ return MODEST_IS_TNY_LOCAL_FOLDERS_ACCOUNT (self);
+}
+
+
+gboolean
+modest_tny_account_is_memory_card_account (TnyAccount *self)
+{
+ const gchar* account_id = NULL;
+
+ g_return_val_if_fail (TNY_ACCOUNT (self), FALSE);
+ if (!self)
+ return FALSE;
+ account_id = tny_account_get_id (self);
+ if (!account_id)
+ return FALSE;
+ else
+ return (strcmp (account_id, MODEST_MMC_ACCOUNT_ID) == 0);
+}