X-Git-Url: http://git.wpitchoune.net/gitweb/?a=blobdiff_plain;f=src%2Fui_tasktree.c;h=00dd1d39ec7cfdaa9342f55faf78f0bda8b0a604;hb=fdf70aa967f489ec5d2d32d286d99a63068d81e1;hp=6ca61a0380fc37a04bf80bf5a19c1d0d3bf461f2;hpb=2cf9ca6ed6eca3a02209f58ab86d663d7cfbf710;p=ptask.git diff --git a/src/ui_tasktree.c b/src/ui_tasktree.c index 6ca61a0..00dd1d3 100644 --- a/src/ui_tasktree.c +++ b/src/ui_tasktree.c @@ -27,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -46,6 +47,7 @@ static const char * const MENU_NAMES[] = { static GtkTreeView *w_treeview; static GtkMenu *w_menu; static struct task **current_tasks; +static gchar *search_keywords; enum { COL_ID, @@ -291,14 +293,18 @@ void ui_tasktree_set_selected_task(const char *uuid) } -void ui_tasktree_update(struct task **tasks, const char *prj_filter) +void ui_tasktree_update(struct task **tasks) { GtkTreeModel *model; struct task **tasks_cur; struct task *task; GtkTreeIter iter; - const char *prj; + const char *prj, *prj_filter; char *s; + gchar *desc; + int ok; + + prj_filter = ui_projecttree_get_project(); current_tasks = tasks; @@ -317,6 +323,22 @@ void ui_tasktree_update(struct task **tasks, const char *prj_filter) if (prj_filter && strcmp(prj, prj_filter)) continue; + if (search_keywords + && strlen(search_keywords) + && task->description) { + desc = g_ascii_strup(task->description, -1); + + if (strstr(desc, search_keywords)) + ok = 1; + else + ok = 0; + + free(desc); + + if (!ok) + continue; + } + gtk_list_store_append(GTK_LIST_STORE(model), &iter); gtk_list_store_set(GTK_LIST_STORE(model), @@ -372,11 +394,6 @@ void ui_tasktree_update(struct task **tasks, const char *prj_filter) } -void ui_tasktree_update_filter(const char *prj_filter) -{ - ui_tasktree_update(current_tasks, prj_filter); -} - gboolean tasktree_button_press_event_cbk(GtkWidget *widget, GdkEventButton *evt, gpointer data) @@ -428,3 +445,67 @@ void tasktree_visible_activate_cbk(GtkAction *action, gpointer data) gtk_tree_view_column_set_visible(w_cols[id], !b); } } + +void tasktree_done_activate_cbk(GtkAction *action, gpointer data) +{ + struct task *t; + + log_fct_enter(); + + t = ui_tasktree_get_selected_task(); + + if (t) { + tw_task_done(t->uuid); + refresh(); + } + + log_fct_exit(); +} + +void tasktree_start_activate_cbk(GtkAction *action, gpointer data) +{ + struct task *t; + + log_fct_enter(); + + t = ui_tasktree_get_selected_task(); + + if (t) { + tw_task_start(t->uuid); + refresh(); + } + + log_fct_exit(); +} + +void tasktree_stop_activate_cbk(GtkAction *action, gpointer data) +{ + struct task *t; + + log_fct_enter(); + + t = ui_tasktree_get_selected_task(); + + if (t) { + tw_task_stop(t->uuid); + refresh(); + } + + log_fct_exit(); +} + +void +ui_tasktree_search_changed_cbk(GtkEntry *entry, gchar *preedit, gpointer data) +{ + if (search_keywords) + g_free(search_keywords); + + search_keywords = g_ascii_strup(gtk_entry_get_text(entry), -1); + + ui_tasktree_update(current_tasks); +} + +void ui_tasktree_update_filter(const char *prj) +{ + ui_tasktree_update(current_tasks); +}