X-Git-Url: http://git.maemo.org/git/?p=modest;a=blobdiff_plain;f=src%2Fwidgets%2Fmodest-header-view.h;h=d753de091591fcb61478b43da9a47a8d55969fa2;hp=ac01093785389f28ea9ad893ab3b2a4ef1d2d807;hb=b93b64adaaf2947f8b35889981af6ad96b18fd31;hpb=4c17eac51757809148b84e229bede6323aac270a diff --git a/src/widgets/modest-header-view.h b/src/widgets/modest-header-view.h index ac01093..d753de0 100644 --- a/src/widgets/modest-header-view.h +++ b/src/widgets/modest-header-view.h @@ -30,9 +30,8 @@ #ifndef __MODEST_HEADER_VIEW_H__ #define __MODEST_HEADER_VIEW_H__ -#include #include -#include +#include #include #include #include @@ -55,55 +54,73 @@ struct _ModestHeaderView { /* insert public members, if any */ }; -typedef enum _ModestItemType ModestItemType; +#define MODEST_HEADER_VIEW_COLUMN "header-view-column" -struct _ModestHeaderViewClass { - GtkTreeViewClass parent_class; - - void (*message_selected) (ModestHeaderView* self, - TnyMsg *msg, - gpointer user_data); - - void (*item_not_found) (ModestHeaderView* self, - ModestItemType type, - 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 status, - gpointer user_data); -}; - - -enum _ModestHeaderViewColumn { - MODEST_HEADER_VIEW_COLUMN_FROM, +typedef enum _ModestHeaderViewColumn { + MODEST_HEADER_VIEW_COLUMN_FROM = 0, 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_MSGTYPE, MODEST_HEADER_VIEW_COLUMN_ATTACH, - MODEST_HEADER_VIEW_COLUMN_COMPACT_HEADER, + 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, /* 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 -}; -typedef enum _ModestHeaderViewColumn ModestHeaderViewColumn; -enum _ModestHeaderViewStyle { - MODEST_HEADER_VIEW_STYLE_NORMAL, - MODEST_HEADER_VIEW_STYLE_COMPACT, - MODEST_HEADER_VIEW_STYLE_NUM -}; -typedef enum _ModestHeaderViewStyle ModestHeaderViewStyle; +} ModestHeaderViewColumn; + +/* + * this can be extended with more style thingies, + * to make a small-device specific display + */ +typedef enum _ModestHeaderViewStyle { + MODEST_HEADER_VIEW_STYLE_DETAILS, /* many columns, single line, col headers visible */ + MODEST_HEADER_VIEW_STYLE_TWOLINES, /* two-line headers, col headers invisible */ -enum _ModestItemType { + MODEST_HEADER_VIEW_STYLE_NUM +} ModestHeaderViewStyle; + +typedef enum _ModestItemType { MODEST_ITEM_TYPE_MESSAGE, MODEST_ITEM_TYPE_FOLDER, MODEST_ITEM_TYPE_NUM -}; +} ModestItemType; + + +struct _ModestHeaderViewClass { + GtkTreeViewClass parent_class; + void (*header_selected) (ModestHeaderView* self, + TnyHeader *header, + gpointer user_data); + + void (*item_not_found) (ModestHeaderView* self, + ModestItemType type, + gpointer user_data); + + void (*header_activated) (ModestHeaderView* self, + TnyHeader *header, + 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); +}; /** * modest_header_view_get_type: @@ -118,7 +135,6 @@ GType modest_header_view_get_type (void) G_GNUC_CONST; /** * modest_header_view_new: * @folder: a TnyMsgFolder object - * @columns: a list of ModestHeaderViewColumn * @style: a ModestHeaderViewColumn with the style of this listview * ( MODEST_HEADER_VIEW_STYLE_NORMAL or MODEST_HEADER_VIEW_STYLE_COMPACT) * @@ -127,7 +143,6 @@ GType modest_header_view_get_type (void) G_GNUC_CONST; * Returns: a new GtkWidget (a GtkTreeView-subclass) */ GtkWidget* modest_header_view_new (TnyFolder *folder, - GSList *columns, ModestHeaderViewStyle style); /** @@ -136,42 +151,53 @@ GtkWidget* modest_header_view_new (TnyFolder *folder, * @folder: a TnyFolder object * * set the folder for this ModestHeaderView - * - * Returns: TRUE if it succeeded, FALSE otherwise */ -gboolean modest_header_view_set_folder (ModestHeaderView *self, +void modest_header_view_set_folder (ModestHeaderView *self, TnyFolder *folder); +/** + * modest_header_view_get_folder: + * @self: a ModestHeaderView instance + * + * get the folder in this ModestHeaderView + * + * Returns: the tny folder instance or NULL if there is none + */ +TnyFolder *modest_header_view_get_folder (ModestHeaderView *self); + /** * modest_header_view_set_columns: * @self: a ModestHeaderView instance * @columns: a list of ModestHeaderViewColumn * - * set the columns for this ModestHeaderView + * set the columns for this ModestHeaderView. * * Returns: TRUE if it succeeded, FALSE otherwise */ -gboolean modest_header_view_set_columns (ModestHeaderView *self, - GSList *columns); +gboolean modest_header_view_set_columns (ModestHeaderView *self, + const GList *columns); /** * modest_header_view_get_columns: * @self: a ModestHeaderView instance - * @folder: a TnyFolder object * - * get the columns for this ModestHeaderView + * get the GtkTreeColumns for this ModestHeaderView. Each one of the + * tree columns will have property than can be retrieved + * with g_object_get_data MODEST_HEADER_VIEW_COLUMN (#define), + * and which contains the corresponding ModestHeaderViewColumn * - * Returns: list of columms, or NULL in case of no columns or error + * Returns: newly allocated list of column ids, or NULL in case of no columns or error + * You must free the list with g_list_free */ -const GSList* modest_header_view_get_columns (ModestHeaderView *self); - +GList* modest_header_view_get_columns (ModestHeaderView *self); + /** * modest_header_view_set_style: * @self: a ModestHeaderView instance * @style: the style for this tree view * - * set the style this ModestHeaderView + * set the style for this ModestHeaderView * * Returns: TRUE if it succeeded, FALSE otherwise */ @@ -188,8 +214,57 @@ gboolean modest_header_view_set_style (ModestHeaderView *self, */ ModestHeaderViewStyle modest_header_view_get_style (ModestHeaderView *self); +/** + * modest_header_view_get_selected_headers: + * @self: a ModestHeaderView instance + * + * get the list of the currently selected TnyHeader's + * + * Returns: the list with the currently selected headers + */ TnyList* modest_header_view_get_selected_headers (ModestHeaderView *self); + +/** + * modest_header_view_is_empty: + * @self: a valid ModestHeaderView instance + * + * see if this header view is empty; use this function instead of + * using the GtkTreeView parent directly, as 'empty' in this case + * may mean that there is one "This is empty"-message, and of course + * GtkTreeView then thinks it is *not* empty + * + * Returns: TRUE if the header view is empty, FALSE otherwise + */ +gboolean modest_header_view_is_empty (ModestHeaderView *self); + + + +/** + * modest_header_view_select_next: + * @self: a #ModestHeaderView + * + * Selects the header next to the current selected one + **/ +void modest_header_view_select_next (ModestHeaderView *self); + +/** + * modest_header_view_select_prev: + * @self: a #ModestHeaderView + * + * Selects the previous header of the current selected one + **/ +void modest_header_view_select_prev (ModestHeaderView *self); + + +/* PROTECTED method. It's useful when we want to force a given + selection to reload a msg. For example if we have selected a header + in offline mode, when Modest become online, we want to reload the + message automatically without an user click over the header */ +void +_modest_header_view_change_selection (GtkTreeSelection *selection, + gpointer user_data); + G_END_DECLS