* mug-msg-list-view.c: fix column sizing and ordering

This commit is contained in:
Dirk-Jan C. Binnema
2010-11-03 21:46:46 +02:00
parent 533c27246a
commit 9902137ddf
2 changed files with 33 additions and 17 deletions

View File

@ -1,6 +1,6 @@
* todo for mug * todo for mug
- [ ] column sizing - [X] column sizing
- [X] query in status bar - [X] query in status bar
- [ ] tool bar working - [ ] tool bar working
- [ ] pretty-print addresses - [ ] pretty-print addresses
@ -14,9 +14,10 @@
- [X] clear msg when starting new query - [X] clear msg when starting new query
- [X] focus search bar at startup - [X] focus search bar at startup
- [X] focus first msg after query - [X] focus first msg after query
- [ ] sorting for columns - [X] sorting for columns
- [ ] add about menu - [ ] add about menu
- [X] make scrollbars automatic - [X] make scrollbars automatic
- [ ] progress-bar, incremental
# Local Variables: # Local Variables:
# mode: org; org-startup-folded: t # mode: org; org-startup-folded: t

View File

@ -128,7 +128,7 @@ on_cursor_changed (GtkTreeView *tview, MugMsgListView *lst)
} }
static GtkTreeViewColumn * static GtkTreeViewColumn *
get_col (const char* label, int colidx) get_col (const char* label, int colidx, gint maxwidth)
{ {
GtkTreeViewColumn *col; GtkTreeViewColumn *col;
GtkCellRenderer *renderer; GtkCellRenderer *renderer;
@ -139,9 +139,19 @@ get_col (const char* label, int colidx)
col = gtk_tree_view_column_new_with_attributes (label, renderer, "text", col = gtk_tree_view_column_new_with_attributes (label, renderer, "text",
colidx, NULL); colidx, NULL);
g_object_set (G_OBJECT(col), "resizable", TRUE, NULL); g_object_set (G_OBJECT(col), "resizable", TRUE, NULL);
//g_object_unref (renderer);
gtk_tree_view_column_set_sort_indicator (col, TRUE);
gtk_tree_view_column_set_sort_column_id (col, colidx);
if (maxwidth) {
gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_FIXED);
gtk_tree_view_column_set_fixed_width (col, maxwidth);
gtk_tree_view_column_set_expand (col, FALSE);
} else {
gtk_tree_view_column_set_sizing (col, GTK_TREE_VIEW_COLUMN_GROW_ONLY);
gtk_tree_view_column_set_expand (col, TRUE);
}
return col; return col;
} }
@ -155,8 +165,7 @@ mug_msg_list_view_init (MugMsgListView *obj)
priv = MUG_MSG_LIST_VIEW_GET_PRIVATE(obj); priv = MUG_MSG_LIST_VIEW_GET_PRIVATE(obj);
priv->_xpath = NULL; priv->_xpath = priv->_query = NULL;
priv->_query = NULL;
priv->_store = gtk_list_store_new (MUG_N_COLS, priv->_store = gtk_list_store_new (MUG_N_COLS,
G_TYPE_STRING, G_TYPE_STRING,
@ -173,17 +182,16 @@ mug_msg_list_view_init (MugMsgListView *obj)
GTK_TREE_VIEW_GRID_LINES_VERTICAL); GTK_TREE_VIEW_GRID_LINES_VERTICAL);
gtk_tree_view_set_rules_hint (GTK_TREE_VIEW(obj), TRUE); gtk_tree_view_set_rules_hint (GTK_TREE_VIEW(obj), TRUE);
col = get_col ("Date", MUG_COL_DATE, 80);
col = get_col ("Date", MUG_COL_DATE);
gtk_tree_view_append_column (GTK_TREE_VIEW (obj), col); gtk_tree_view_append_column (GTK_TREE_VIEW (obj), col);
col = get_col ("From", MUG_COL_FROM); col = get_col ("From", MUG_COL_FROM, 0);
gtk_tree_view_append_column (GTK_TREE_VIEW (obj), col); gtk_tree_view_append_column (GTK_TREE_VIEW (obj), col);
col = get_col ("To", MUG_COL_TO); col = get_col ("To", MUG_COL_TO, 0);
gtk_tree_view_append_column (GTK_TREE_VIEW (obj), col); gtk_tree_view_append_column (GTK_TREE_VIEW (obj), col);
col = get_col ("Subject", MUG_COL_SUBJECT); col = get_col ("Subject", MUG_COL_SUBJECT, 0);
gtk_tree_view_append_column (GTK_TREE_VIEW (obj), col); gtk_tree_view_append_column (GTK_TREE_VIEW (obj), col);
g_signal_connect (G_OBJECT(obj), "cursor-changed", G_CALLBACK(on_cursor_changed), g_signal_connect (G_OBJECT(obj), "cursor-changed", G_CALLBACK(on_cursor_changed),
@ -303,7 +311,8 @@ update_model (GtkListStore *store, const char *xpath, const char *query)
GtkTreeIter treeiter; GtkTreeIter treeiter;
const gchar *date, *from, *subject, *path, *to; const gchar *date, *from, *subject, *path, *to;
date = mu_msg_str_date_s ("%x", mu_msg_iter_get_date (iter)); date = mu_msg_str_date_s ("%x",
mu_msg_iter_get_date (iter));
from = mu_msg_iter_get_from(iter); from = mu_msg_iter_get_from(iter);
to = mu_msg_iter_get_to (iter); to = mu_msg_iter_get_to (iter);
subject = mu_msg_iter_get_subject (iter); subject = mu_msg_iter_get_subject (iter);
@ -328,6 +337,8 @@ int
mug_msg_list_view_query (MugMsgListView *self, const char *query) mug_msg_list_view_query (MugMsgListView *self, const char *query)
{ {
MugMsgListViewPrivate *priv; MugMsgListViewPrivate *priv;
gboolean rv;
g_return_val_if_fail (MUG_IS_MSG_LIST_VIEW(self), FALSE); g_return_val_if_fail (MUG_IS_MSG_LIST_VIEW(self), FALSE);
priv = MUG_MSG_LIST_VIEW_GET_PRIVATE(self); priv = MUG_MSG_LIST_VIEW_GET_PRIVATE(self);
@ -339,7 +350,11 @@ mug_msg_list_view_query (MugMsgListView *self, const char *query)
if (!query) if (!query)
return TRUE; return TRUE;
return update_model (priv->_store, priv->_xpath, query); rv = update_model (priv->_store, priv->_xpath, query);
gtk_tree_view_columns_autosize (GTK_TREE_VIEW(self));
return rv;
} }