[gnome-todo] edit-pane: unset date when None button is clicked



commit a7dc8aebfc64016737897ad3f802752fcf0e7977
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Thu Aug 27 00:20:21 2015 -0300

    edit-pane: unset date when None button is clicked

 data/ui/edit-pane.ui |    1 +
 src/gtd-edit-pane.c  |   16 ++++++++++++++++
 src/gtd-task.c       |   14 ++++++++------
 3 files changed, 25 insertions(+), 6 deletions(-)
---
diff --git a/data/ui/edit-pane.ui b/data/ui/edit-pane.ui
index 2cd9167..ec6bd72 100644
--- a/data/ui/edit-pane.ui
+++ b/data/ui/edit-pane.ui
@@ -291,6 +291,7 @@
             <property name="visible">True</property>
             <property name="can_focus">True</property>
             <property name="receives_default">False</property>
+            <signal name="clicked" handler="gtd_edit_pane__no_date_button_clicked" object="GtdEditPane" 
swapped="no" />
           </object>
           <packing>
             <property name="expand">False</property>
diff --git a/src/gtd-edit-pane.c b/src/gtd-edit-pane.c
index 23fb110..34f8ebc 100644
--- a/src/gtd-edit-pane.c
+++ b/src/gtd-edit-pane.c
@@ -69,6 +69,21 @@ static guint signals[NUM_SIGNALS] = { 0, };
 static void             gtd_edit_pane__date_selected              (GtkCalendar      *calendar,
                                                                    gpointer          user_data);
 
+static void             gtd_edit_pane_update_date                 (GtdEditPane      *pane);
+
+static void
+gtd_edit_pane__no_date_button_clicked (GtkButton *button,
+                                       GtdEditPane *pane)
+{
+  GtdEditPanePrivate *priv;
+
+  priv = pane->priv;
+
+  gtd_task_set_due_date (priv->task, NULL);
+  gtk_calendar_clear_marks (GTK_CALENDAR (priv->calendar));
+  gtd_edit_pane_update_date (pane);
+}
+
 static void
 gtd_edit_pane__delete_button_clicked (GtkButton *button,
                                       gpointer   user_data)
@@ -307,6 +322,7 @@ gtd_edit_pane_class_init (GtdEditPaneClass *klass)
   gtk_widget_class_bind_template_callback (widget_class, gtd_edit_pane__close_button_clicked);
   gtk_widget_class_bind_template_callback (widget_class, gtd_edit_pane__date_selected);
   gtk_widget_class_bind_template_callback (widget_class, gtd_edit_pane__delete_button_clicked);
+  gtk_widget_class_bind_template_callback (widget_class, gtd_edit_pane__no_date_button_clicked);
 }
 
 static void
diff --git a/src/gtd-task.c b/src/gtd-task.c
index f0f2808..6c06b4a 100644
--- a/src/gtd-task.c
+++ b/src/gtd-task.c
@@ -632,6 +632,12 @@ gtd_task_set_due_date (GtdTask   *task,
 
           comp_dt.tzid = g_strdup ("UTC");
 
+          comp_dt.value = idt;
+
+          e_cal_component_set_due (task->priv->component, &comp_dt);
+
+          e_cal_component_free_datetime (&comp_dt);
+
           g_date_time_unref (dt);
 
           changed = TRUE;
@@ -641,15 +647,11 @@ gtd_task_set_due_date (GtdTask   *task,
           idt = NULL;
           comp_dt.tzid = NULL;
 
+          e_cal_component_set_due (task->priv->component, NULL);
+
           changed = TRUE;
         }
 
-      comp_dt.value = idt;
-
-      e_cal_component_set_due (task->priv->component, &comp_dt);
-
-      e_cal_component_free_datetime (&comp_dt);
-
       if (changed)
         g_object_notify (G_OBJECT (task), "due-date");
     }


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]