X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-header-view.h;h=11a118feaa27b5f443270df78e38b5fd10f6a544;hp=76a7672a44f11e865991dc3b147c91c771bf17b5;hb=1e3f617812d78abc30ebfbe8aab43bd0e2611b97;hpb=58cbe9db1e63b6f9bb18c9bac457e48cdaaff8a0 diff --git a/src/widgets/modest-header-view.h b/src/widgets/modest-header-view.h index 76a7672..11a118f 100644 --- a/src/widgets/modest-header-view.h +++ b/src/widgets/modest-header-view.h @@ -31,10 +31,14 @@ #define __MODEST_HEADER_VIEW_H__ #include +#include #include #include #include #include +#include "modest-window.h" +#include "modest-mail-operation.h" +#include "modest-header-view-observer.h" G_BEGIN_DECLS @@ -58,25 +62,24 @@ struct _ModestHeaderView { #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 @@ -100,6 +103,12 @@ typedef enum _ModestItemType { } 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; @@ -113,14 +122,17 @@ struct _ModestHeaderViewClass { void (*header_activated) (ModestHeaderView* self, TnyHeader *header, + GtkTreePath *path, gpointer user_data); - /* msg == NULL implies that the operation is finished, ie. - * the progress indictation can be hidden */ - void (*status_update) (ModestHeaderView* self, - const gchar* msg, - gint num, gint total, - 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); }; /** @@ -154,7 +166,11 @@ GtkWidget* modest_header_view_new (TnyFolder *folder, * set the folder for this ModestHeaderView */ void modest_header_view_set_folder (ModestHeaderView *self, - TnyFolder *folder); + TnyFolder *folder, + gboolean refresh, + ModestWindow *progress_window, + RefreshAsyncUserCallback callback, + gpointer user_data); /** * modest_header_view_get_folder: @@ -170,7 +186,7 @@ TnyFolder *modest_header_view_get_folder (ModestHeaderView *self); /** * modest_header_view_set_columns: * @self: a ModestHeaderView instance - * @columns: a list of ModestHeaderViewColumn + * @columns: a list of gint ModestHeaderViewColumn column IDs, using GINT_TO_POINTER() and GPOINTER_TO_INT(). * @type: #TnyFolderType type * * set the columns for this ModestHeaderView. @@ -218,6 +234,26 @@ gboolean modest_header_view_set_style (ModestHeaderView *self, 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 * @@ -316,6 +352,126 @@ modest_header_view_sort_by_column_id (ModestHeaderView *self, guint sort_colid, GtkSortType sort_type); +/** + * modest_header_view_clear: + * @self: a #ModestHeaderView + * + * Clear the contents of a header view. It internally calls the + * set_folder function with last three arguments as NULL + **/ +void +modest_header_view_clear (ModestHeaderView *self); + +/** + * modest_header_view_copy_selection: + * @self: a #ModestHeaderView + * + * Stores a #TnyList of selected headers in the own clibpoard of + * @self header view. + **/ +void +modest_header_view_copy_selection (ModestHeaderView *header_view); + +/** + * modest_header_view_cut_selection: + * @self: a #ModestHeaderView + * + * Stores a #TnyList of selected headers in the own clibpoard of + * @self header view and filter them into headers tree model to + * hide these rows in treeview. + **/ +void +modest_header_view_cut_selection (ModestHeaderView *header_view); + + +/** + * modest_header_view_paste_selection: + * @self: a #ModestHeaderView + * @headers: ouput parameter with a #TnyList of headers which will be returned. + * @delete: output parameter with indication about delete or not the selected headers. + * + * Gets the selected headers to copy/cut. + **/ +void +modest_header_view_paste_selection (ModestHeaderView *header_view, + 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); + +void modest_header_view_set_show_latest (ModestHeaderView *header_view, + gint show_latest); + +gint modest_header_view_get_show_latest (ModestHeaderView *header_view); +gint modest_header_view_get_not_latest (ModestHeaderView *header_view); G_END_DECLS