From cf9d12009e9d362ae1811abe9e0f182078e2f52b Mon Sep 17 00:00:00 2001 From: Wolfgang Sourdeau Date: Fri, 4 Feb 2011 16:08:13 +0000 Subject: [PATCH] Monotone-Parent: 694600692b70cc30ffc96cddeb455dc83bc72078 Monotone-Revision: 71e8d6e738a201066fe20c3c31bde9c788ee9743 Monotone-Author: wsourdeau@inverse.ca Monotone-Date: 2011-02-04T16:08:13 Monotone-Branch: ca.inverse.sogo --- ChangeLog | 3 +++ OpenChange/MAPIStoreMailMessageTable.m | 23 +++++++++++++++++++++-- 2 files changed, 24 insertions(+), 2 deletions(-) diff --git a/ChangeLog b/ChangeLog index 0a19e3b1e..5ac38cda8 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,8 @@ 2011-02-04 Wolfgang Sourdeau + * OpenChange/MAPIStoreMailMessageTable.m (-childKeys) + (-restrictedChildKeys): now only return non-deleted elements. + * OpenChange/SOGoMAPIFSMessage.m (-MAPISave): use an alternative way of producing the property list file as, for some reason, invoking -writeToFile:atomically: can fail on NSDictionary. diff --git a/OpenChange/MAPIStoreMailMessageTable.m b/OpenChange/MAPIStoreMailMessageTable.m index bfd06c677..34948840c 100644 --- a/OpenChange/MAPIStoreMailMessageTable.m +++ b/OpenChange/MAPIStoreMailMessageTable.m @@ -27,6 +27,8 @@ #import +#import + #import #import @@ -47,20 +49,34 @@ static Class NSDataK, NSStringK; +static EOQualifier *nonDeletedQualifier = nil; + + (void) initialize { + EOKeyValueQualifier *deletedQualifier; + NSDataK = [NSData class]; NSStringK = [NSString class]; + deletedQualifier = [[EOKeyValueQualifier alloc] + initWithKey: @"FLAGS" + operatorSelector: EOQualifierOperatorContains + value: [NSArray arrayWithObject: @"DELETED"]]; + nonDeletedQualifier = [[EONotQualifier alloc] + initWithQualifier: deletedQualifier]; + [deletedQualifier release]; } - (NSArray *) childKeys { - return [folder toOneRelationshipKeys]; + return [[folder fetchUIDsMatchingQualifier: nonDeletedQualifier + sortOrdering: @"ARRIVAL"] + stringsWithFormat: @"%@.eml"]; } - (NSArray *) restrictedChildKeys { NSArray *keys; + EOAndQualifier *andQualifier; if (restrictionState == MAPIRestrictionStateAlwaysTrue) keys = [self cachedChildKeys]; @@ -68,9 +84,12 @@ static Class NSDataK, NSStringK; keys = [NSArray array]; else { - keys = [[folder fetchUIDsMatchingQualifier: restriction + andQualifier = [[EOAndQualifier alloc] + initWithQualifiers: restriction, nonDeletedQualifier, nil]; + keys = [[folder fetchUIDsMatchingQualifier: andQualifier sortOrdering: @"ARRIVAL"] stringsWithFormat: @"%@.eml"]; + [andQualifier release]; [self logWithFormat: @" restricted keys: %@", keys]; }