From 3175a9169f136a4c87480403f9b8035f3d06da96 Mon Sep 17 00:00:00 2001 From: Ludovic Marcotte Date: Wed, 5 Feb 2014 20:56:01 -0500 Subject: [PATCH] Mapped lots of contact properties --- ActiveSync/NGVCard+ActiveSync.m | 147 +++++++++++++++++++++++------- SoObjects/Contacts/NGVCard+SOGo.h | 3 + SoObjects/Contacts/NGVCard+SOGo.m | 26 +++--- 3 files changed, 130 insertions(+), 46 deletions(-) diff --git a/ActiveSync/NGVCard+ActiveSync.m b/ActiveSync/NGVCard+ActiveSync.m index 5f4b90ec9..f40ec82c7 100644 --- a/ActiveSync/NGVCard+ActiveSync.m +++ b/ActiveSync/NGVCard+ActiveSync.m @@ -171,45 +171,126 @@ SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. // - (void) takeActiveSyncValues: (NSDictionary *) theValues { + CardElement *element; id o; + + // Contact's note + if ((o = [[theValues objectForKey: @"Body"] objectForKey: @"Data"])) + [self setNote: o]; - if ((o = [theValues objectForKey: @"CompanyName"])) - { - [self setOrg: o units: nil]; - } - - if ((o = [theValues objectForKey: @"Email1Address"])) - { - [self addEmail: o types: [NSArray arrayWithObject: @"pref"]]; - } + // + // Business address information + // + // BusinessStreet + // BusinessCity + // BusinessPostalCode + // BusinessState + // BusinessCountry + // + element = [self elementWithTag: @"adr" ofType: @"work"]; + [element setSingleValue: @"" + atIndex: 1 forKey: @""]; + [element setSingleValue: [theValues objectForKey: @"BusinessStreet"] + atIndex: 2 forKey: @""]; + [element setSingleValue: [theValues objectForKey: @"BusinessCity"] + atIndex: 3 forKey: @""]; + [element setSingleValue: [theValues objectForKey: @"BusinessState"] + atIndex: 4 forKey: @""]; + [element setSingleValue: [theValues objectForKey: @"BusinessPostalCode"] + atIndex: 5 forKey: @""]; + [element setSingleValue: [theValues objectForKey: @"BusinessCountry"] + atIndex: 6 forKey: @""]; - if ((o = [theValues objectForKey: @"Email2Address"])) - { - [self addEmail: o types: nil]; - } + // + // Home address information + // + // HomeStreet + // HomeCity + // HomePostalCode + // HomeState + // HomeCountry + // + element = [self elementWithTag: @"adr" ofType: @"home"]; + [element setSingleValue: @"" + atIndex: 1 forKey: @""]; + [element setSingleValue: [theValues objectForKey: @"HomeStreet"] + atIndex: 2 forKey: @""]; + [element setSingleValue: [theValues objectForKey: @"HomeCity"] + atIndex: 3 forKey: @""]; + [element setSingleValue: [theValues objectForKey: @"HomeState"] + atIndex: 4 forKey: @""]; + [element setSingleValue: [theValues objectForKey: @"HomePostalCode"] + atIndex: 5 forKey: @""]; + [element setSingleValue: [theValues objectForKey: @"HomeCountry"] + atIndex: 6 forKey: @""]; - if ((o = [theValues objectForKey: @"Email3Address"])) - { - [self addEmail: o types: nil]; - } + // Company's name + if ((o = [theValues objectForKey: @"CompanyName"])) + { + [self setOrg: o units: nil]; + } + + // Email addresses + if ((o = [theValues objectForKey: @"Email1Address"])) + { + [self addEmail: o types: [NSArray arrayWithObject: @"pref"]]; + } + + if ((o = [theValues objectForKey: @"Email2Address"])) + { + [self addEmail: o types: nil]; + } + + if ((o = [theValues objectForKey: @"Email3Address"])) + { + [self addEmail: o types: nil]; + } + + // Formatted name + // MiddleName + // Suffix (II) + // Title (Mr.) + [self setFn: [theValues objectForKey: @"FileAs"]]; - [self setNWithFamily: [theValues objectForKey: @"LastName"] - given: [theValues objectForKey: @"FirstName"] - additional: nil prefixes: nil suffixes: nil]; - - if ((o = [theValues objectForKey: @"MobilePhoneNumber"])) - { - } - - if ((o = [theValues objectForKey: @"Title"])) - { - [self setTitle: o]; - } + [self setNWithFamily: [theValues objectForKey: @"LastName"] + given: [theValues objectForKey: @"FirstName"] + additional: nil prefixes: nil suffixes: nil]; + + // IM information + [[self uniqueChildWithTag: @"x-aim"] + setSingleValue: [theValues objectForKey: @"IMAddress"] + forKey: @""]; - if ((o = [theValues objectForKey: @"WebPage"])) - { - } - + // + // Phone numbrrs + // + element = [self elementWithTag: @"tel" ofType: @"work"]; + [element setSingleValue: [theValues objectForKey: @"BusinessPhoneNumber"] forKey: @""]; + + element = [self elementWithTag: @"tel" ofType: @"home"]; + [element setSingleValue: [theValues objectForKey: @"HomePhoneNumber"] forKey: @""]; + + element = [self elementWithTag: @"tel" ofType: @"cell"]; + [element setSingleValue: [theValues objectForKey: @"MobilePhoneNumber"] forKey: @""]; + + element = [self elementWithTag: @"tel" ofType: @"fax"]; + [element setSingleValue: [theValues objectForKey: @"BusinessFaxNumber"] forKey: @""]; + + element = [self elementWithTag: @"tel" ofType: @"pager"]; + [element setSingleValue: [theValues objectForKey: @"PagerNumber"] forKey: @""]; + + // Job's title + if ((o = [theValues objectForKey: @"JobTitle"])) + { + [self setTitle: o]; + } + + // WebPage (work) + if ((o = [theValues objectForKey: @"WebPage"])) + { + [[self elementWithTag: @"url" ofType: @"work"] + setSingleValue: o forKey: @""]; + } } @end diff --git a/SoObjects/Contacts/NGVCard+SOGo.h b/SoObjects/Contacts/NGVCard+SOGo.h index 5ad1d8986..512037888 100644 --- a/SoObjects/Contacts/NGVCard+SOGo.h +++ b/SoObjects/Contacts/NGVCard+SOGo.h @@ -28,6 +28,9 @@ @interface NGVCard (SOGoExtensions) +- (CardElement *) elementWithTag: (NSString *) elementTag + ofType: (NSString *) type; + - (void) updateFromLDIFRecord: (NSDictionary *) ldifRecord; - (NSMutableDictionary *) asLDIFRecord; diff --git a/SoObjects/Contacts/NGVCard+SOGo.m b/SoObjects/Contacts/NGVCard+SOGo.m index 571da2aa0..88d3e99f1 100644 --- a/SoObjects/Contacts/NGVCard+SOGo.m +++ b/SoObjects/Contacts/NGVCard+SOGo.m @@ -164,8 +164,8 @@ convention: @implementation NGVCard (SOGoExtensions) /* LDIF -> VCARD */ -- (CardElement *) _elementWithTag: (NSString *) elementTag - ofType: (NSString *) type +- (CardElement *) elementWithTag: (NSString *) elementTag + ofType: (NSString *) type { NSArray *elements; CardElement *element; @@ -188,16 +188,16 @@ convention: { CardElement *phone; - phone = [self _elementWithTag: @"tel" ofType: @"work"]; + phone = [self elementWithTag: @"tel" ofType: @"work"]; [phone setSingleValue: [ldifRecord objectForKey: @"telephonenumber"] forKey: @""]; - phone = [self _elementWithTag: @"tel" ofType: @"home"]; + phone = [self elementWithTag: @"tel" ofType: @"home"]; [phone setSingleValue: [ldifRecord objectForKey: @"homephone"] forKey: @""]; - phone = [self _elementWithTag: @"tel" ofType: @"cell"]; + phone = [self elementWithTag: @"tel" ofType: @"cell"]; [phone setSingleValue: [ldifRecord objectForKey: @"mobile"] forKey: @""]; - phone = [self _elementWithTag: @"tel" ofType: @"fax"]; + phone = [self elementWithTag: @"tel" ofType: @"fax"]; [phone setSingleValue: [ldifRecord objectForKey: @"facsimiletelephonenumber"] forKey: @""]; - phone = [self _elementWithTag: @"tel" ofType: @"pager"]; + phone = [self elementWithTag: @"tel" ofType: @"pager"]; [phone setSingleValue: [ldifRecord objectForKey: @"pager"] forKey: @""]; } @@ -205,9 +205,9 @@ convention: { CardElement *mail, *homeMail; - mail = [self _elementWithTag: @"email" ofType: @"work"]; + mail = [self elementWithTag: @"email" ofType: @"work"]; [mail setSingleValue: [ldifRecord objectForKey: @"mail"] forKey: @""]; - homeMail = [self _elementWithTag: @"email" ofType: @"home"]; + homeMail = [self elementWithTag: @"email" ofType: @"home"]; [homeMail setSingleValue: [ldifRecord objectForKey: @"mozillasecondemail"] forKey: @""]; [[self uniqueChildWithTag: @"x-mozilla-html"] setSingleValue: [ldifRecord objectForKey: @"mozillausehtmlmail"] @@ -230,7 +230,7 @@ convention: [self setFn: [ldifRecord objectForKey: @"displayname"]]; [self setTitle: [ldifRecord objectForKey: @"title"]]; - element = [self _elementWithTag: @"adr" ofType: @"home"]; + element = [self elementWithTag: @"adr" ofType: @"home"]; [element setSingleValue: [ldifRecord objectForKey: @"mozillahomestreet2"] atIndex: 1 forKey: @""]; [element setSingleValue: [ldifRecord objectForKey: @"mozillahomestreet"] @@ -244,7 +244,7 @@ convention: [element setSingleValue: [ldifRecord objectForKey: @"mozillahomecountryname"] atIndex: 6 forKey: @""]; - element = [self _elementWithTag: @"adr" ofType: @"work"]; + element = [self elementWithTag: @"adr" ofType: @"work"]; [element setSingleValue: [ldifRecord objectForKey: @"mozillaworkstreet2"] atIndex: 1 forKey: @""]; [element setSingleValue: [ldifRecord objectForKey: @"street"] @@ -268,9 +268,9 @@ convention: [self _setPhoneValues: ldifRecord]; [self _setEmails: ldifRecord]; - [[self _elementWithTag: @"url" ofType: @"home"] + [[self elementWithTag: @"url" ofType: @"home"] setSingleValue: [ldifRecord objectForKey: @"mozillahomeurl"] forKey: @""]; - [[self _elementWithTag: @"url" ofType: @"work"] + [[self elementWithTag: @"url" ofType: @"work"] setSingleValue: [ldifRecord objectForKey: @"mozillaworkurl"] forKey: @""]; [[self uniqueChildWithTag: @"x-aim"]