const ModestLocalFolder ModestLocalFolderMap[] = {
{ TNY_FOLDER_TYPE_UNKNOWN, "<unknown>", N_("<Unknown>")},
{ TNY_FOLDER_TYPE_NORMAL, "<normal>", N_("<Normal>")},
- { TNY_FOLDER_TYPE_INBOX, "inbox", N_("mcen_me_folder_inbox")},
+ /* There is no special Inbox folder for local accounts */
+/* { TNY_FOLDER_TYPE_INBOX, "inbox", N_("mcen_me_folder_inbox")}, */
{ TNY_FOLDER_TYPE_OUTBOX, "outbox", N_("mcen_me_folder_outbox")},
{ TNY_FOLDER_TYPE_TRASH, "trash", N_("Trash")},
{ TNY_FOLDER_TYPE_JUNK, "junk", N_("Junk")},
/* Free */
g_object_unref (helper->mail_op);
g_slice_free (XFerMsgAsyncHelper, helper);
- g_object_unref (folder);
- g_object_unref (into);
}
void
/* Notify the queue */
modest_mail_operation_notify_end (self);
} else {
- /* Pick references for async calls */
- g_object_ref (folder);
- g_object_ref (parent);
-
/* Create the helper */
helper = g_slice_new0 (XFerMsgAsyncHelper);
helper->mail_op = g_object_ref(self);
g_object_ref (folder);
}
+static gboolean
+modest_tny_local_folders_account_query_passes (TnyFolderStoreQuery *query, TnyFolder *folder)
+{
+ gboolean retval = FALSE;
+
+ if (query && (tny_list_get_length (tny_folder_store_query_get_items (query)) > 0))
+ {
+ TnyList *items = tny_folder_store_query_get_items (query);
+ TnyIterator *iterator;
+ iterator = tny_list_create_iterator (items);
+
+ while (!tny_iterator_is_done (iterator))
+ {
+ TnyFolderStoreQueryItem *item = (TnyFolderStoreQueryItem*) tny_iterator_get_current (iterator);
+ TnyFolderStoreQueryOption options = tny_folder_store_query_item_get_options (item);
+ regex_t *regex = tny_folder_store_query_item_get_regex (item);
+
+ if ((options & TNY_FOLDER_STORE_QUERY_OPTION_SUBSCRIBED) &&
+ tny_folder_is_subscribed (folder))
+ retval = TRUE;
+
+ if ((options & TNY_FOLDER_STORE_QUERY_OPTION_UNSUBSCRIBED) &&
+ !(tny_folder_is_subscribed (folder)))
+ retval = TRUE;
+
+ if (regex && options & TNY_FOLDER_STORE_QUERY_OPTION_MATCH_ON_NAME)
+ if (regexec (regex, tny_folder_get_name (folder), 0, NULL, 0) == 0)
+ retval = TRUE;
+
+ if (regex && options & TNY_FOLDER_STORE_QUERY_OPTION_MATCH_ON_ID)
+ if (regexec (regex, tny_folder_get_id (folder), 0, NULL, 0) == 0)
+ retval = TRUE;
+
+ g_object_unref (G_OBJECT (item));
+ tny_iterator_next (iterator);
+ }
+
+ g_object_unref (G_OBJECT (iterator));
+ g_object_unref (G_OBJECT (items));
+ } else
+ retval = TRUE;
+
+ return retval;
+}
+
+
static void
get_folders (TnyFolderStore *self, TnyList *list, TnyFolderStoreQuery *query, GError **err)
{
MODEST_TNY_LOCAL_FOLDERS_ACCOUNT_GET_CLASS (self));
parent_class->get_folders_func (self, list, query, err);
- /* Add our extra folders: */
+ /* Add our extra folders only if it passes the query */
GSList *iter = priv->list_extra_folders;
- while (iter)
- {
+ while (iter) {
TnyFolder *folder = TNY_FOLDER (iter->data);
- if (folder)
- tny_list_append (list, G_OBJECT (folder));
+ if (folder && modest_tny_local_folders_account_query_passes (query, folder))
+ tny_list_prepend (list, G_OBJECT (folder));
iter = g_slist_next (iter);
}
/* All per-account outbox folders are merged into one folders
* so that they appear as one outbox to the user: */
- TnyMergeFolder *merged_outbox = TNY_MERGE_FOLDER (tny_merge_folder_new());
+ TnyMergeFolder *merged_outbox = TNY_MERGE_FOLDER (tny_merge_folder_new(_("mcen_me_folder_outbox")));
/* Set type to outbox (NB#61580) */
tny_merge_folder_set_folder_type (merged_outbox, TNY_FOLDER_TYPE_OUTBOX);
g_return_val_if_fail (TNY_IS_FOLDER(folder), FALSE);
/* Get folder type */
- if (modest_tny_folder_is_local_folder (folder))
- folder_type = modest_tny_folder_get_local_folder_type (folder);
- else
- folder_type = modest_tny_folder_guess_folder_type (folder);
+ folder_type = modest_tny_folder_guess_folder_type (folder);
/* Check foler type */
for (i=0; i < ntypes; i++) {
static void _clear_hidding_filter (ModestFolderView *folder_view);
-static void on_row_changed_maybe_select_folder (GtkTreeModel *tree_model, GtkTreePath *path, GtkTreeIter *iter,
+static void on_row_changed_maybe_select_folder (GtkTreeModel *tree_model,
+ GtkTreePath *path,
+ GtkTreeIter *iter,
ModestFolderView *self);
enum {
guint i;
gboolean found = FALSE;
gboolean cleared = FALSE;
-
+
g_return_val_if_fail (MODEST_IS_FOLDER_VIEW (data), FALSE);
priv = MODEST_FOLDER_VIEW_GET_PRIVATE (data);
retval = FALSE;
}
}
-
- /* The virtual local-folders folder store is also shown by default. */
/* Check hiding (if necessary) */
cleared = modest_email_clipboard_cleared (priv->clipboard);
GTK_SORT_ASCENDING);
gtk_tree_sortable_set_sort_func (GTK_TREE_SORTABLE (sortable),
TNY_GTK_FOLDER_STORE_TREE_MODEL_NAME_COLUMN,
- cmp_rows, NULL, NULL);
+ cmp_rows, NULL, NULL);
/* Create filter model */
filter_model = gtk_tree_model_filter_new (sortable, NULL);
filter_row,
self,
NULL);
-/* if (priv->style == MODEST_FOLDER_VIEW_STYLE_SHOW_ONE) { */
-/* filter_model = gtk_tree_model_filter_new (sortable, NULL); */
-/* gtk_tree_model_filter_set_visible_func (GTK_TREE_MODEL_FILTER (filter_model), */
-/* filter_row, */
-/* self, */
-/* NULL); */
-/* } */
/* Set new model */
gtk_tree_view_set_model (GTK_TREE_VIEW(self), filter_model);
g_signal_connect (G_OBJECT(filter_model), "row-inserted",
(GCallback)on_row_changed_maybe_select_folder, self);
-
-
-/* gtk_tree_view_set_model (GTK_TREE_VIEW(self), */
-/* (filter_model) ? filter_model : sortable); */
g_object_unref (model);
- g_object_unref (filter_model);
-/* if (filter_model) */
-/* g_object_unref (filter_model); */
-
+ g_object_unref (filter_model);
g_object_unref (sortable);
/* Force a reselection of the INBOX next time the widget is shown */
helper->delete_source,
NULL,
NULL);
+
+ g_object_unref (G_OBJECT (mail_op));
}
/* Frees */
g_object_unref (G_OBJECT (parent_folder));
g_object_unref (G_OBJECT (folder));
- g_object_unref (G_OBJECT (mail_op));
}
/*
if (!MODEST_IS_FOLDER_VIEW(self))
return;
- g_return_if_fail (MODEST_IS_FOLDER_VIEW (self));
priv = MODEST_FOLDER_VIEW_GET_PRIVATE (self);
-
if (priv->folder_to_select) {
if (!modest_folder_view_select_folder (self, priv->folder_to_select,
gtk_tree_path_free (path);
- }
+ }
g_object_unref (priv->folder_to_select);
priv->folder_to_select = NULL;
- }
+ }
}