[folks] Implement LocalIDDetails for Folks.Individual
- From: Raul Gutierrez Segales <raulgs src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [folks] Implement LocalIDDetails for Folks.Individual
- Date: Fri, 8 Apr 2011 17:29:34 +0000 (UTC)
commit 6511b536b2839cd36964db5c01cff565b942de21
Author: Raul Gutierrez Segales <raul gutierrez segales collabora co uk>
Date: Thu Apr 7 17:35:48 2011 +0100
Implement LocalIDDetails for Folks.Individual
folks/individual.vala | 45 +++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 45 insertions(+), 0 deletions(-)
---
diff --git a/folks/individual.vala b/folks/individual.vala
index 6f60940..0f4148c 100644
--- a/folks/individual.vala
+++ b/folks/individual.vala
@@ -71,6 +71,7 @@ public class Folks.Individual : Object,
GenderDetails,
GroupDetails,
ImDetails,
+ LocalIdDetails,
NameDetails,
NoteDetails,
PresenceDetails,
@@ -317,6 +318,20 @@ public class Folks.Individual : Object,
}
}
+ private HashSet<string> _local_ids;
+ /**
+ * { inheritDoc}
+ */
+ public HashSet<string> local_ids
+ {
+ get { return this._local_ids; }
+ private set
+ {
+ this._local_ids = value;
+ this.notify_property ("local-ids");
+ }
+ }
+
public DateTime birthday { get; set; }
public string calendar_event_id { get; set; }
@@ -520,6 +535,11 @@ public class Folks.Individual : Object,
this._update_notes ();
}
+ private void _notify_local_ids_cb ()
+ {
+ this._update_local_ids ();
+ }
+
/**
* Add or remove the Individual from the specified group.
*
@@ -668,6 +688,7 @@ public class Folks.Individual : Object,
this._update_birthday ();
this._update_notes ();
this._update_postal_addresses ();
+ this._update_local_ids ();
}
private void _update_groups ()
@@ -987,6 +1008,9 @@ public class Folks.Individual : Object,
persona.notify["notes"].connect (this._notify_notes_cb);
persona.notify["postal-addresses"].connect
(this._notify_postal_addresses_cb);
+ persona.notify["local-ids"].connect
+ (this._notify_local_ids_cb);
+
if (persona is GroupDetails)
{
@@ -1091,6 +1115,7 @@ public class Folks.Individual : Object,
persona.notify["notes"].disconnect (this._notify_notes_cb);
persona.notify["postal-addresses"].disconnect
(this._notify_postal_addresses_cb);
+ persona.notify["local-ids"].disconnect (this._notify_local_ids_cb);
if (persona is GroupDetails)
@@ -1259,6 +1284,26 @@ public class Folks.Individual : Object,
this.notify_property ("roles");
}
+ private void _update_local_ids ()
+ {
+ HashSet<string> _local_ids = new HashSet<string> ();
+
+ foreach (var persona in this._persona_list)
+ {
+ var local_ids_details = persona as LocalIdDetails;
+ if (local_ids_details != null)
+ {
+ foreach (var id in local_ids_details.local_ids)
+ {
+ _local_ids.add (id);
+ }
+ }
+ }
+
+ this._local_ids = (owned) _local_ids;
+ this.notify_property ("local-ids");
+ }
+
private void _update_postal_addresses ()
{
this._postal_addresses = new GLib.List<PostalAddress> ();
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]