From fc7ac55e4b2f234a5a998fb2082772c4a4c1e900 Mon Sep 17 00:00:00 2001 From: Jean-Philippe Orsini Date: Sat, 30 Nov 2013 11:01:40 +0000 Subject: [PATCH] refactoring --- src/main.c | 71 ++------------------------------------- src/ui_taskpanel.c | 99 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ src/ui_taskpanel.h | 3 ++ 3 files changed, 104 insertions(+), 69 deletions(-) diff --git a/src/main.c b/src/main.c index 4a126d8..6abe9a6 100644 --- a/src/main.c +++ b/src/main.c @@ -130,27 +130,6 @@ static struct task *get_selected_task(GtkTreeView *treeview) return NULL; } -static void clear_task_panel() -{ - GtkTextBuffer *buf; - - gtk_widget_set_sensitive(w_tasksave_btn, 0); - gtk_widget_set_sensitive(w_taskdone_btn, 0); - - buf = gtk_text_view_get_buffer(w_note); - gtk_text_buffer_set_text(buf, "", 0); - gtk_widget_set_sensitive(GTK_WIDGET(w_note), 0); - - gtk_entry_set_text(w_description, ""); - gtk_widget_set_sensitive(GTK_WIDGET(w_description), 0); - - gtk_entry_set_text(w_project, ""); - gtk_widget_set_sensitive(GTK_WIDGET(w_project), 0); - - gtk_combo_box_set_active(w_priority, 0); - gtk_widget_set_sensitive(GTK_WIDGET(w_priority), 0); -} - void refresh() { GtkWidget *dialog; @@ -163,7 +142,7 @@ void refresh() const char *project; log_fct_enter(); - clear_task_panel(); + ui_taskpanel_update(NULL); status = gtk_combo_box_get_active(w_status); log_debug("status: %d", status); @@ -305,61 +284,15 @@ static int status_changed_cbk(GtkComboBox *w, gpointer data) return FALSE; } -static int priority_to_int(const char *str) -{ - switch (*str) { - case 'H': - return 3; - case 'M': - return 2; - case 'L': - return 1; - default: - return 0; - } -} - static int cursor_changed_cbk(GtkTreeView *treeview, gpointer data) { struct task *task; - GtkTextBuffer *buf; - int priority; log_debug("cursor_changed_cbk"); task = get_selected_task(treeview); - if (task) { - - buf = gtk_text_view_get_buffer(w_note); - if (task->note) - gtk_text_buffer_set_text(buf, - task->note, - strlen(task->note)); - else - gtk_text_buffer_set_text(buf, "", 0); - gtk_widget_set_sensitive(GTK_WIDGET(w_note), 1); - - gtk_entry_set_text(w_description, task->description); - gtk_widget_set_sensitive(GTK_WIDGET(w_description), 1); - - if (task->project) - gtk_entry_set_text(w_project, task->project); - else - gtk_entry_set_text(w_project, ""); - gtk_widget_set_sensitive(GTK_WIDGET(w_project), 1); - - gtk_widget_set_sensitive(w_tasksave_btn, 1); - gtk_widget_set_sensitive(w_taskdone_btn, 1); - - gtk_widget_set_sensitive(GTK_WIDGET(w_priority), 1); - priority = priority_to_int(task->priority); - gtk_combo_box_set_active(w_priority, priority); - } else { - log_debug("clear task widgets"); - clear_task_panel(); - log_debug("clear task widgets done"); - } + ui_taskpanel_update(task); return FALSE; } diff --git a/src/ui_taskpanel.c b/src/ui_taskpanel.c index b3389ba..a9ae93a 100644 --- a/src/ui_taskpanel.c +++ b/src/ui_taskpanel.c @@ -16,11 +16,110 @@ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA * 02110-1301 USA */ +#include + #include #include +static GtkTextView *w_note; +static GtkEntry *w_description; +static GtkEntry *w_project; +static GtkComboBox *w_priority; +static GtkButton *w_tasksave_btn; +static GtkButton *w_taskdone_btn; +static GtkButton *w_taskcancel_btn; + +static void enable(int enable) +{ + GtkTextBuffer *buf; + + gtk_widget_set_sensitive(GTK_WIDGET(w_tasksave_btn), enable); + gtk_widget_set_sensitive(GTK_WIDGET(w_taskdone_btn), enable); + gtk_widget_set_sensitive(GTK_WIDGET(w_taskcancel_btn), enable); + + buf = gtk_text_view_get_buffer(w_note); + if (!enable) + gtk_text_buffer_set_text(buf, "", 0); + gtk_widget_set_sensitive(GTK_WIDGET(w_note), enable); + + if (!enable) + gtk_entry_set_text(w_description, ""); + gtk_widget_set_sensitive(GTK_WIDGET(w_description), enable); + + if (!enable) + gtk_entry_set_text(w_project, ""); + gtk_widget_set_sensitive(GTK_WIDGET(w_project), enable); + + if (!enable) + gtk_combo_box_set_active(w_priority, 0); + gtk_widget_set_sensitive(GTK_WIDGET(w_priority), enable); +} + void ui_taskpanel_init(GtkBuilder *builder) { log_fct(__func__, "ENTER"); + + w_note = GTK_TEXT_VIEW(gtk_builder_get_object(builder, "tasknote")); + + w_description = GTK_ENTRY(gtk_builder_get_object(builder, + "taskdescription")); + w_project = GTK_ENTRY(gtk_builder_get_object(builder, "taskproject")); + w_priority = GTK_COMBO_BOX(gtk_builder_get_object(builder, + "taskpriority")); + + w_tasksave_btn = GTK_BUTTON(gtk_builder_get_object(builder, + "tasksave")); + w_taskdone_btn = GTK_BUTTON(gtk_builder_get_object(builder, + "taskdone")); + w_taskcancel_btn = GTK_BUTTON(gtk_builder_get_object(builder, + "taskcancel")); + + enable(0); + log_fct(__func__, "EXIT"); } + +static int priority_to_int(const char *str) +{ + switch (*str) { + case 'H': + return 3; + case 'M': + return 2; + case 'L': + return 1; + default: + return 0; + } +} + +void ui_taskpanel_update(struct task *task) +{ + GtkTextBuffer *buf; + int priority; + + if (task) { + buf = gtk_text_view_get_buffer(w_note); + if (task->note) + gtk_text_buffer_set_text(buf, + task->note, + strlen(task->note)); + else + gtk_text_buffer_set_text(buf, "", 0); + + gtk_entry_set_text(w_description, task->description); + + if (task->project) + gtk_entry_set_text(w_project, task->project); + else + gtk_entry_set_text(w_project, ""); + + priority = priority_to_int(task->priority); + gtk_combo_box_set_active(w_priority, priority); + + enable(1); + } else { + enable(0); + } +} + diff --git a/src/ui_taskpanel.h b/src/ui_taskpanel.h index 1e68ea1..8e8c2cd 100644 --- a/src/ui_taskpanel.h +++ b/src/ui_taskpanel.h @@ -21,6 +21,9 @@ #include +#include + void ui_taskpanel_init(GtkBuilder *); +void ui_taskpanel_update(struct task *); #endif -- 2.7.4