From fdcb3dcc374b3cb61d7d2f207c03ea5ee9116cdd Mon Sep 17 00:00:00 2001 From: Jean-Philippe Orsini Date: Sat, 30 Nov 2013 22:46:52 +0000 Subject: [PATCH] refactoring --- src/main.c | 38 +++++--------------------------------- src/ui_tasktree.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++ src/ui_tasktree.h | 4 ++++ 3 files changed, 59 insertions(+), 33 deletions(-) diff --git a/src/main.c b/src/main.c index 6411492..757ac46 100644 --- a/src/main.c +++ b/src/main.c @@ -92,37 +92,6 @@ static void print_help() printf(_("%s home page: <%s>\n"), PACKAGE_NAME, PACKAGE_URL); } -static struct task *get_selected_task(GtkTreeView *treeview) -{ - GtkTreePath *path; - GtkTreeViewColumn *cols; - struct task **tasks_cur; - GtkTreeIter iter; - GtkTreeModel *model; - GValue value = {0,}; - const char *uuid; - - log_debug("get_selected_task"); - - gtk_tree_view_get_cursor(treeview, &path, &cols); - - if (path) { - model = gtk_tree_view_get_model(GTK_TREE_VIEW(treeview)); - gtk_tree_model_get_iter(model, &iter, path); - gtk_tree_model_get_value(model, &iter, COL_UUID, &value); - - uuid = g_value_get_string(&value); - - for (tasks_cur = tasks; *tasks_cur; tasks_cur++) - if (!strcmp((*tasks_cur)->uuid, uuid)) - return *tasks_cur; - - gtk_tree_path_free(path); - } - - return NULL; -} - void refresh() { GtkWidget *dialog; @@ -136,8 +105,10 @@ void refresh() log_fct_enter(); ui_taskpanel_update(NULL); - if (tasks) + if (tasks) { + ui_tasktree_update(NULL); tw_task_list_free(tasks); + } tasks = tw_get_all_tasks(ui_get_status_filter()); @@ -166,6 +137,7 @@ void refresh() -1); } ui_projecttree_update(tasks); + ui_tasktree_update(tasks); } else { dialog = gtk_message_dialog_new(NULL, GTK_DIALOG_DESTROY_WITH_PARENT, @@ -184,7 +156,7 @@ static int cursor_changed_cbk(GtkTreeView *treeview, gpointer data) { log_fct_enter(); - ui_taskpanel_update(get_selected_task(treeview)); + ui_taskpanel_update(ui_tasktree_get_selected_task()); log_fct_exit(); diff --git a/src/ui_tasktree.c b/src/ui_tasktree.c index c1789f3..16707db 100644 --- a/src/ui_tasktree.c +++ b/src/ui_tasktree.c @@ -16,11 +16,15 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA */ +#include + #include #include +#include static GtkTreeView *w_treeview; +static struct task **current_tasks; enum { COL_ID, @@ -112,3 +116,49 @@ void ui_tasktree_save_settings(GSettings *settings) g_settings_set_int(settings, "tasks-sort-col", sort_col_id); g_settings_set_int(settings, "tasks-sort-order", sort_order); } + + +struct task *ui_tasktree_get_selected_task() +{ + GtkTreePath *path; + GtkTreeViewColumn *cols; + struct task **tasks_cur, *result; + GtkTreeIter iter; + GtkTreeModel *model; + GValue value = {0,}; + const char *uuid; + + log_fct_enter(); + + result = NULL; + + if (current_tasks) { + gtk_tree_view_get_cursor(w_treeview, &path, &cols); + + if (path) { + model = gtk_tree_view_get_model(w_treeview); + gtk_tree_model_get_iter(model, &iter, path); + gtk_tree_model_get_value(model, + &iter, + COL_UUID, + &value); + + uuid = g_value_get_string(&value); + + for (tasks_cur = current_tasks; *tasks_cur; tasks_cur++) + if (!strcmp((*tasks_cur)->uuid, uuid)) + result = *tasks_cur; + + gtk_tree_path_free(path); + } + } + + log_fct_exit(); + + return result; +} + +void ui_tasktree_update(struct task **tasks) +{ + current_tasks = tasks; +} diff --git a/src/ui_tasktree.h b/src/ui_tasktree.h index 3db5e44..b08877a 100644 --- a/src/ui_tasktree.h +++ b/src/ui_tasktree.h @@ -21,8 +21,12 @@ #include +#include + void ui_tasktree_init(GtkBuilder *); void ui_tasktree_load_settings(GSettings *); void ui_tasktree_save_settings(GSettings *); +struct task *ui_tasktree_get_selected_task(); +void ui_tasktree_update(struct task **); #endif -- 2.7.4