X-Git-Url: https://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Fui_projecttree.c;h=1bade0d532779b39e750cde4be0ae654fcccb01b;hb=64d52e239f715717646357783d01ff8650dbdb2d;hp=a17df32ee3433e79c58866160680c8411a4faec6;hpb=30a0f69b259de2ebc4b9a69121bda91a6be1e3b5;p=ptask.git diff --git a/src/ui_projecttree.c b/src/ui_projecttree.c index a17df32..1bade0d 100644 --- a/src/ui_projecttree.c +++ b/src/ui_projecttree.c @@ -1,5 +1,5 @@ /* - * Copyright (C) 2012-2013 jeanfi@gmail.com + * Copyright (C) 2012-2016 jeanfi@gmail.com * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as @@ -17,10 +17,12 @@ * 02110-1301 USA */ #include +#include #include #include #include +#include enum { COL_NAME, @@ -29,10 +31,28 @@ enum { static GtkTreeView *w_treeview; +static int cursor_changed_cbk(GtkTreeView *treeview, gpointer data) +{ + const char *prj; + + log_fct_enter(); + + prj = ui_projecttree_get_project(); + + ui_tasktree_update_filter(prj); + + log_fct_exit(); + + return FALSE; +} + void ui_projecttree_init(GtkBuilder *builder) { w_treeview = GTK_TREE_VIEW(gtk_builder_get_object(builder, "projecttree")); + g_signal_connect(w_treeview, + "cursor-changed", (GCallback)cursor_changed_cbk, + NULL); } const char *ui_projecttree_get_project() @@ -42,8 +62,9 @@ const char *ui_projecttree_get_project() GtkTreeIter iter; GtkTreeModel *model; GValue value = {0,}; + const char *prj; - log_debug("get_selected_project()"); + log_fct_enter(); gtk_tree_view_get_cursor(w_treeview, &path, &cols); @@ -52,10 +73,17 @@ const char *ui_projecttree_get_project() gtk_tree_model_get_iter(model, &iter, path); gtk_tree_model_get_value(model, &iter, COL_NAME, &value); - return g_value_get_string(&value); + prj = g_value_get_string(&value); + + if (!strcmp(prj, "ALL")) + prj = NULL; + } else { + prj = NULL; } - return NULL; + log_fct_exit(); + + return prj; } @@ -64,10 +92,15 @@ void ui_projecttree_update(struct task **ts) struct project **prjs, **cur; GtkTreeModel *model; GtkTreeIter iter; + GtkTreePath *p; + const char *current_prj; - log_debug("ui_projecttree_update()"); + log_fct_enter(); model = gtk_tree_view_get_model(GTK_TREE_VIEW(w_treeview)); + + current_prj = ui_projecttree_get_project(); + gtk_list_store_clear(GTK_LIST_STORE(model)); prjs = tw_get_projects(ts); @@ -79,8 +112,22 @@ void ui_projecttree_update(struct task **ts) COL_NAME, (*cur)->name, COL_COUNT, (*cur)->count, -1); + + if (current_prj) { + if (!strcmp((*cur)->name, current_prj)) { + p = gtk_tree_model_get_path(model, &iter); + if (p) { + gtk_tree_view_set_cursor(w_treeview, + p, + NULL, + FALSE); + } + } + } } tw_project_list_free(prjs); + + log_fct_exit(); }