g_cclosure_marshal_VOID__POINTER,
G_TYPE_NONE, 1, G_TYPE_POINTER);
}
-
+
+
+
+static void
+map_folder_text (GtkTreeViewColumn *column, GtkCellRenderer *renderer,
+ GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data)
+{
+ GObject *rendobj;
+ gchar *fname;
+ guint unread;
+
+ gtk_tree_model_get (tree_model, iter,
+ TNY_ACCOUNT_TREE_MODEL_NAME_COLUMN, &fname,
+ TNY_ACCOUNT_TREE_MODEL_UNREAD_COLUMN, &unread, -1);
+ rendobj = G_OBJECT(renderer);
+
+ /* folders with unread messages are bold and with (%d) */
+ if (unread > 0) {
+ gchar *name_number = g_strdup_printf ("%s (%d)", fname, unread);
+ g_object_set (rendobj, "text", name_number, NULL);
+ g_free (name_number);
+ g_object_set (rendobj, "weight", 800, NULL);
+ } else
+ g_object_set (rendobj, "weight", 400, NULL); /* default, non-bold */
+
+
+ g_free (fname);
+}
+
+
+
static void
modest_tny_folder_tree_view_init (ModestTnyFolderTreeView *obj)
{
renderer,"text",
TNY_ACCOUNT_TREE_MODEL_NAME_COLUMN,
NULL);
+ gtk_tree_view_column_set_cell_data_func(column, renderer, map_folder_text, NULL, NULL);
gtk_tree_view_column_set_resizable (column, TRUE);
gtk_tree_view_append_column (GTK_TREE_VIEW(obj), column);
&folder, -1);
/* folder will not be defined if you click eg. on the root node */
- if (folder) {
+ if (folder)
g_signal_emit (G_OBJECT(tree_view), signals[FOLDER_SELECTED_SIGNAL], 0,
folder);
- }
}
}
static void
-map_flags (GtkTreeViewColumn *column, GtkCellRenderer *renderer,
+map_header_icon (GtkTreeViewColumn *column, GtkCellRenderer *renderer,
GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data)
{
- gint flags;
+ TnyMsgHeaderFlags flags;
static gchar txt[10];
gtk_tree_model_get (tree_model, iter, TNY_MSG_HEADER_LIST_MODEL_FLAGS_COLUMN, &flags, -1);
g_object_set (G_OBJECT (renderer), "text", txt, NULL);
}
+
+static void
+map_header_text (GtkTreeViewColumn *column, GtkCellRenderer *renderer,
+ GtkTreeModel *tree_model, GtkTreeIter *iter, gpointer data)
+{
+ GObject *rendobj;
+ TnyMsgHeaderFlags flags;
+
+ gtk_tree_model_get (tree_model, iter, TNY_MSG_HEADER_LIST_MODEL_FLAGS_COLUMN,
+ &flags, -1);
+ rendobj = G_OBJECT(renderer);
+
+ if (!(flags & TNY_MSG_HEADER_FLAG_SEEN))
+ g_object_set (rendobj, "weight", 800, NULL);
+ else
+ g_object_set (rendobj, "weight", 400, NULL); /* default, non-bold */
+}
+
+
static void
modest_tny_header_tree_view_init (ModestTnyHeaderTreeView *obj)
{
GtkTreeViewColumn *column;
- GtkCellRenderer *renderer = gtk_cell_renderer_text_new ();
- GtkCellRenderer *renderer_toggle = gtk_cell_renderer_toggle_new ();
- ModestTnyHeaderTreeViewPrivate *priv;
+ GtkCellRenderer *renderer_icon, *renderer_header;
+
+ ModestTnyHeaderTreeViewPrivate *priv;
priv = MODEST_TNY_HEADER_TREE_VIEW_GET_PRIVATE(obj);
+ renderer_icon = gtk_cell_renderer_text_new (); /* TODO */
+ renderer_header = gtk_cell_renderer_text_new ();
+
priv->tny_msg_folder = NULL;
priv->header_tree_model = NULL;
-
- column = gtk_tree_view_column_new_with_attributes(_("F"), renderer, NULL);
+
+ /* flags */
+ column = gtk_tree_view_column_new_with_attributes(_("F"), renderer_icon, NULL);
gtk_tree_view_column_set_resizable (column, TRUE);
gtk_tree_view_column_set_sort_column_id (column, TNY_MSG_HEADER_LIST_MODEL_FLAGS_COLUMN);
gtk_tree_view_column_set_sort_indicator (column, FALSE);
gtk_tree_view_append_column (GTK_TREE_VIEW(obj), column);
- gtk_tree_view_column_set_cell_data_func(column, renderer, map_flags, NULL, NULL);
-
- renderer = gtk_cell_renderer_text_new ();
- column = gtk_tree_view_column_new_with_attributes(_("Date"), renderer,
+ gtk_tree_view_column_set_cell_data_func(column, renderer_icon, map_header_icon, NULL, NULL);
+
+ /* date */
+ column = gtk_tree_view_column_new_with_attributes(_("Date"), renderer_header,
"text",
TNY_MSG_HEADER_LIST_MODEL_DATE_RECEIVED_COLUMN,
NULL);
gtk_tree_view_column_set_sort_column_id (column, TNY_MSG_HEADER_LIST_MODEL_DATE_RECEIVED_COLUMN);
gtk_tree_view_column_set_sort_indicator (column, TRUE);
gtk_tree_view_append_column (GTK_TREE_VIEW(obj), column);
+ gtk_tree_view_column_set_cell_data_func(column, renderer_header, map_header_text, NULL, NULL);
g_signal_connect (G_OBJECT (column), "clicked", G_CALLBACK (column_clicked), obj);
-
-
- column = gtk_tree_view_column_new_with_attributes(_("From"), renderer,
+
+ /* from */
+ column = gtk_tree_view_column_new_with_attributes(_("From"), renderer_header,
"text",
TNY_MSG_HEADER_LIST_MODEL_FROM_COLUMN,
NULL);
gtk_tree_view_column_set_sort_column_id (column, TNY_MSG_HEADER_LIST_MODEL_FROM_COLUMN);
gtk_tree_view_column_set_sort_indicator (column, TRUE);
gtk_tree_view_append_column (GTK_TREE_VIEW(obj), column);
+ gtk_tree_view_column_set_cell_data_func(column, renderer_header, map_header_text, NULL, NULL);
g_signal_connect (G_OBJECT (column), "clicked", G_CALLBACK (column_clicked), obj);
- column = gtk_tree_view_column_new_with_attributes(_("Subject"), renderer,
+ /* subject */
+ column = gtk_tree_view_column_new_with_attributes(_("Subject"), renderer_header,
"text",
TNY_MSG_HEADER_LIST_MODEL_SUBJECT_COLUMN,
NULL);
gtk_tree_view_append_column (GTK_TREE_VIEW(obj), column);
g_signal_connect (G_OBJECT (column), "clicked", G_CALLBACK (column_clicked), obj);
+
+ /* all cols */
gtk_tree_view_set_headers_visible (GTK_TREE_VIEW(obj), TRUE);
gtk_tree_view_set_headers_clickable (GTK_TREE_VIEW(obj), TRUE);
+ gtk_tree_view_column_set_cell_data_func(column, renderer_header, map_header_text, NULL, NULL);
+
gtk_tree_view_set_rules_hint (GTK_TREE_VIEW(obj), TRUE); /* alternating row colors */
}
&header, -1);
if (header) {
+ TnyMsgHeaderFlags flags;
const TnyMsgIface *msg;
const TnyMsgFolderIface *folder;
if (!msg)
g_message ("cannot find msg");
}
+
+ /* mark message as seen; _set_flags crashes, bug in tinymail? */
+ //flags = tny_msg_header_iface_get_flags (TNY_MSG_HEADER_IFACE(header));
+ //tny_msg_header_iface_set_flags (header, flags | TNY_MSG_HEADER_FLAG_SEEN);
+
g_signal_emit (G_OBJECT(tree_view), signals[MESSAGE_SELECTED_SIGNAL], 0,
msg);
}
}
static void
-column_clicked (GtkTreeViewColumn *treeviewcolumn, gpointer user_data)
+column_clicked (GtkTreeViewColumn *col, gpointer user_data)
{
- GtkTreeView *treeview = GTK_TREE_VIEW (user_data);
+ GtkTreeView *treeview;
gint id;
-
- id = gtk_tree_view_column_get_sort_column_id (treeviewcolumn);
+
+ treeview = GTK_TREE_VIEW (user_data);
+ id = gtk_tree_view_column_get_sort_column_id (col);
gtk_tree_view_set_search_column (treeview, id);
}