refactoring
authorJean-Philippe Orsini <jeanfi@gmail.com>
Sat, 30 Nov 2013 11:01:40 +0000 (11:01 +0000)
committerJean-Philippe Orsini <jeanfi@gmail.com>
Sat, 30 Nov 2013 11:01:40 +0000 (11:01 +0000)
src/main.c
src/ui_taskpanel.c
src/ui_taskpanel.h

index 4a126d8..6abe9a6 100644 (file)
@@ -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;
 }
index b3389ba..a9ae93a 100644 (file)
  * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
  * 02110-1301 USA
  */
+#include <string.h>
+
 #include <log.h>
 #include <ui_taskpanel.h>
 
+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);
+       }
+}
+
index 1e68ea1..8e8c2cd 100644 (file)
@@ -21,6 +21,9 @@
 
 #include <gtk/gtk.h>
 
+#include <tw.h>
+
 void ui_taskpanel_init(GtkBuilder *);
+void ui_taskpanel_update(struct task *);
 
 #endif