refactoring
authorJean-Philippe Orsini <jeanfi@gmail.com>
Sat, 30 Nov 2013 22:46:52 +0000 (22:46 +0000)
committerJean-Philippe Orsini <jeanfi@gmail.com>
Sat, 30 Nov 2013 22:46:52 +0000 (22:46 +0000)
src/main.c
src/ui_tasktree.c
src/ui_tasktree.h

index 6411492..757ac46 100644 (file)
@@ -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();
 
index c1789f3..16707db 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  * 02110-1301 USA
  */
+#include <string.h>
+
 #include <gtk/gtk.h>
 
 #include <log.h>
+#include <ui_tasktree.h>
 
 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;
+}
index 3db5e44..b08877a 100644 (file)
 
 #include <gtk/gtk.h>
 
+#include <tw.h>
+
 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