Monotone-Parent: 3fdbf80f4c1de08138ff9435f54fd9f663ef5b8f
Monotone-Revision: 3bc92406543042dce09f1c096eb8a19107b42eb2 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2012-07-20T14:36:05 Monotone-Branch: ca.inverse.sogomaint-2.0.2
parent
7bb437021a
commit
63c2d62b0b
12
ChangeLog
12
ChangeLog
|
@ -1,5 +1,17 @@
|
|||
2012-07-20 Wolfgang Sourdeau <wsourdeau@inverse.ca>
|
||||
|
||||
* OpenChange/NSObject+MAPIStore.m
|
||||
(+fillAvailableProperties:withExclusions:): new method that fills
|
||||
an existing array of properties with properties existing in
|
||||
another class, as long as they are not listed in the array of
|
||||
exclusions.
|
||||
|
||||
* OpenChange/MAPIStoreObject.m (-init): assigned a mutable array
|
||||
to "proxies"
|
||||
(-canGetProperty:): test the proxies for the availability of
|
||||
properties so that -getAvailableProperties:inMemCtx: can return an
|
||||
accurate result.
|
||||
|
||||
* OpenChange/MAPIStoreMessage.m (-getPidTagSubject:inMemCtx:): now
|
||||
compute the return value based on PidTagNormalizedSubject and
|
||||
PidTagSubjectPrefix as PidTagSubject is never actually set from
|
||||
|
|
|
@ -87,6 +87,22 @@
|
|||
|
||||
@implementation MAPIStoreCalendarMessage
|
||||
|
||||
+ (enum mapistore_error) getAvailableProperties: (struct SPropTagArray **) propertiesP
|
||||
inMemCtx: (TALLOC_CTX *) memCtx
|
||||
{
|
||||
BOOL listedProperties[65536];
|
||||
NSUInteger count;
|
||||
|
||||
memset (listedProperties, NO, 65536 * sizeof (BOOL));
|
||||
[super getAvailableProperties: propertiesP inMemCtx: memCtx];
|
||||
for (count = 0; count < (*propertiesP)->cValues; count++)
|
||||
listedProperties[(*propertiesP)->aulPropTag[count] >> 16] = YES;
|
||||
[MAPIStoreAppointmentWrapper fillAvailableProperties: *propertiesP
|
||||
withExclusions: listedProperties];
|
||||
|
||||
return MAPISTORE_SUCCESS;
|
||||
}
|
||||
|
||||
- (id) initWithSOGoObject: (id) newSOGoObject
|
||||
inContainer: (MAPIStoreObject *) newFolder
|
||||
{
|
||||
|
|
|
@ -76,6 +76,7 @@ static Class NSExceptionK, MAPIStoreFolderK;
|
|||
parentContainersBag = [NSMutableArray new];
|
||||
container = nil;
|
||||
properties = [NSMutableDictionary new];
|
||||
proxies = [NSMutableArray new];
|
||||
}
|
||||
|
||||
// [self logWithFormat: @"-init"];
|
||||
|
@ -96,6 +97,7 @@ static Class NSExceptionK, MAPIStoreFolderK;
|
|||
- (void) dealloc
|
||||
{
|
||||
// [self logWithFormat: @"-dealloc"];
|
||||
[proxies release];
|
||||
[properties release];
|
||||
[parentContainersBag release];
|
||||
[container release];
|
||||
|
@ -203,11 +205,18 @@ static Class NSExceptionK, MAPIStoreFolderK;
|
|||
- (BOOL) canGetProperty: (enum MAPITAGS) propTag
|
||||
{
|
||||
uint16_t propValue;
|
||||
BOOL canGetProperty;
|
||||
NSUInteger count, max;
|
||||
|
||||
propValue = (propTag & 0xffff0000) >> 16;
|
||||
|
||||
return (classGetters[propValue]
|
||||
|| [properties objectForKey: MAPIPropertyKey (propTag)]);
|
||||
canGetProperty = (classGetters[propValue]
|
||||
|| [properties objectForKey: MAPIPropertyKey (propTag)]);
|
||||
max = [proxies count];
|
||||
for (count = 0; !canGetProperty && count < max; count++)
|
||||
canGetProperty = [[proxies objectAtIndex: count] canGetProperty: propTag];
|
||||
|
||||
return canGetProperty;
|
||||
}
|
||||
|
||||
- (int) getProperties: (struct mapistore_property_data *) data
|
||||
|
|
|
@ -63,6 +63,9 @@ struct MAPIStoreTallocWrapper
|
|||
|
||||
+ (enum mapistore_error) getAvailableProperties: (struct SPropTagArray **) propertiesP
|
||||
inMemCtx: (TALLOC_CTX *) memCtx;
|
||||
+ (void) fillAvailableProperties: (struct SPropTagArray *) properties
|
||||
withExclusions: (BOOL *) exclusions;
|
||||
|
||||
- (enum mapistore_error) getAvailableProperties: (struct SPropTagArray **) propertiesP
|
||||
inMemCtx: (TALLOC_CTX *) memCtx;
|
||||
- (BOOL) canGetProperty: (enum MAPITAGS) propTag;
|
||||
|
|
|
@ -201,6 +201,30 @@ MAPIStoreTallocWrapperDestroy (void *data)
|
|||
return MAPISTORE_SUCCESS;
|
||||
}
|
||||
|
||||
+ (void) fillAvailableProperties: (struct SPropTagArray *) properties
|
||||
withExclusions: (BOOL *) exclusions
|
||||
{
|
||||
TALLOC_CTX *localMemCtx;
|
||||
struct SPropTagArray *subProperties;
|
||||
uint16_t propId;
|
||||
NSUInteger count;
|
||||
|
||||
localMemCtx = talloc_zero (NULL, TALLOC_CTX);
|
||||
[self getAvailableProperties: &subProperties inMemCtx: localMemCtx];
|
||||
for (count = 0; count < subProperties->cValues; count++)
|
||||
{
|
||||
propId = (subProperties->aulPropTag[count] >> 16);
|
||||
if (!exclusions[propId])
|
||||
{
|
||||
properties->aulPropTag[properties->cValues]
|
||||
= subProperties->aulPropTag[count];
|
||||
properties->cValues++;
|
||||
exclusions[propId] = YES;
|
||||
}
|
||||
}
|
||||
talloc_free (localMemCtx);
|
||||
}
|
||||
|
||||
- (enum mapistore_error) getAvailableProperties: (struct SPropTagArray **) propertiesP
|
||||
inMemCtx: (TALLOC_CTX *) memCtx
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue