diff --git a/ChangeLog b/ChangeLog index fee42b26a..034d6dea2 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,10 @@ 2011-02-14 Wolfgang Sourdeau + * OpenChange/MAPIStoreMailFolderTable.m + (-getChildProperty:forKey:withTag:): compute propre response for + PR_CONTENT_UNREAD, even though this will work only for subfolders + and mapistore v2, neither of which is supported right now... + * SoObjects/Mailer/SOGoMailObject.m (-isNewMail, -replied) (-forwarded, -deleted): new accessors for the \Recent, \Answered, $Forwarded and \Deleted IMAP flags. diff --git a/OpenChange/MAPIStoreMailFolderTable.m b/OpenChange/MAPIStoreMailFolderTable.m index ce8e86d47..3d7e85886 100644 --- a/OpenChange/MAPIStoreMailFolderTable.m +++ b/OpenChange/MAPIStoreMailFolderTable.m @@ -22,6 +22,12 @@ #import +#import + +#import + +#import + #import "NSString+MAPIStore.h" #import "NSValue+MAPIStore.h" #import "MAPIStoreTypes.h" @@ -35,12 +41,22 @@ withTag: (enum MAPITAGS) propTag { enum MAPISTATUS rc; - + SOGoMailFolder *child; + EOQualifier *searchQualifier; + uint32_t intValue; + rc = MAPI_E_SUCCESS; switch (propTag) { case PR_CONTENT_UNREAD: - *data = MAPILongValue (memCtx, 0); + child = [self lookupChild: childKey]; + searchQualifier + = [EOQualifier qualifierWithQualifierFormat: @"flags = %@ AND not flags = %@", + @"unseen", @"deleted"]; + intValue = [[child fetchUIDsMatchingQualifier: searchQualifier + sortOrdering: nil] count]; + [self logWithFormat: @"unread count for %@: %u\n", childKey, intValue]; + *data = MAPILongValue (memCtx, intValue); break; case PR_CONTAINER_CLASS_UNICODE: *data = [@"IPF.Note" asUnicodeInMemCtx: memCtx];