eds: Support writing postal addresses as vcards
authorAlexander Larsson <alexl@redhat.com>
Tue, 16 Aug 2011 14:53:14 +0000 (16:53 +0200)
committerRaul Gutierrez Segales <rgs@collabora.co.uk>
Wed, 17 Aug 2011 00:18:20 +0000 (01:18 +0100)
https://bugzilla.gnome.org/show_bug.cgi?id=656659

backends/eds/lib/edsf-persona-store.vala

index d4c1e58..cdfb7bb 100644 (file)
@@ -929,33 +929,18 @@ public class Edsf.PersonaStore : Folks.PersonaStore
   private async void _set_contact_postal_addresses (E.Contact contact,
       Set<PostalAddressFieldDetails> postal_fds)
     {
-      foreach (var fd in postal_fds)
-        {
-          if (fd == null || fd.value == null)
-            continue;
-
-          var address = new E.ContactAddress ();
-
-          address.po = fd.value.po_box;
-          address.ext = fd.value.extension;
-          address.street = fd.value.street;
-          address.locality = fd.value.locality;
-          address.region = fd.value.region;
-          address.code = fd.value.postal_code;
-          address.country = fd.value.country;
-          address.address_format = fd.value.address_format;
-
-          var types = fd.parameters.get ("type");
-          if (types.size > 0)
-            {
-              var type = types.to_array ()[0];
-              contact.set (E.Contact.field_id (type), address);
-            }
-          else
-            {
-              contact.set (E.ContactField.ADDRESS_OTHER, address);
-            }
-        }
+      yield this._set_contact_attributes<PostalAddress> (contact,
+          postal_fds,
+          (attr, address) => {
+            attr.add_value (address.po_box);
+            attr.add_value (address.extension);
+            attr.add_value (address.street);
+            attr.add_value (address.locality);
+            attr.add_value (address.region);
+            attr.add_value (address.postal_code);
+            attr.add_value (address.country);
+          },
+          "ADR", E.ContactField.ADDRESS);
     }
 
   delegate void FieldToAttribute<T> (E.VCardAttribute attr, T value);