+
+
+
+static const gchar*
+get_account_name (TnyFolder *folder)
+{
+ TnyAccount *account;
+
+ account = tny_folder_get_account (folder);
+ if (!account)
+ return NULL;
+ else
+ return tny_account_get_name (account);
+
+}
+
+static gint
+cmp_rows (GtkTreeModel *tree_model, GtkTreeIter *iter1, GtkTreeIter *iter2,
+ gpointer user_data)
+{
+ gint cmp;
+ gchar *name1, *name2;
+ TnyFolderType type;
+ TnyFolder *folder1, *folder2;
+
+ gtk_tree_model_get (tree_model, iter1,
+ TNY_GTK_FOLDER_STORE_TREE_MODEL_NAME_COLUMN, &name1,
+ TNY_GTK_FOLDER_STORE_TREE_MODEL_TYPE_COLUMN, &type,
+ TNY_GTK_FOLDER_STORE_TREE_MODEL_INSTANCE_COLUMN, &folder1,
+ -1);
+ gtk_tree_model_get (tree_model, iter2,
+ TNY_GTK_FOLDER_STORE_TREE_MODEL_NAME_COLUMN, &name2,
+ TNY_GTK_FOLDER_STORE_TREE_MODEL_INSTANCE_COLUMN, &folder2,
+ -1);
+
+ /* local_folders should be the last one */
+ if (type == TNY_FOLDER_TYPE_ROOT) {
+ /* the account name is also the name of the root folder
+ * in case of local folders */
+ if (strcmp (name1, MODEST_LOCAL_FOLDERS_ACCOUNT_NAME) == 0)
+ cmp = +1;
+ else if (strcmp (name2, MODEST_LOCAL_FOLDERS_ACCOUNT_NAME) == 0)
+ cmp = -1;
+ else
+ cmp = modest_text_utils_utf8_strcmp (name1, name2, TRUE);
+ } else {
+ cmp = modest_text_utils_utf8_strcmp (name1, name2, TRUE);
+ }
+ g_free (name1);
+ g_free (name2);
+
+ return cmp;
+}