diff --git a/ChangeLog b/ChangeLog index 16ebe1f01..26dd1567a 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2011-09-22 Wolfgang Sourdeau + * OpenChange/MAPIStoreDraftsMessage.m (-getPrChangeKey) + (-getPrPredecessorChangeList:inMemCtx:): return + MAPISTORE_ERR_NOT_FOUND. + (-getPidLidImapDeleted:inMemCtx:, -getPrInternetMessageId:inMemCtx:): same + as above. + + * OpenChange/MAPIStoreMailFolder.m (-[MAPIStoreDraftsFolder + messageClass, createMessage]): restore methods. + * OpenChange/MAPIStoreFolder.m (-moveCopyMessagesWithMIDs:andCount:fromFolder:withMIDs:wantCopy:): adapted to be invoked from the target folder. diff --git a/OpenChange/MAPIStoreDraftsMessage.m b/OpenChange/MAPIStoreDraftsMessage.m index 46568eaff..5cb98a3a8 100644 --- a/OpenChange/MAPIStoreDraftsMessage.m +++ b/OpenChange/MAPIStoreDraftsMessage.m @@ -64,6 +64,22 @@ typedef void (*getMessageData_inMemCtx_) (MAPIStoreMessage *, SEL, : [super objectVersion]); } +- (void) _fetchHeaderData +{ + [sogoObject fetchInfo]; + ASSIGN (headerMimeType, [sogoObject isHTML] ? @"text/html" : @"text/plain"); + ASSIGN (headerEncoding, @"8bit"); + ASSIGN (headerCharset, @"utf-8"); + headerSetup = YES; +} + +- (void) _fetchBodyData +{ + ASSIGN (bodyContent, + [[sogoObject text] dataUsingEncoding: NSUTF8StringEncoding]); + bodySetup = YES; +} + - (void) getMessageData: (struct mapistore_message **) dataPtr inMemCtx: (TALLOC_CTX *) memCtx { @@ -87,10 +103,7 @@ typedef void (*getMessageData_inMemCtx_) (MAPIStoreMessage *, SEL, /* Retrieve recipients from the message */ if (!headerSetup) - { - [sogoObject fetchInfo]; - headerSetup = YES; - } + [self _fetchHeaderData]; headers = [sogoObject headers]; to = [headers objectForKey: @"to"]; @@ -174,10 +187,7 @@ typedef void (*getMessageData_inMemCtx_) (MAPIStoreMessage *, SEL, if ([sogoObject isKindOfClass: SOGoDraftObjectK]) { if (!headerSetup) - { - [sogoObject fetchInfo]; - headerSetup = YES; - } + [self _fetchHeaderData]; s = [[sogoObject headers] objectForKey: @"X-Priority"]; v = 0x1; @@ -232,6 +242,30 @@ typedef void (*getMessageData_inMemCtx_) (MAPIStoreMessage *, SEL, : [super getPrFollowupIcon: data inMemCtx: memCtx]); } +- (int) getPrChangeKey: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + return MAPISTORE_ERR_NOT_FOUND; +} + +- (int) getPrPredecessorChangeList: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + return MAPISTORE_ERR_NOT_FOUND; +} + +- (int) getPidLidImapDeleted: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + return MAPISTORE_ERR_NOT_FOUND; +} + +- (int) getPrInternetMessageId: (void **) data + inMemCtx: (TALLOC_CTX *) memCtx +{ + return MAPISTORE_ERR_NOT_FOUND; +} + - (void) _saveAttachment: (NSString *) attachmentKey { NSDictionary *properties, *metadata; @@ -376,10 +410,7 @@ e) id to; if (!headerSetup) - { - [sogoObject fetchInfo]; - headerSetup = YES; - } + [self _fetchHeaderData]; stringValue = @""; @@ -537,10 +568,7 @@ e) if (!subject) { if (!headerSetup) - { - [sogoObject fetchInfo]; - headerSetup = YES; - } + [self _fetchHeaderData]; subject = [[sogoObject headers] objectForKey: @"subject"]; } } diff --git a/OpenChange/MAPIStoreMailFolder.m b/OpenChange/MAPIStoreMailFolder.m index a4b3982e5..f3dafe354 100644 --- a/OpenChange/MAPIStoreMailFolder.m +++ b/OpenChange/MAPIStoreMailFolder.m @@ -1105,6 +1105,24 @@ _parseCOPYUID (NSString *line, NSArray **destUIDsP) return [accountFolder draftsFolderInContext: woContext]; } +- (Class) messageClass +{ + return MAPIStoreDraftsMessageK; +} + +- (MAPIStoreMessage *) createMessage +{ + MAPIStoreDraftsMessage *newMessage; + SOGoDraftObject *newDraft; + + newDraft = [sogoObject newDraft]; + newMessage + = [MAPIStoreDraftsMessage mapiStoreObjectWithSOGoObject: newDraft + inContainer: self]; + + return newMessage; +} + @end // @implementation MAPIStoreDeletedItemsFolder : MAPIStoreMailFolder