userdata.dialog = hildon_dialog_new ();
pannable = hildon_pannable_area_new ();
folder_view = modest_platform_create_folder_view (NULL);
+ modest_folder_view_set_filter (MODEST_FOLDER_VIEW (folder_view),
+ MODEST_FOLDER_VIEW_FILTER_CAN_HAVE_FOLDERS);
modest_folder_view_copy_model (MODEST_FOLDER_VIEW (original), MODEST_FOLDER_VIEW (folder_view));
/* Filter tree model */
gchar **hidding_ids;
guint n_selected;
+ ModestFolderViewFilter filter;
TnyFolderStoreQuery *query;
guint timer_expander;
priv->clipboard = modest_runtime_get_email_clipboard ();
priv->hidding_ids = NULL;
priv->n_selected = 0;
+ priv->filter = MODEST_FOLDER_VIEW_FILTER_NONE;
priv->reselect = FALSE;
priv->show_non_move = TRUE;
}
}
+ /* apply special filters */
+ if (retval && (priv->filter & MODEST_FOLDER_VIEW_FILTER_CAN_HAVE_FOLDERS)) {
+ if (TNY_IS_FOLDER (instance)) {
+ TnyFolderCaps capabilities;
+
+ capabilities = tny_folder_get_caps (TNY_FOLDER (instance));
+ retval = !(capabilities & TNY_FOLDER_CAPS_NOCHILDREN);
+ } else if (TNY_IS_ACCOUNT (instance)) {
+ retval = FALSE;
+ }
+ }
+
/* Free */
g_object_unref (instance);
}
}
+void
+modest_folder_view_set_filter (ModestFolderView *self,
+ ModestFolderViewFilter filter)
+{
+ ModestFolderViewPrivate *priv;
+ GtkTreeModel *filter_model;
+
+ g_return_if_fail (MODEST_IS_FOLDER_VIEW (self));
+ priv = MODEST_FOLDER_VIEW_GET_PRIVATE (self);
+
+ priv->filter = filter;
+
+ filter_model = gtk_tree_view_get_model (GTK_TREE_VIEW (self));
+ if (!GTK_IS_TREE_MODEL_FILTER(filter_model)) {
+ g_warning ("BUG: %s: not a valid filter model", __FUNCTION__);
+ return;
+ }
+ gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (filter_model));
+}
MODEST_FOLDER_VIEW_CELL_STYLE_COMPACT
} ModestFolderViewCellStyle;
+typedef enum _ModestFolderViewFilter {
+ MODEST_FOLDER_VIEW_FILTER_NONE = 0,
+ MODEST_FOLDER_VIEW_FILTER_CAN_HAVE_FOLDERS = 1 << 0,
+} ModestFolderViewFilter;
+
typedef struct _ModestFolderView ModestFolderView;
typedef struct _ModestFolderViewClass ModestFolderViewClass;
void modest_folder_view_set_cell_style (ModestFolderView *self,
ModestFolderViewCellStyle cell_style);
+/**
+ * modest_folder_view_filter:
+ * @self: a #ModestFolderView
+ * @filter: a filter mask to be applied to files
+ *
+ * sets the special filter to be applied (affects visibility of items).
+ * It's a mask, and filters applied are applied with an AND.
+ */
+void modest_folder_view_set_filter (ModestFolderView *self,
+ ModestFolderViewFilter filter);
+
G_END_DECLS
#endif /* __MODEST_FOLDER_VIEW_H__ */