#include <tny-msg.h>
#include <tny-header.h>
#include <tny-gtk-header-list-model.h>
+#include "modest-window.h"
#include "modest-mail-operation.h"
+#include "modest-header-view-observer.h"
G_BEGIN_DECLS
#define MODEST_HEADER_VIEW_FLAG_SORT "header-view-flags-sort"
typedef enum _ModestHeaderViewColumn {
- MODEST_HEADER_VIEW_COLUMN_FROM = 0,
- MODEST_HEADER_VIEW_COLUMN_TO = 1,
- MODEST_HEADER_VIEW_COLUMN_SUBJECT = 2,
- MODEST_HEADER_VIEW_COLUMN_SENT_DATE = 3,
- MODEST_HEADER_VIEW_COLUMN_RECEIVED_DATE = 4,
- MODEST_HEADER_VIEW_COLUMN_MSGTYPE = 5,
- MODEST_HEADER_VIEW_COLUMN_ATTACH = 6,
- MODEST_HEADER_VIEW_COLUMN_SIZE = 7,
- MODEST_HEADER_VIEW_COLUMN_STATUS = 8,
+ MODEST_HEADER_VIEW_COLUMN_FROM,
+ MODEST_HEADER_VIEW_COLUMN_TO,
+ MODEST_HEADER_VIEW_COLUMN_SUBJECT,
+ MODEST_HEADER_VIEW_COLUMN_SENT_DATE,
+ MODEST_HEADER_VIEW_COLUMN_RECEIVED_DATE,
+ MODEST_HEADER_VIEW_COLUMN_ATTACH,
+ MODEST_HEADER_VIEW_COLUMN_SIZE,
+ MODEST_HEADER_VIEW_COLUMN_STATUS,
/*
* these two are for compact display on small devices,
* with two line display with all relevant headers
*/
- MODEST_HEADER_VIEW_COLUMN_COMPACT_FLAG = 9, /* priority and attachments */
- MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_IN = 10, /* incoming mail */
- MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_OUT = 11,/* outgoing mail */
- MODEST_HEADER_VIEW_COLUMN_COMPACT_SENT_DATE = 12,
- MODEST_HEADER_VIEW_COLUMN_COMPACT_RECEIVED_DATE = 13,
+ MODEST_HEADER_VIEW_COLUMN_COMPACT_FLAG, /* priority and attachments */
+ MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_IN, /* incoming mail */
+ MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER_OUT,/* outgoing mail */
+ MODEST_HEADER_VIEW_COLUMN_COMPACT_SENT_DATE,
+ MODEST_HEADER_VIEW_COLUMN_COMPACT_RECEIVED_DATE,
MODEST_HEADER_VIEW_COLUMN_NUM
} ModestItemType;
+typedef enum _ModestHeaderViewFilter {
+ MODEST_HEADER_VIEW_FILTER_NONE = 0,
+ MODEST_HEADER_VIEW_FILTER_MOVEABLE = 1 << 0,
+ MODEST_HEADER_VIEW_FILTER_DELETABLE = 1 << 1,
+} ModestHeaderViewFilter;
+
struct _ModestHeaderViewClass {
GtkTreeViewClass parent_class;
void (*header_activated) (ModestHeaderView* self,
TnyHeader *header,
+ GtkTreePath *path,
gpointer user_data);
void (*msg_count_changed) (ModestHeaderView* self,
TnyFolder *folder,
TnyFolderChange *change,
gpointer user_data);
+
+ void (*updating_msg_list) (ModestHeaderView *self,
+ gboolean starting,
+ gpointer user_data);
};
/**
*/
void modest_header_view_set_folder (ModestHeaderView *self,
TnyFolder *folder,
+ gboolean refresh,
+ ModestWindow *progress_window,
RefreshAsyncUserCallback callback,
gpointer user_data);
ModestHeaderViewStyle modest_header_view_get_style (ModestHeaderView *self);
/**
+ * modest_header_view_count_selected_headers:
+ * @self: a ModestHeaderView instance
+ *
+ * Check selected headers counter.
+ * Returns: the number of selected headers.
+ */
+guint
+modest_header_view_count_selected_headers (ModestHeaderView *self);
+
+/**
+ * modest_header_view_has_selected_headers:
+ * @self: a ModestHeaderView instance
+ *
+ * Check if any row is selected on headers tree view.
+ * Returns: TRUE if any header is selected, FALSE otherwise.
+ */
+gboolean
+modest_header_view_has_selected_headers (ModestHeaderView *self);
+
+/**
* modest_header_view_get_selected_headers:
* @self: a ModestHeaderView instance
*
TnyList **headers,
gboolean *delete);
+void modest_header_view_refilter (ModestHeaderView *header_view);
+
+/**
+ * modest_header_view_set_filter:
+ * @self: a #ModestHeaderView
+ * @filter: a filter mask to be applied to messages
+ *
+ * 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_header_view_set_filter (ModestHeaderView *self,
+ ModestHeaderViewFilter filter);
+
+/**
+ * modest_header_view_unset_filter:
+ * @self: a #ModestHeaderView
+ * @filter: a filter mask to be unapplied to headers
+ *
+ * Unsets the special filter to be applied (affects visibility of
+ * items). It's a mask, and filters applied are applied with an AND.
+ */
+void modest_header_view_unset_filter (ModestHeaderView *self,
+ ModestHeaderViewFilter filter);
+
+
+
+/**
+ * modest_header_view_add_observer:
+ * @header_view: a #ModestHeaderView
+ * @observer: The observer to notify.
+ *
+ * Registers a new observer. Warning! Each added observer object must
+ * removed using @modest_header_view_remove_observer before destroying
+ * the observer, or at least when it is under destruction. Also you
+ * should care about that the observer's #update function might be
+ * called any time until the observer is removed.
+ **/
+void modest_header_view_add_observer(
+ ModestHeaderView *header_view,
+ ModestHeaderViewObserver *observer);
+
+/**
+ * modest_header_view_remove_observer:
+ * @header_view: a #ModestHeaderView
+ * @observer: The observer to remove.
+ *
+ * Removes exactly one observer from the notification list. If you
+ * added an observer twice, you should call this remove funtion twice
+ * as well.
+ **/
+void modest_header_view_remove_observer(
+ ModestHeaderView *header_view,
+ ModestHeaderViewObserver *observer);
+
+/**
+ * modest_header_view_get_header_at_pos:
+ * @header_view: a #ModestHeaderView
+ * @initial_x: the x coordinate
+ * @initial_y: the y coordinate
+ *
+ * Return the #TnyHeader stored in the row at (x,y) coordinates
+ * relatives to the widget. It returns a new reference so you must
+ * unref it once you're done with it.
+ *
+ * Returns: a #TnyHeader if found, else NULL
+ **/
+TnyHeader* modest_header_view_get_header_at_pos (ModestHeaderView *header_view,
+ gint initial_x,
+ gint initial_y);
+
G_END_DECLS