struct _ModestHeaderViewPrivate {
TnyFolder *folder;
ModestHeaderViewStyle style;
+ gboolean is_outbox;
TnyFolderMonitor *monitor;
GMutex *observers_lock;
gchar **hidding_ids;
guint n_selected;
GtkTreeRowReference *autoselect_reference;
+ ModestHeaderViewFilter filter;
gint sort_colid[2][TNY_FOLDER_TYPE_NUM];
gint sort_type[2][TNY_FOLDER_TYPE_NUM];
priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
+ priv->is_outbox = (type == TNY_FOLDER_TYPE_OUTBOX);
+
/* TODO: check whether these renderers need to be freed */
renderer_attach = gtk_cell_renderer_pixbuf_new ();
renderer_priority = gtk_cell_renderer_pixbuf_new ();
priv = MODEST_HEADER_VIEW_GET_PRIVATE(obj);
priv->folder = NULL;
+ priv->is_outbox = FALSE;
priv->monitor = NULL;
priv->observers_lock = g_mutex_new ();
priv->clipboard = modest_runtime_get_email_clipboard ();
priv->hidding_ids = NULL;
priv->n_selected = 0;
+ priv->filter = MODEST_HEADER_VIEW_FILTER_NONE;
priv->selection_changed_handler = 0;
priv->acc_removed_handler = 0;
goto frees;
}
+ if (visible && (priv->filter & MODEST_HEADER_VIEW_FILTER_DELETABLE)) {
+ if (priv->is_outbox &&
+ modest_tny_all_send_queues_get_msg_status (header) == MODEST_TNY_SEND_QUEUE_SENDING) {
+ visible = FALSE;
+ goto frees;
+ }
+ }
+
+ if (visible && (priv->filter & MODEST_HEADER_VIEW_FILTER_MOVEABLE)) {
+ if (priv->is_outbox &&
+ modest_tny_all_send_queues_get_msg_status (header) == MODEST_TNY_SEND_QUEUE_SENDING) {
+ visible = FALSE;
+ goto frees;
+ }
+ }
+
/* If no data on clipboard, return always TRUE */
if (modest_email_clipboard_cleared(priv->clipboard)) {
visible = TRUE;
priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
return modest_datetime_formatter_display_datetime (priv->datetime_formatter, date);
}
+
+void
+modest_header_view_set_filter (ModestHeaderView *self,
+ ModestHeaderViewFilter filter)
+{
+ ModestHeaderViewPrivate *priv;
+ GtkTreeModel *filter_model;
+
+ g_return_if_fail (MODEST_IS_HEADER_VIEW (self));
+ priv = MODEST_HEADER_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)) {
+ gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (filter_model));
+ }
+}
+
+void
+modest_header_view_unset_filter (ModestHeaderView *self,
+ ModestHeaderViewFilter filter)
+{
+ ModestHeaderViewPrivate *priv;
+ GtkTreeModel *filter_model;
+
+ g_return_if_fail (MODEST_IS_HEADER_VIEW (self));
+ priv = MODEST_HEADER_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)) {
+ gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (filter_model));
+ }
+}