avoid removal of recurrent task due to TW-638 bug of taskwarrior
[ptask.git] / src / ui_taskpanel.c
index f6c27cf..d243391 100644 (file)
@@ -29,6 +29,7 @@ static GtkEntry *w_description;
 static GtkEntry *w_project;
 static GtkComboBox *w_priority;
 static GtkButton *w_tasksave_btn;
+static GtkButton *w_taskremove_btn;
 static GtkButton *w_taskdone_btn;
 static GtkButton *w_taskcancel_btn;
 
@@ -40,6 +41,19 @@ static void enable(int enable)
 
        gtk_widget_set_sensitive(GTK_WIDGET(w_tasksave_btn), enable);
        gtk_widget_set_sensitive(GTK_WIDGET(w_taskdone_btn), enable);
+
+       if (current_task && current_task->recur) {
+               gtk_widget_set_sensitive(GTK_WIDGET(w_taskremove_btn), FALSE);
+               gtk_widget_set_tooltip_text
+                       (w_taskremove_btn,
+                        "The removal of recurrent tasks is not supported due "
+                        "to the taskwarrior bug TW-638");
+               gtk_widget_set_has_tooltip(w_taskremove_btn, TRUE);
+       } else {
+               gtk_widget_set_sensitive(GTK_WIDGET(w_taskremove_btn), enable);
+               gtk_widget_set_has_tooltip(w_taskremove_btn, FALSE);
+       }
+
        gtk_widget_set_sensitive(GTK_WIDGET(w_taskcancel_btn), enable);
 
        buf = gtk_text_view_get_buffer(w_note);
@@ -73,7 +87,7 @@ static int tasksave_clicked_cbk(GtkButton *btn, gpointer data)
 
        task = current_task;
 
-       log_fct(__func__, "%d", task->id);
+       log_fct("%d", task->id);
 
        buf = gtk_text_view_get_buffer(w_note);
 
@@ -121,7 +135,7 @@ static int tasksave_clicked_cbk(GtkButton *btn, gpointer data)
 
 void ui_taskpanel_init(GtkBuilder *builder)
 {
-       log_fct(__func__, "ENTER");
+       log_fct("ENTER");
 
        w_note = GTK_TEXT_VIEW(gtk_builder_get_object(builder, "tasknote"));
 
@@ -133,9 +147,12 @@ void ui_taskpanel_init(GtkBuilder *builder)
 
        w_tasksave_btn = GTK_BUTTON(gtk_builder_get_object(builder,
                                                           "tasksave"));
-       g_signal_connect(w_tasksave_btn, 
-                        "clicked", 
-                        (GCallback)tasksave_clicked_cbk, 
+       w_taskremove_btn = GTK_BUTTON(gtk_builder_get_object(builder,
+                                                            "taskremove"));
+
+       g_signal_connect(w_tasksave_btn,
+                        "clicked",
+                        (GCallback)tasksave_clicked_cbk,
                         NULL);
 
        w_taskdone_btn = GTK_BUTTON(gtk_builder_get_object(builder,
@@ -145,7 +162,7 @@ void ui_taskpanel_init(GtkBuilder *builder)
 
        enable(0);
 
-       log_fct(__func__, "EXIT");
+       log_fct("EXIT");
 }
 
 static int priority_to_int(const char *str)
@@ -195,3 +212,38 @@ void ui_taskpanel_update(struct task *task)
        }
 }
 
+int taskdone_clicked_cbk(GtkButton *btn, gpointer data)
+{
+       if (current_task) {
+               tw_task_done(current_task->uuid);
+               refresh();
+       }
+
+       return FALSE;
+}
+
+int taskremove_clicked_cbk(GtkButton *btn, gpointer data)
+{
+       log_fct_enter();
+
+       if (current_task) {
+               log_fct("uuid=%d", current_task->uuid);
+               tw_task_remove(current_task->uuid);
+               refresh();
+       }
+
+       log_fct_exit();
+
+       return FALSE;
+}
+
+int taskpanel_cancel_clicked_cbk(GtkButton *btn, gpointer data)
+{
+       log_fct_enter();
+
+       ui_taskpanel_update(current_task);
+
+       log_fct_exit();
+
+       return FALSE;
+}