From 392ae983c9ed6c1c74141c57ffb0502955964910 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Orsini Date: Mon, 25 Nov 2013 00:24:37 +0000 Subject: [PATCH] save/restore task sort col/order --- NEWS | 1 + src/ui.c | 33 ++++++++++++++++++++++++++++----- 2 files changed, 29 insertions(+), 5 deletions(-) diff --git a/NEWS b/NEWS index ae7ef61..f1b69ff 100644 --- a/NEWS +++ b/NEWS @@ -13,6 +13,7 @@ v0.0.4 * added taskwarrior version checking. * added support for taskwarrior 2.2.0 (avoid confirmation query). * added window position and size restore. + * added tasks sort column/order restore. v0.0.3 ------ diff --git a/src/ui.c b/src/ui.c index a63288b..83e9876 100644 --- a/src/ui.c +++ b/src/ui.c @@ -20,9 +20,23 @@ #include #include +static GtkTreeView *w_treeview; + static void save_settings(GtkWindow *window, GSettings *settings) { - int w, h, x, y; + int w, h, x, y, sort_col_id; + GtkTreeSortable *model; + GtkSortType sort_order; + + model = GTK_TREE_SORTABLE(gtk_tree_view_get_model(GTK_TREE_VIEW(w_treeview))); + gtk_tree_sortable_get_sort_column_id(model, + &sort_col_id, + &sort_order); + log_debug("save_settings(): sort_col_id=%d", sort_col_id); + log_debug("save_settings(): sort_col_order=%d", sort_order); + + g_settings_set_int(settings, "tasks-sort-col", sort_col_id); + g_settings_set_int(settings, "tasks-sort-order", sort_order); gtk_window_get_size(window, &w, &h); gtk_window_get_position(window, &x, &y); @@ -51,21 +65,30 @@ static gboolean delete_event_cbk(GtkWidget *w, GdkEvent *evt, gpointer data) GtkWindow *create_window(GtkBuilder *builder, GSettings *settings) { GtkWindow *window; - int x, y, h, w; + int x, y, h, w, sort_col_id; + GtkSortType sort_order; + GtkTreeSortable *model; window = GTK_WINDOW(gtk_builder_get_object(builder, "window")); - x = g_settings_get_int(settings, "window-x"); - y = g_settings_get_int(settings, "window-y"); w = g_settings_get_int(settings, "window-width"); h = g_settings_get_int(settings, "window-height"); - gtk_window_set_default_size(window, w, h); + + x = g_settings_get_int(settings, "window-x"); + y = g_settings_get_int(settings, "window-y"); gtk_window_move(window, x, y); g_signal_connect(window, "delete_event", G_CALLBACK(delete_event_cbk), settings); + w_treeview = GTK_TREE_VIEW(gtk_builder_get_object(builder, "treeview")); + + sort_col_id = g_settings_get_int(settings, "tasks-sort-col"); + sort_order = g_settings_get_int(settings, "tasks-sort-order"); + model = GTK_TREE_SORTABLE(gtk_tree_view_get_model(GTK_TREE_VIEW(w_treeview))); + gtk_tree_sortable_set_sort_column_id(model, sort_col_id, sort_order); + return window; } -- 2.7.4