Monotone-Parent: 9466acabd40c4707e1c9468170d5b231345d8cf9

Monotone-Revision: cf5ca218da1c1ff34ff78091ca6ef9e4d34fdfb3

Monotone-Author: wsourdeau@inverse.ca
Monotone-Date: 2011-01-11T21:16:31
Monotone-Branch: ca.inverse.sogo
This commit is contained in:
Wolfgang Sourdeau 2011-01-11 21:16:31 +00:00
parent a15f06c844
commit 3c7d44df08
2 changed files with 49 additions and 17 deletions

View file

@ -1,7 +1,10 @@
2011-01-11 Wolfgang Sourdeau <wsourdeau@inverse.ca>
* OpenChange/SOGoContactGCSEntry+MAPIStore.m
(-setMAPIProperties:): added support for work address.
(-setMAPIProperties:): added support for work address and its
corresponding addresse label. Preliminary support for
"PidLidPostalAddressId" which enables us to set a certain address
as preferred.
2011-01-10 Wolfgang Sourdeau <wsourdeau@inverse.ca>

View file

@ -39,8 +39,9 @@
- (void) setMAPIProperties: (NSDictionary *) properties
{
NGVCard *newCard, *oldCard;
NSArray *addresses;
CardElement *adr;
NSArray *elements;
CardElement *element;
int postalAddressId;
id value;
[self logWithFormat: @"setMAPIProperties: %@", properties];
@ -69,40 +70,68 @@
if (value)
[newCard addEmail: value types: nil];
postalAddressId = [[properties objectForKey: MAPIPropertyKey (PidLidPostalAddressId)]
intValue];
/* Work address */
addresses = [newCard childrenWithTag: @"adr"
value = [properties objectForKey: MAPIPropertyKey (PidLidWorkAddress)];
if ([value length])
{
elements = [newCard childrenWithTag: @"label"
andAttribute: @"type"
havingValue: @"work"];
if ([elements count] > 0)
{
element = [elements objectAtIndex: 0];
[element setValues: nil];
}
else
{
element = [CardElement elementWithTag: @"label"];
[element addAttribute: @"type" value: @"work"];
[card addChild: element];
}
if (postalAddressId == 2)
[element addAttribute: @"type"
value: @"pref"];
[element setValue: 0 to: value];
}
elements = [newCard childrenWithTag: @"adr"
andAttribute: @"type"
havingValue: @"work"];
if ([addresses count] > 0)
if ([elements count] > 0)
{
adr = [addresses objectAtIndex: 0];
[adr setValues: nil];
element = [elements objectAtIndex: 0];
[element setValues: nil];
}
else
{
adr = [CardElement elementWithTag: @"adr"];
[adr addAttribute: @"type" value: @"work"];
[card addChild: adr];
element = [CardElement elementWithTag: @"adr"];
[element addAttribute: @"type" value: @"work"];
[card addChild: element];
}
if (postalAddressId == 2)
[element addAttribute: @"type"
value: @"pref"];
value = [properties objectForKey: MAPIPropertyKey (PidLidWorkAddressPostOfficeBox)];
if (value)
[adr setValue: 0 to: value];
[element setValue: 0 to: value];
value = [properties objectForKey: MAPIPropertyKey (PidLidWorkAddressStreet)];
if (value)
[adr setValue: 2 to: value];
[element setValue: 2 to: value];
value = [properties objectForKey: MAPIPropertyKey (PidLidWorkAddressCity)];
if (value)
[adr setValue: 3 to: value];
[element setValue: 3 to: value];
value = [properties objectForKey: MAPIPropertyKey (PidLidWorkAddressState)];
if (value)
[adr setValue: 4 to: value];
[element setValue: 4 to: value];
value = [properties objectForKey: MAPIPropertyKey (PidLidWorkAddressPostalCode)];
if (value)
[adr setValue: 5 to: value];
[element setValue: 5 to: value];
value = [properties objectForKey: MAPIPropertyKey (PidLidWorkAddressCountry)];
if (value)
[adr setValue: 6 to: value];
[element setValue: 6 to: value];
ASSIGN (content, [newCard versitString]);
}