[gnome-todo/wip/gbsneto/plugins] manager: properly emit ::list_changed signal



commit 5428fbbd104522c305eef99bb6b8af55a8ad6499
Author: Georges Basile Stavracas Neto <georges stavracas gmail com>
Date:   Tue Dec 29 19:57:54 2015 -0200

    manager: properly emit ::list_changed signal
    
    Whenever a task is added, modified or removed,
    GtdManager shall emit list-changed signal.

 src/gtd-manager.c |   50 +++++++++++++++++++++++++++++---------------------
 1 files changed, 29 insertions(+), 21 deletions(-)
---
diff --git a/src/gtd-manager.c b/src/gtd-manager.c
index eb8a291..825ff70 100644
--- a/src/gtd-manager.c
+++ b/src/gtd-manager.c
@@ -72,27 +72,6 @@ enum
 };
 
 static guint signals[NUM_SIGNALS] = { 0, };
-/*
-static gboolean
-is_today (GDateTime *dt)
-{
-  GDateTime *today;
-
-  today = g_date_time_new_now_local ();
-
-  if (g_date_time_get_year (dt) == g_date_time_get_year (today) &&
-      g_date_time_get_month (dt) == g_date_time_get_month (today) &&
-      g_date_time_get_day_of_month (dt) == g_date_time_get_day_of_month (today))
-    {
-      return TRUE;
-    }
-
-  g_date_time_unref (today);
-
-  return FALSE;
-}
-
- */
 
 static void
 emit_show_error_message (GtdManager  *manager,
@@ -339,6 +318,14 @@ gtd_manager_class_init (GtdManagerClass *klass)
 }
 
 static void
+gtd_manager__task_list_modified (GtdTaskList *list,
+                                 GtdTask     *task,
+                                 GtdManager  *self)
+{
+  g_signal_emit (self, signals[LIST_CHANGED], 0, list);
+}
+
+static void
 gtd_manager__panel_added (GtdPluginManager *plugin_manager,
                           GtdPanel         *panel,
                           GtdManager       *self)
@@ -371,6 +358,21 @@ gtd_manager__list_added (GtdProvider *provider,
 
   priv->tasklists = g_list_append (priv->tasklists, list);
 
+  g_signal_connect (list,
+                    "task-added",
+                    G_CALLBACK (gtd_manager__task_list_modified),
+                    self);
+
+  g_signal_connect (list,
+                    "task-updated",
+                    G_CALLBACK (gtd_manager__task_list_modified),
+                    self);
+
+  g_signal_connect (list,
+                    "task-removed",
+                    G_CALLBACK (gtd_manager__task_list_modified),
+                    self);
+
   g_signal_emit (self, signals[LIST_ADDED], 0, list);
 }
 
@@ -391,6 +393,10 @@ gtd_manager__list_removed (GtdProvider *provider,
 
   priv->tasklists = g_list_remove (priv->tasklists, list);
 
+  g_signal_handlers_disconnect_by_func (list,
+                                        gtd_manager__task_list_modified,
+                                        self);
+
   g_signal_emit (self, signals[LIST_REMOVED], 0, list);
 }
 
@@ -623,6 +629,8 @@ gtd_manager_save_task_list (GtdManager  *manager,
 
   provider = gtd_task_list_get_provider (list);
 
+  g_message ("%s", G_STRFUNC);
+
   gtd_provider_update_task_list (provider, list);
 }
 


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