[gnome-contacts] Add added/changed/removed signals to ContactsStore



commit 025f48332edc2f82b1d5f01a90a09c5874e3f6ac
Author: Alexander Larsson <alexl redhat com>
Date:   Tue Aug 9 12:30:07 2011 +0200

    Add added/changed/removed signals to ContactsStore

 src/contacts-store.vala |   16 +++++++++++++---
 1 files changed, 13 insertions(+), 3 deletions(-)
---
diff --git a/src/contacts-store.vala b/src/contacts-store.vala
index 1d1321f..fda1971 100644
--- a/src/contacts-store.vala
+++ b/src/contacts-store.vala
@@ -28,6 +28,10 @@ public class Contacts.Store  {
     public bool is_first;
   }
 
+  public signal void changed (Contact c);
+  public signal void added (Contact c);
+  public signal void removed (Contact c);
+
   ListStore list_store;
   public IndividualAggregator aggregator { get; private set; }
   Gee.ArrayList<ContactData> contacts;
@@ -187,7 +191,7 @@ public class Contacts.Store  {
     refilter ();
   }
 
-  private void contact_changed (Contact c) {
+  private void contact_changed_cb (Contact c) {
     ContactData data = lookup_data (c);
 
     bool was_visible = data.visible;
@@ -212,6 +216,8 @@ public class Contacts.Store  {
       if (next != null)
 	update_is_first (next, data);
     }
+
+    changed (c);
   }
 
   private ContactData lookup_data (Contact c) {
@@ -236,13 +242,15 @@ public class Contacts.Store  {
 
     contacts.add (data);
 
-    c.changed.connect (contact_changed);
+    c.changed.connect (contact_changed_cb);
 
     update_visible (data);
+
+    added (c);
   }
 
   public void remove (Contact c) {
-    c.changed.disconnect (contact_changed);
+    c.changed.disconnect (contact_changed_cb);
     var data = lookup_data (c);
 
     if (data.visible)
@@ -254,5 +262,7 @@ public class Contacts.Store  {
     contacts.remove_at (contacts.size - 1);
 
     c.set_data ("contact-data", null);
+
+    removed (c);
   }
 }



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