2 * Copyright (C) 2012-2013 jeanfi@gmail.com
4 * This program is free software; you can redistribute it and/or
5 * modify it under the terms of the GNU General Public License as
6 * published by the Free Software Foundation; either version 2 of the
7 * License, or (at your option) any later version.
9 * This program is distributed in the hope that it will be useful, but
10 * WITHOUT ANY WARRANTY; without even the implied warranty of
11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
12 * General Public License for more details.
14 * You should have received a copy of the GNU General Public License
15 * along with this program; if not, write to the Free Software
16 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
25 #include <ui_taskpanel.h>
27 static GtkTextView *w_note;
28 static GtkEntry *w_description;
29 static GtkEntry *w_project;
30 static GtkComboBox *w_priority;
31 static GtkButton *w_tasksave_btn;
32 static GtkButton *w_taskremove_btn;
33 static GtkButton *w_taskdone_btn;
34 static GtkButton *w_taskcancel_btn;
36 static struct task *current_task;
38 static void enable(int enable)
42 gtk_widget_set_sensitive(GTK_WIDGET(w_tasksave_btn), enable);
43 gtk_widget_set_sensitive(GTK_WIDGET(w_taskdone_btn), enable);
44 gtk_widget_set_sensitive(GTK_WIDGET(w_taskremove_btn), enable);
45 gtk_widget_set_sensitive(GTK_WIDGET(w_taskcancel_btn), enable);
47 buf = gtk_text_view_get_buffer(w_note);
49 gtk_text_buffer_set_text(buf, "", 0);
50 gtk_widget_set_sensitive(GTK_WIDGET(w_note), enable);
53 gtk_entry_set_text(w_description, "");
54 gtk_widget_set_sensitive(GTK_WIDGET(w_description), enable);
57 gtk_entry_set_text(w_project, "");
58 gtk_widget_set_sensitive(GTK_WIDGET(w_project), enable);
61 gtk_combo_box_set_active(w_priority, 0);
62 gtk_widget_set_sensitive(GTK_WIDGET(w_priority), enable);
65 static int tasksave_clicked_cbk(GtkButton *btn, gpointer data)
70 GtkTextIter sIter, eIter;
78 log_fct("%d", task->id);
80 buf = gtk_text_view_get_buffer(w_note);
82 gtk_text_buffer_get_iter_at_offset(buf, &sIter, 0);
83 gtk_text_buffer_get_iter_at_offset(buf, &eIter, -1);
84 txt = gtk_text_buffer_get_text(buf, &sIter, &eIter, TRUE);
86 log_debug("note=%s", txt);
88 if (!task->note || strcmp(txt, task->note))
89 note_put(task->uuid, txt);
91 ctxt = gtk_entry_get_text(w_description);
92 if (!task->description || strcmp(ctxt, task->description))
93 tw_modify_description(task->uuid, ctxt);
95 ctxt = gtk_entry_get_text(w_project);
96 if (!task->project || strcmp(ctxt, task->project))
97 tw_modify_project(task->uuid, ctxt);
99 priority = gtk_combo_box_get_active(w_priority);
100 log_debug("priority: %d", priority);
116 if (strcmp(task->priority, pri))
117 tw_modify_priority(task->uuid, pri);
124 void ui_taskpanel_init(GtkBuilder *builder)
128 w_note = GTK_TEXT_VIEW(gtk_builder_get_object(builder, "tasknote"));
130 w_description = GTK_ENTRY(gtk_builder_get_object(builder,
132 w_project = GTK_ENTRY(gtk_builder_get_object(builder, "taskproject"));
133 w_priority = GTK_COMBO_BOX(gtk_builder_get_object(builder,
136 w_tasksave_btn = GTK_BUTTON(gtk_builder_get_object(builder,
138 w_taskremove_btn = GTK_BUTTON(gtk_builder_get_object(builder,
141 g_signal_connect(w_tasksave_btn,
143 (GCallback)tasksave_clicked_cbk,
146 w_taskdone_btn = GTK_BUTTON(gtk_builder_get_object(builder,
148 w_taskcancel_btn = GTK_BUTTON(gtk_builder_get_object(builder,
156 static int priority_to_int(const char *str)
170 void ui_taskpanel_update(struct task *task)
178 buf = gtk_text_view_get_buffer(w_note);
180 gtk_text_buffer_set_text(buf,
184 gtk_text_buffer_set_text(buf, "", 0);
186 gtk_entry_set_text(w_description, task->description);
189 gtk_entry_set_text(w_project, task->project);
191 gtk_entry_set_text(w_project, "");
193 priority = priority_to_int(task->priority);
194 gtk_combo_box_set_active(w_priority, priority);
203 int taskdone_clicked_cbk(GtkButton *btn, gpointer data)
206 tw_done(current_task->uuid);
213 int taskremove_clicked_cbk(GtkButton *btn, gpointer data)
218 log_fct("uuid=%d", current_task->uuid);
219 tw_task_remove(current_task->uuid);
228 int taskpanel_cancel_clicked_cbk(GtkButton *btn, gpointer data)
232 ui_taskpanel_update(current_task);