ModestHeaderViewPrivate *priv;
GtkTreeViewColumn *compact_column = NULL;
const GList *cursor;
+
+ g_return_val_if_fail (self && MODEST_IS_HEADER_VIEW(self), FALSE);
+ g_return_val_if_fail (type != TNY_FOLDER_TYPE_INVALID, FALSE);
priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
GtkTreeSelection *sel;
guint selected_rows;
- g_return_val_if_fail (self, 0);
+ g_return_val_if_fail (self && MODEST_IS_HEADER_VIEW(self), 0);
/* Get selection object and check selected rows count */
sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
{
GtkTreeSelection *sel;
gboolean empty;
-
- g_return_val_if_fail (self, FALSE);
+
+ g_return_val_if_fail (self && MODEST_IS_HEADER_VIEW(self), FALSE);
/* Get selection object and check selected rows count */
sel = gtk_tree_view_get_selection(GTK_TREE_VIEW(self));
GtkTreeModel *tree_model = NULL;
GtkTreeIter iter;
- g_return_val_if_fail (self, NULL);
+ g_return_val_if_fail (self && MODEST_IS_HEADER_VIEW(self), NULL);
priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
GtkTreeModel *model;
GtkTreePath *path;
+ g_return_if_fail (self && MODEST_IS_HEADER_VIEW(self));
+
sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (self));
path = get_selected_row (GTK_TREE_VIEW(self), &model);
if ((path != NULL) && (gtk_tree_model_get_iter(model, &iter, path))) {
GtkTreeModel *model;
GtkTreePath *path;
+ g_return_if_fail (self && MODEST_IS_HEADER_VIEW(self));
+
sel = gtk_tree_view_get_selection (GTK_TREE_VIEW (self));
path = get_selected_row (GTK_TREE_VIEW(self), &model);
if ((path != NULL) && (gtk_tree_model_get_iter(model, &iter, path))) {
GList*
modest_header_view_get_columns (ModestHeaderView *self)
-{
- g_return_val_if_fail (self, FALSE);
+{
+ g_return_val_if_fail (self && MODEST_IS_HEADER_VIEW(self), NULL);
+
return gtk_tree_view_get_columns (GTK_TREE_VIEW(self));
}
gboolean show_col_headers = FALSE;
ModestHeaderViewStyle old_style;
- g_return_val_if_fail (self, FALSE);
+ g_return_val_if_fail (self && MODEST_IS_HEADER_VIEW(self), FALSE);
g_return_val_if_fail (style >= 0 && MODEST_HEADER_VIEW_STYLE_NUM,
FALSE);
-
+
priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
if (priv->style == style)
return TRUE; /* nothing to do */
ModestHeaderViewStyle
modest_header_view_get_style (ModestHeaderView *self)
{
- g_return_val_if_fail (self, FALSE);
+ g_return_val_if_fail (self && MODEST_IS_HEADER_VIEW(self), FALSE);
+
return MODEST_HEADER_VIEW_GET_PRIVATE(self)->style;
}
modest_header_view_get_folder (ModestHeaderView *self)
{
ModestHeaderViewPrivate *priv;
+
+ g_return_val_if_fail (self && MODEST_IS_HEADER_VIEW(self), NULL);
+
priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
if (priv->folder)
/* Restore sort column id */
if (cols) {
type = modest_tny_folder_guess_folder_type (folder);
+ if (type == TNY_FOLDER_TYPE_INVALID)
+ g_warning ("%s: BUG: TNY_FOLDER_TYPE_INVALID", __FUNCTION__);
+
sort_colid = modest_header_view_get_sort_column_id (self, type);
sort_type = modest_header_view_get_sort_type (self, type);
gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE(sortable),
GtkTreeModel *tree_filter, *sortable = NULL;
TnyFolderType type;
+ g_return_if_fail (self && MODEST_IS_HEADER_VIEW(self));
+ g_return_if_fail (sort_type == GTK_SORT_ASCENDING || sort_type == GTK_SORT_DESCENDING);
+
/* Get model and private data */
priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
tree_filter = gtk_tree_view_get_model (GTK_TREE_VIEW (self));
/* Sort tree model */
type = modest_tny_folder_guess_folder_type (priv->folder);
- gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE(sortable),
+ if (type == TNY_FOLDER_TYPE_INVALID)
+ g_warning ("%s: BUG: TNY_FOLDER_TYPE_INVALID", __FUNCTION__);
+ else {
+ gtk_tree_sortable_set_sort_column_id (GTK_TREE_SORTABLE(sortable),
sort_colid,
sort_type);
- /* Store new sort parameters */
- modest_header_view_set_sort_params (self, sort_colid, sort_type, type);
-
- /* Save GConf parameters */
-/* modest_widget_memory_save (modest_runtime_get_conf(), */
-/* G_OBJECT(self), "header-view"); */
-
+ /* Store new sort parameters */
+ modest_header_view_set_sort_params (self, sort_colid, sort_type, type);
+ }
}
void
{
ModestHeaderViewPrivate *priv;
ModestHeaderViewStyle style;
-
+
+ g_return_if_fail (self && MODEST_IS_HEADER_VIEW(self));
+ g_return_if_fail (sort_type == GTK_SORT_ASCENDING || sort_type == GTK_SORT_DESCENDING);
+ g_return_if_fail (type != TNY_FOLDER_TYPE_INVALID);
+
style = modest_header_view_get_style (self);
priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
ModestHeaderViewPrivate *priv;
ModestHeaderViewStyle style;
+ g_return_val_if_fail (self && MODEST_IS_HEADER_VIEW(self), 0);
+ g_return_val_if_fail (type != TNY_FOLDER_TYPE_INVALID, 0);
+
style = modest_header_view_get_style (self);
priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
{
ModestHeaderViewPrivate *priv;
ModestHeaderViewStyle style;
-
+
+ g_return_val_if_fail (self && MODEST_IS_HEADER_VIEW(self), GTK_SORT_DESCENDING);
+ g_return_val_if_fail (type != TNY_FOLDER_TYPE_INVALID, GTK_SORT_DESCENDING);
+
style = modest_header_view_get_style (self);
priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
gpointer user_data)
{
ModestHeaderViewPrivate *priv;
- ModestWindowMgr *mgr = NULL;
- GObject *source = NULL;
SetFolderHelper *info;
-
- priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
+ ModestWindow *main_win;
+
+ g_return_if_fail (self);
+ priv = MODEST_HEADER_VIEW_GET_PRIVATE(self);
+
+ main_win = modest_window_mgr_get_main_window (modest_runtime_get_window_mgr (),
+ FALSE); /* don't create */
+ if (!main_win) {
+ g_warning ("%s: BUG: no main window", __FUNCTION__);
+ return;
+ }
+
if (priv->folder) {
g_mutex_lock (priv->observers_lock);
tny_folder_remove_observer (priv->folder, TNY_FOLDER_OBSERVER (self));
ModestMailOperation *mail_op = NULL;
GtkTreeSelection *selection;
- /* Get main window to use it as source of mail operation */
- mgr = modest_runtime_get_window_mgr ();
- source = G_OBJECT (modest_window_mgr_get_main_window (modest_runtime_get_window_mgr ()));
-
/* Set folder in the model */
modest_header_view_set_folder_intern (self, folder);
-
+
/* Pick my reference. Nothing to do with the mail operation */
priv->folder = g_object_ref (folder);
info->user_data = user_data;
/* Create the mail operation (source will be the parent widget) */
- mail_op = modest_mail_operation_new (source);
+ mail_op = modest_mail_operation_new (G_OBJECT(main_win));
modest_mail_operation_queue_add (modest_runtime_get_mail_operation_queue (),
mail_op);
gpointer user_data)
{
g_return_if_fail (GTK_IS_TREE_SELECTION (selection));
- g_return_if_fail (MODEST_IS_HEADER_VIEW (user_data));
-
+ g_return_if_fail (user_data && MODEST_IS_HEADER_VIEW (user_data));
+
on_selection_changed (selection, user_data);
}
-static gint compare_priorities (TnyHeaderFlags p1, TnyHeaderFlags p2)
+static gint
+compare_priorities (TnyHeaderFlags p1, TnyHeaderFlags p2)
{
- p1 = p1 & TNY_HEADER_FLAG_PRIORITY;
- p2 = p2 & TNY_HEADER_FLAG_PRIORITY;
- if (p1 == 0)
- p1 = TNY_HEADER_FLAG_LOW_PRIORITY + 1;
- if (p2 == 0)
- p2 = TNY_HEADER_FLAG_LOW_PRIORITY + 1;
- return p1 - p2;
+ /* HH, LL, NN */
+ if (p1 == p2)
+ return 0;
+
+ /* HL HN */
+ if (p1 == TNY_HEADER_FLAG_HIGH_PRIORITY)
+ return 1;
+
+ /* LH LN */
+ if (p1 == TNY_HEADER_FLAG_LOW_PRIORITY)
+ return -1;
+
+ /* NH */
+ if ((p1 == TNY_HEADER_FLAG_NORMAL_PRIORITY) && (p2 == TNY_HEADER_FLAG_HIGH_PRIORITY))
+ return -1;
+
+ /* NL */
+ return 1;
}
static gint
return cmp ? cmp : t1 - t2;
- case TNY_HEADER_FLAG_PRIORITY:
- gtk_tree_model_get (tree_model, iter1, TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, &val1,
+ case TNY_HEADER_FLAG_PRIORITY_MASK: {
+ TnyHeader *header1 = NULL, *header2 = NULL;
+
+ gtk_tree_model_get (tree_model, iter1, TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &header1,
TNY_GTK_HEADER_LIST_MODEL_DATE_SENT_TIME_T_COLUMN, &t1,-1);
- gtk_tree_model_get (tree_model, iter2, TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, &val2,
+ gtk_tree_model_get (tree_model, iter2, TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &header2,
TNY_GTK_HEADER_LIST_MODEL_DATE_SENT_TIME_T_COLUMN, &t2,-1);
/* This is for making priority values respect the intuitive sort relationship
- * as HIGH is 11, LOW is 01, and we put NORMAL AS 10 (2) */
- cmp = compare_priorities (val1, val2);
+ * as HIGH is 01, LOW is 10, and NORMAL is 00 */
- return cmp ? cmp : t1 - t2;
+ if (header1 && header2) {
+ cmp = compare_priorities (tny_header_get_priority (header1),
+ tny_header_get_priority (header2));
+ g_object_unref (header1);
+ g_object_unref (header2);
+
+ return cmp ? cmp : t1 - t2;
+ }
+ return t1 - t2;
+ }
default:
return &iter1 - &iter2; /* oughhhh */
}
gboolean
modest_header_view_is_empty (ModestHeaderView *self)
{
- ModestHeaderViewPrivate *priv = NULL;
-
+ ModestHeaderViewPrivate *priv;
+
+ g_return_val_if_fail (self && MODEST_IS_HEADER_VIEW(self), TRUE);
+
priv = MODEST_HEADER_VIEW_GET_PRIVATE (MODEST_HEADER_VIEW (self));
return priv->status == HEADER_VIEW_EMPTY;
void
modest_header_view_clear (ModestHeaderView *self)
{
+ g_return_if_fail (self && MODEST_IS_HEADER_VIEW(self));
+
modest_header_view_set_folder (self, NULL, NULL, NULL);
}
void
modest_header_view_copy_selection (ModestHeaderView *header_view)
{
+ g_return_if_fail (header_view && MODEST_IS_HEADER_VIEW(header_view));
+
/* Copy selection */
_clipboard_set_selected_data (header_view, FALSE);
}
const gchar **hidding = NULL;
guint i, n_selected;
- g_return_if_fail (MODEST_IS_HEADER_VIEW (header_view));
+ g_return_if_fail (header_view && MODEST_IS_HEADER_VIEW (header_view));
+
priv = MODEST_HEADER_VIEW_GET_PRIVATE (header_view);
/* Copy selection */
gchar *id = NULL;
gboolean visible = TRUE;
gboolean found = FALSE;
+ GValue value = {0,};
g_return_val_if_fail (MODEST_IS_HEADER_VIEW (user_data), FALSE);
priv = MODEST_HEADER_VIEW_GET_PRIVATE (user_data);
/* Get header from model */
- gtk_tree_model_get (model, iter,
- TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, &flags,
- TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &header,
- -1);
+ gtk_tree_model_get_value (model, iter, TNY_GTK_HEADER_LIST_MODEL_FLAGS_COLUMN, &value);
+ flags = (TnyHeaderFlags) g_value_get_int (&value);
+ g_value_unset (&value);
+ gtk_tree_model_get_value (model, iter, TNY_GTK_HEADER_LIST_MODEL_INSTANCE_COLUMN, &value);
+ header = (TnyHeader *) g_value_get_object (&value);
+ g_value_unset (&value);
/* Hide mark as deleted heders */
if (flags & TNY_HEADER_FLAG_DELETED) {
/* Get message id from header (ensure is a valid id) */
if (!header) return FALSE;
- id = g_strdup(tny_header_get_message_id (header));
/* Check hiding */
if (priv->hidding_ids != NULL) {
+ id = g_strdup(tny_header_get_message_id (header));
for (i=0; i < priv->n_selected && !found; i++)
if (priv->hidding_ids[i] != NULL && id != NULL)
found = (!strcmp (priv->hidding_ids[i], id));
visible = !found;
+ g_free(id);
}
frees:
priv->status = ((gboolean) priv->status) && !visible;
- /* Free */
- if (header)
- g_object_unref (header);
- g_free(id);
-
return visible;
}
GtkTreeModel *model = NULL;
ModestHeaderViewPrivate *priv = NULL;
- g_return_if_fail (MODEST_IS_HEADER_VIEW (header_view));
+ g_return_if_fail (header_view && MODEST_IS_HEADER_VIEW (header_view));
priv = MODEST_HEADER_VIEW_GET_PRIVATE(header_view);
-
+
/* Hide cut headers */
model = gtk_tree_view_get_model (GTK_TREE_VIEW (header_view));
if (GTK_IS_TREE_MODEL_FILTER (model)) {
- priv->status = 0;
+ priv->status = HEADER_VIEW_INIT;
gtk_tree_model_filter_refilter (GTK_TREE_MODEL_FILTER (model));
}
}
}
}
-void modest_header_view_add_observer(
- ModestHeaderView *header_view,
- ModestHeaderViewObserver *observer)
+void
+modest_header_view_add_observer(ModestHeaderView *header_view,
+ ModestHeaderViewObserver *observer)
{
- ModestHeaderViewPrivate *priv = NULL;
-
- g_assert(MODEST_IS_HEADER_VIEW(header_view));
- g_assert(observer != NULL);
- g_assert(MODEST_IS_HEADER_VIEW_OBSERVER(observer));
+ ModestHeaderViewPrivate *priv;
+
+ g_return_if_fail (header_view && MODEST_IS_HEADER_VIEW(header_view));
+ g_return_if_fail (observer && MODEST_IS_HEADER_VIEW_OBSERVER(observer));
priv = MODEST_HEADER_VIEW_GET_PRIVATE(header_view);
modest_header_view_remove_observer(ModestHeaderView *header_view,
ModestHeaderViewObserver *observer)
{
- ModestHeaderViewPrivate *priv = NULL;
+ ModestHeaderViewPrivate *priv;
- g_assert(MODEST_IS_HEADER_VIEW(header_view));
- g_assert(observer != NULL);
- g_assert(MODEST_IS_HEADER_VIEW_OBSERVER(observer));
+ g_return_if_fail (header_view && MODEST_IS_HEADER_VIEW(header_view));
+ g_return_if_fail (observer && MODEST_IS_HEADER_VIEW_OBSERVER(observer));
priv = MODEST_HEADER_VIEW_GET_PRIVATE(header_view);
GSList *iter;
ModestHeaderViewObserver *observer;
- g_assert(MODEST_IS_HEADER_VIEW(header_view));
+ g_return_if_fail (header_view && MODEST_IS_HEADER_VIEW(header_view));
+
priv = MODEST_HEADER_VIEW_GET_PRIVATE(header_view);
g_mutex_lock(priv->observer_list_lock);