diff --git a/OpenChange/MAPIStoreFolder.h b/OpenChange/MAPIStoreFolder.h index 14fda90fa..d5154aae6 100644 --- a/OpenChange/MAPIStoreFolder.h +++ b/OpenChange/MAPIStoreFolder.h @@ -144,7 +144,7 @@ - (int) modifyPermissions: (struct PermissionData *) permissions withCount: (uint16_t) pcount andFlags: (int8_t) flags; -- (enum mapistore_error) preloadMessageBodies: (const struct UI8Array_r *) mids; +- (enum mapistore_error) preloadMessageBodiesWithMIDs: (const struct UI8Array_r *) mids; /* helpers */ - (uint64_t) idForObjectWithKey: (NSString *) childKey; @@ -176,6 +176,8 @@ - (BOOL) supportsSubFolders; /* capability */ +- (enum mapistore_error) preloadMessageBodiesWithKeys: (NSArray *) keys; + /* subclass helpers */ - (void) setupVersionsMessage; - (void) postNotificationsForMoveCopyMessagesWithMIDs: (uint64_t *) srcMids diff --git a/OpenChange/MAPIStoreFolder.m b/OpenChange/MAPIStoreFolder.m index 289e4f899..14950aaae 100644 --- a/OpenChange/MAPIStoreFolder.m +++ b/OpenChange/MAPIStoreFolder.m @@ -1753,7 +1753,31 @@ Class NSExceptionK, MAPIStoreFAIMessageK, MAPIStoreMessageTableK, MAPIStoreFAIMe return MAPISTORE_SUCCESS; } -- (enum mapistore_error) preloadMessageBodies: (const struct UI8Array_r *) mids +- (enum mapistore_error) preloadMessageBodiesWithMIDs: (const struct UI8Array_r *) mids +{ + uint32_t count; + NSMutableArray *messageKeys; + MAPIStoreMapping *mapping; + NSString *messageURL, *messageKey; + + messageKeys = [NSMutableArray arrayWithCapacity: mids->cValues]; + + mapping = [self mapping]; + for (count = 0; count < mids->cValues; count++) + { + messageURL = [mapping urlFromID: mids->lpui8[count]]; + if (messageURL) + { + messageKey = [self childKeyFromURL: messageURL]; + if (messageKey) + [messageKeys addObject: messageKey]; + } + } + + return [self preloadMessageBodiesWithKeys: messageKeys]; +} + +- (enum mapistore_error) preloadMessageBodiesWithKeys: (NSArray *) keys { return MAPISTORE_SUCCESS; } diff --git a/OpenChange/MAPIStoreSOGo.m b/OpenChange/MAPIStoreSOGo.m index a51382d69..1f3a60f45 100644 --- a/OpenChange/MAPIStoreSOGo.m +++ b/OpenChange/MAPIStoreSOGo.m @@ -812,7 +812,7 @@ sogo_folder_preload_message_bodies(void *folder_object, const struct UI8Array_r folder = wrapper->instance; GSRegisterCurrentThread (); pool = [NSAutoreleasePool new]; - rc = [folder preloadMessageBodies: mids]; + rc = [folder preloadMessageBodiesWithMIDs: mids]; [pool release]; GSUnregisterCurrentThread (); }