diff options
58 files changed, 864 insertions, 429 deletions
diff --git a/build-mac/mailcore2.xcodeproj/project.pbxproj b/build-mac/mailcore2.xcodeproj/project.pbxproj index c62ad648..8f739b39 100644 --- a/build-mac/mailcore2.xcodeproj/project.pbxproj +++ b/build-mac/mailcore2.xcodeproj/project.pbxproj @@ -11,8 +11,11 @@ C07AD5D7FD82F8ACAB576231 /* NSError+MCO.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C07AD44B013BB42A240B4F04 /* NSError+MCO.h */; }; C07AD99B2E2054C684DB8FF6 /* NSError+MCO.mm in Sources */ = {isa = PBXBuildFile; fileRef = C07ADFE43E22B38EFF23ADB5 /* NSError+MCO.mm */; }; C07ADA0FE807DC9D166BBF37 /* MCOIMAPCheckAccountOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = C07AD721E48D521D6E3F4943 /* MCOIMAPCheckAccountOperation.mm */; }; - C07ADA66C41ADE958A8FCDB8 /* MCOConstants.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C07AD972CED96BD61F395435 /* MCOConstants.h */; }; C07ADC28B83E7959BF114D46 /* MCOIMAPSession.mm in Sources */ = {isa = PBXBuildFile; fileRef = C07AD057D3C8FBDC7AC95733 /* MCOIMAPSession.mm */; }; + C623C58616FD6A50001BBEFC /* MCOConstants.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64BB26D16FD63F6000DB34C /* MCOConstants.h */; }; + C623C58716FD6A61001BBEFC /* MCOOperation.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64BB25716FD3BC2000DB34C /* MCOOperation.h */; }; + C623C58816FD6DF6001BBEFC /* NSValue+MCO.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64BB25016FC2846000DB34C /* NSValue+MCO.h */; }; + C623C58916FD8B71001BBEFC /* MCOUtils.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64BB26C16FD62FB000DB34C /* MCOUtils.h */; }; C62C6ED416A2A0E600737497 /* MCIMAPIdentityOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C62C6ED216A2A0E600737497 /* MCIMAPIdentityOperation.cc */; }; C62C6ED816A398FA00737497 /* MCIMAPFolderInfoOperation.cc in Sources */ = {isa = PBXBuildFile; fileRef = C62C6ED616A398FA00737497 /* MCIMAPFolderInfoOperation.cc */; }; C62C6EDA16A3D60700737497 /* MCIMAPAsyncConnection.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA7FD16A295B500778456 /* MCIMAPAsyncConnection.cc */; }; @@ -79,6 +82,11 @@ C64BB25516FD32FB000DB34C /* MCOIMAP.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64BB25416FD32A0000DB34C /* MCOIMAP.h */; }; C64BB25616FD333C000DB34C /* MCOAbstractMessage.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = C64BB23316EDAA17000DB34C /* MCOAbstractMessage.h */; }; C64BB25A16FD3BCB000DB34C /* MCOOperation.mm in Sources */ = {isa = PBXBuildFile; fileRef = C64BB25816FD3BC5000DB34C /* MCOOperation.mm */; }; + C64BB25E16FD4377000DB34C /* MCOAttachment.mm in Sources */ = {isa = PBXBuildFile; fileRef = C64BB25D16FD4377000DB34C /* MCOAttachment.mm */; }; + C64BB26116FD4390000DB34C /* MCOMessageBuilder.mm in Sources */ = {isa = PBXBuildFile; fileRef = C64BB26016FD438F000DB34C /* MCOMessageBuilder.mm */; }; + C64BB26416FD43A1000DB34C /* MCOMessageParser.mm in Sources */ = {isa = PBXBuildFile; fileRef = C64BB26316FD43A1000DB34C /* MCOMessageParser.mm */; }; + C64BB26716FD43E2000DB34C /* MCOMessagePart.mm in Sources */ = {isa = PBXBuildFile; fileRef = C64BB26616FD43E2000DB34C /* MCOMessagePart.mm */; }; + C64BB26A16FD44C2000DB34C /* MCOMultipart.mm in Sources */ = {isa = PBXBuildFile; fileRef = C64BB26916FD44C2000DB34C /* MCOMultipart.mm */; }; C64EA6F4169E847800778456 /* MCAbstractMessage.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA694169E847800778456 /* MCAbstractMessage.cc */; }; C64EA6F6169E847800778456 /* MCAbstractMessagePart.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA696169E847800778456 /* MCAbstractMessagePart.cc */; }; C64EA6F8169E847800778456 /* MCAbstractMultipart.cc in Sources */ = {isa = PBXBuildFile; fileRef = C64EA698169E847800778456 /* MCAbstractMultipart.cc */; }; @@ -233,10 +241,15 @@ dstPath = include/mailcore; dstSubfolderSpec = 16; files = ( - C63CD68E16BE324100DB18F1 /* MCOIMAPFetchFoldersOperation.h in CopyFiles */, C63CD68C16BE1BC800DB18F1 /* MCHTMLRendererCallback.h in CopyFiles */, + C623C58616FD6A50001BBEFC /* MCOConstants.h in CopyFiles */, + C623C58716FD6A61001BBEFC /* MCOOperation.h in CopyFiles */, + C07AD27FF065FA4408F65F19 /* MCOIMAPCheckAccountOperation.h in CopyFiles */, C64BB24816EEFCBC000DB34C /* MCOAbstractMessage.mm in CopyFiles */, + C63CD68E16BE324100DB18F1 /* MCOIMAPFetchFoldersOperation.h in CopyFiles */, + C623C58916FD8B71001BBEFC /* MCOUtils.h in CopyFiles */, C64EA74F169E859600778456 /* MCAbstractMessage.h in CopyFiles */, + C623C58816FD6DF6001BBEFC /* NSValue+MCO.h in CopyFiles */, C63CD68816BE1BBF00DB18F1 /* MCAddressDisplay.h in CopyFiles */, C63CD68D16BE1BCA00DB18F1 /* MCRenderer.h in CopyFiles */, C64BB22F16E885C3000DB34C /* MCIndexSet.h in CopyFiles */, @@ -337,8 +350,6 @@ C64EA77E169E859600778456 /* MCSMTPProgressCallback.h in CopyFiles */, C64EA77F169E859600778456 /* MCSMTPSession.h in CopyFiles */, F8EA941716BB1C9D0011AC6F /* MCOIMAPSession.h in CopyFiles */, - C07ADA66C41ADE958A8FCDB8 /* MCOConstants.h in CopyFiles */, - C07AD27FF065FA4408F65F19 /* MCOIMAPCheckAccountOperation.h in CopyFiles */, C07AD5D7FD82F8ACAB576231 /* NSError+MCO.h in CopyFiles */, ); runOnlyForDeploymentPostprocessing = 0; @@ -358,9 +369,9 @@ C07AD057D3C8FBDC7AC95733 /* MCOIMAPSession.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCOIMAPSession.mm; sourceTree = "<group>"; }; C07AD44B013BB42A240B4F04 /* NSError+MCO.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSError+MCO.h"; sourceTree = "<group>"; }; C07AD721E48D521D6E3F4943 /* MCOIMAPCheckAccountOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCOIMAPCheckAccountOperation.mm; sourceTree = "<group>"; }; - C07AD972CED96BD61F395435 /* MCOConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOConstants.h; sourceTree = "<group>"; }; C07AD98150338A79BF83CCEF /* MCOIMAPCheckAccountOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOIMAPCheckAccountOperation.h; sourceTree = "<group>"; }; C07ADFE43E22B38EFF23ADB5 /* NSError+MCO.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = "NSError+MCO.mm"; sourceTree = "<group>"; }; + C623C58A16FD8C22001BBEFC /* MCOAbstractMessage+Private.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MCOAbstractMessage+Private.h"; sourceTree = "<group>"; }; C62C6ED216A2A0E600737497 /* MCIMAPIdentityOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPIdentityOperation.cc; sourceTree = "<group>"; }; C62C6ED316A2A0E600737497 /* MCIMAPIdentityOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPIdentityOperation.h; sourceTree = "<group>"; }; C62C6ED616A398FA00737497 /* MCIMAPFolderInfoOperation.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCIMAPFolderInfoOperation.cc; sourceTree = "<group>"; }; @@ -423,6 +434,19 @@ C64BB25716FD3BC2000DB34C /* MCOOperation.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOOperation.h; sourceTree = "<group>"; }; C64BB25816FD3BC5000DB34C /* MCOOperation.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCOOperation.mm; sourceTree = "<group>"; }; C64BB25916FD3BC8000DB34C /* MCOOperation+Private.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MCOOperation+Private.h"; sourceTree = "<group>"; }; + C64BB25C16FD4377000DB34C /* MCOAttachment.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOAttachment.h; sourceTree = "<group>"; }; + C64BB25D16FD4377000DB34C /* MCOAttachment.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCOAttachment.mm; sourceTree = "<group>"; }; + C64BB25F16FD438F000DB34C /* MCOMessageBuilder.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOMessageBuilder.h; sourceTree = "<group>"; }; + C64BB26016FD438F000DB34C /* MCOMessageBuilder.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCOMessageBuilder.mm; sourceTree = "<group>"; }; + C64BB26216FD43A1000DB34C /* MCOMessageParser.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOMessageParser.h; sourceTree = "<group>"; }; + C64BB26316FD43A1000DB34C /* MCOMessageParser.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCOMessageParser.mm; sourceTree = "<group>"; }; + C64BB26516FD43E2000DB34C /* MCOMessagePart.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOMessagePart.h; sourceTree = "<group>"; }; + C64BB26616FD43E2000DB34C /* MCOMessagePart.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCOMessagePart.mm; sourceTree = "<group>"; }; + C64BB26816FD44C2000DB34C /* MCOMultipart.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOMultipart.h; sourceTree = "<group>"; }; + C64BB26916FD44C2000DB34C /* MCOMultipart.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MCOMultipart.mm; sourceTree = "<group>"; }; + C64BB26B16FD4C3B000DB34C /* MCORFC822.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MCORFC822.h; sourceTree = "<group>"; }; + C64BB26C16FD62FB000DB34C /* MCOUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MCOUtils.h; sourceTree = "<group>"; }; + C64BB26D16FD63F6000DB34C /* MCOConstants.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCOConstants.h; sourceTree = "<group>"; }; C64EA537169E772200778456 /* libmailcore2.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; includeInIndex = 0; path = libmailcore2.a; sourceTree = BUILT_PRODUCTS_DIR; }; C64EA68C169E847800778456 /* MCIMAPAsyncConnection.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MCIMAPAsyncConnection.h; sourceTree = "<group>"; }; C64EA68F169E847800778456 /* MCSMTPAsyncSession.cc */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = MCSMTPAsyncSession.cc; sourceTree = "<group>"; }; @@ -629,6 +653,7 @@ children = ( C64BB23616EDAA2B000DB34C /* MCOAbstract.h */, C64BB23316EDAA17000DB34C /* MCOAbstractMessage.h */, + C623C58A16FD8C22001BBEFC /* MCOAbstractMessage+Private.h */, C64BB23416EDAA17000DB34C /* MCOAbstractMessage.mm */, C64BB23716EDAA3F000DB34C /* MCOAbstractMessagePart.h */, C64BB23816EDAA3F000DB34C /* MCOAbstractMessagePart.mm */, @@ -640,6 +665,7 @@ C64BB24016EDAAF3000DB34C /* MCOAddress.h */, C64BB24616EEF89D000DB34C /* MCOAddress+Private.h */, C64BB24116EDAAF3000DB34C /* MCOAddress.mm */, + C64BB26D16FD63F6000DB34C /* MCOConstants.h */, C64BB24316EDAAFD000DB34C /* MCOMessageHeader.h */, C64BB24E16EEFFE2000DB34C /* MCOMessageHeader+Private.h */, C64BB24416EDAAFE000DB34C /* MCOMessageHeader.mm */, @@ -647,6 +673,24 @@ path = abstract; sourceTree = "<group>"; }; + C64BB25B16FD3E98000DB34C /* rfc822 */ = { + isa = PBXGroup; + children = ( + C64BB25C16FD4377000DB34C /* MCOAttachment.h */, + C64BB25D16FD4377000DB34C /* MCOAttachment.mm */, + C64BB25F16FD438F000DB34C /* MCOMessageBuilder.h */, + C64BB26016FD438F000DB34C /* MCOMessageBuilder.mm */, + C64BB26216FD43A1000DB34C /* MCOMessageParser.h */, + C64BB26316FD43A1000DB34C /* MCOMessageParser.mm */, + C64BB26516FD43E2000DB34C /* MCOMessagePart.h */, + C64BB26616FD43E2000DB34C /* MCOMessagePart.mm */, + C64BB26816FD44C2000DB34C /* MCOMultipart.h */, + C64BB26916FD44C2000DB34C /* MCOMultipart.mm */, + C64BB26B16FD4C3B000DB34C /* MCORFC822.h */, + ); + path = rfc822; + sourceTree = "<group>"; + }; C64EA52C169E772200778456 = { isa = PBXGroup; children = ( @@ -783,11 +827,11 @@ C64EA691169E847800778456 /* core */ = { isa = PBXGroup; children = ( - C63CD67616BDCDD300DB18F1 /* renderer */, C64EA692169E847800778456 /* abstract */, C64EA6A1169E847800778456 /* basetypes */, C64EA6C3169E847800778456 /* imap */, C64EA6D8169E847800778456 /* pop */, + C63CD67616BDCDD300DB18F1 /* renderer */, C64EA6DF169E847800778456 /* rfc822 */, C64EA6EB169E847800778456 /* smtp */, C64EA782169F23AB00778456 /* MCCore.h */, @@ -955,9 +999,9 @@ children = ( C64BB23216EDA9E8000DB34C /* abstract */, F8EA941316BAED500011AC6F /* imap */, + C64BB25B16FD3E98000DB34C /* rfc822 */, C6D42C1816AE03D6002BB4F9 /* utils */, C6EB30DC16B5B7770091F4F1 /* MCObjC.h */, - C07AD972CED96BD61F395435 /* MCOConstants.h */, ); path = objc; sourceTree = "<group>"; @@ -965,25 +1009,26 @@ C6D42C1816AE03D6002BB4F9 /* utils */ = { isa = PBXGroup; children = ( + C64FF38F16B3C13000F8C162 /* MCOObjectWrapper.h */, + C64FF39016B3C13000F8C162 /* MCOObjectWrapper.mm */, + C64BB25916FD3BC8000DB34C /* MCOOperation+Private.h */, C64BB25716FD3BC2000DB34C /* MCOOperation.h */, C64BB25816FD3BC5000DB34C /* MCOOperation.mm */, - C64BB25916FD3BC8000DB34C /* MCOOperation+Private.h */, + C64BB26C16FD62FB000DB34C /* MCOUtils.h */, + C6EB30FD16B8E50F0091F4F1 /* NSArray+MCO.h */, + C6EB30FC16B8E50F0091F4F1 /* NSArray+MCO.mm */, C6D42C1916AE03D6002BB4F9 /* NSData+MCO.h */, C6D42C1A16AE03D6002BB4F9 /* NSData+MCO.mm */, - C6D42C1B16AE03D6002BB4F9 /* NSString+MCO.h */, - C6D42C1C16AE03D6002BB4F9 /* NSString+MCO.mm */, - C64FF38F16B3C13000F8C162 /* MCOObjectWrapper.h */, - C64FF39016B3C13000F8C162 /* MCOObjectWrapper.mm */, - C07AD44B013BB42A240B4F04 /* NSError+MCO.h */, - C07ADFE43E22B38EFF23ADB5 /* NSError+MCO.mm */, C6EB30F516B8C9480091F4F1 /* NSDictionary+MCO.h */, C6EB30F616B8C9480091F4F1 /* NSDictionary+MCO.mm */, - C6EB30FD16B8E50F0091F4F1 /* NSArray+MCO.h */, - C6EB30FC16B8E50F0091F4F1 /* NSArray+MCO.mm */, - C64BB25016FC2846000DB34C /* NSValue+MCO.h */, - C64BB25116FC2848000DB34C /* NSValue+MCO.mm */, + C07AD44B013BB42A240B4F04 /* NSError+MCO.h */, + C07ADFE43E22B38EFF23ADB5 /* NSError+MCO.mm */, C6EB30FF16B8E6E50091F4F1 /* NSObject+MCO.h */, C6EB310016B8E6E50091F4F1 /* NSObject+MCO.mm */, + C6D42C1B16AE03D6002BB4F9 /* NSString+MCO.h */, + C6D42C1C16AE03D6002BB4F9 /* NSString+MCO.mm */, + C64BB25016FC2846000DB34C /* NSValue+MCO.h */, + C64BB25116FC2848000DB34C /* NSValue+MCO.mm */, ); path = utils; sourceTree = "<group>"; @@ -1185,6 +1230,11 @@ C64BB24516EDAAFE000DB34C /* MCOMessageHeader.mm in Sources */, C64BB25216FC284A000DB34C /* NSValue+MCO.mm in Sources */, C64BB25A16FD3BCB000DB34C /* MCOOperation.mm in Sources */, + C64BB25E16FD4377000DB34C /* MCOAttachment.mm in Sources */, + C64BB26116FD4390000DB34C /* MCOMessageBuilder.mm in Sources */, + C64BB26416FD43A1000DB34C /* MCOMessageParser.mm in Sources */, + C64BB26716FD43E2000DB34C /* MCOMessagePart.mm in Sources */, + C64BB26A16FD44C2000DB34C /* MCOMultipart.mm in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/src/core/abstract/MCMessageConstants.h b/src/core/abstract/MCMessageConstants.h index e3a7c3e3..7b406097 100644 --- a/src/core/abstract/MCMessageConstants.h +++ b/src/core/abstract/MCMessageConstants.h @@ -90,6 +90,7 @@ namespace mailcore { IMAPCapabilityCondstore, IMAPCapabilityEnable, IMAPCapabilityIdle, + IMAPCapabilityId, IMAPCapabilityLiteralPlus, IMAPCapabilityMultiAppend, IMAPCapabilityNamespace, @@ -196,7 +197,8 @@ namespace mailcore { ErrorAuthenticationRequired, ErrorFetchMessageList, ErrorDeleteMessage, - ErrorInvalidAccount, + ErrorInvalidAccount, + ErrorCapability, }; enum PartType { diff --git a/src/core/basetypes/MCObject.h b/src/core/basetypes/MCObject.h index caeded70..0fd65d09 100644 --- a/src/core/basetypes/MCObject.h +++ b/src/core/basetypes/MCObject.h @@ -6,6 +6,10 @@ #ifdef __cplusplus +#define MC_PROPERTY(mcType, setter, getter) \ + virtual void setter(mcType * getter); \ + virtual mcType * getter(); + namespace mailcore { extern bool zombieEnabled; @@ -23,7 +27,7 @@ namespace mailcore { virtual Object * autorelease(); virtual String * description(); virtual String * className(); - + virtual bool isEqual(Object * otherObject); virtual unsigned int hash(); diff --git a/src/core/renderer/MCHTMLRenderer.cpp b/src/core/renderer/MCHTMLRenderer.cpp index ba78656b..d168cd8e 100644 --- a/src/core/renderer/MCHTMLRenderer.cpp +++ b/src/core/renderer/MCHTMLRenderer.cpp @@ -333,7 +333,7 @@ String * htmlForAbstractMessagePart(AbstractMessagePart * part, htmlRendererCont String * result = String::string(); HashMap * values = context->htmlCallback->templateValuesForHeader(part->header()); - String * headerString = renderTemplate(context->htmlCallback->templateForMainHeader(), values); + String * headerString = renderTemplate(context->htmlCallback->templateForEmbeddedMessageHeader(), values); result->appendString(headerString); result->appendString(substring); return result; diff --git a/src/core/renderer/MCHTMLRendererCallback.cpp b/src/core/renderer/MCHTMLRendererCallback.cpp index 3ceaeb40..4de4630c 100644 --- a/src/core/renderer/MCHTMLRendererCallback.cpp +++ b/src/core/renderer/MCHTMLRendererCallback.cpp @@ -206,7 +206,7 @@ mailcore::String * HTMLRendererTemplateCallback::templateForMainHeader() </div>"); } -mailcore::String * HTMLRendererTemplateCallback::templateForHeader() +mailcore::String * HTMLRendererTemplateCallback::templateForEmbeddedMessageHeader() { return templateForMainHeader(); } diff --git a/src/core/renderer/MCHTMLRendererCallback.h b/src/core/renderer/MCHTMLRendererCallback.h index 2972249e..c2015e16 100644 --- a/src/core/renderer/MCHTMLRendererCallback.h +++ b/src/core/renderer/MCHTMLRendererCallback.h @@ -33,11 +33,11 @@ namespace mailcore { virtual HashMap * templateValuesForPart(AbstractPart * part); virtual String * templateForMainHeader(); - virtual String * templateForHeader(); virtual String * templateForImage(); virtual String * templateForAttachment(); virtual String * templateForMessage(); virtual String * templateForEmbeddedMessage(); + virtual String * templateForEmbeddedMessageHeader(); virtual String * templateForAttachmentSeparator(); virtual String * filterHTMLForPart(String * html); diff --git a/src/core/rfc822/MCAttachment.cc b/src/core/rfc822/MCAttachment.cc index 7926baa9..5020ebd9 100644 --- a/src/core/rfc822/MCAttachment.cc +++ b/src/core/rfc822/MCAttachment.cc @@ -121,7 +121,7 @@ String * Attachment::mimeTypeForFilename(String * filename) return NULL; } -Attachment * Attachment::attachmentWithContentOfFile(String * filename) +Attachment * Attachment::attachmentWithContentsOfFile(String * filename) { Attachment * attachment; String * mimeType; diff --git a/src/core/rfc822/MCAttachment.h b/src/core/rfc822/MCAttachment.h index ac12a5b5..ed0d8f1d 100644 --- a/src/core/rfc822/MCAttachment.h +++ b/src/core/rfc822/MCAttachment.h @@ -16,7 +16,7 @@ namespace mailcore { class Attachment : public AbstractPart { public: static String * mimeTypeForFilename(String * filename); - static Attachment * attachmentWithContentOfFile(String * filename); + static Attachment * attachmentWithContentsOfFile(String * filename); static Attachment * attachmentWithHTMLString(String * htmlString); static Attachment * attachmentWithRFC822Message(Data * messageData); static Attachment * attachmentWithText(String * text); diff --git a/src/core/rfc822/MCMessageParser.h b/src/core/rfc822/MCMessageParser.h index ff2f1f50..ba129933 100644 --- a/src/core/rfc822/MCMessageParser.h +++ b/src/core/rfc822/MCMessageParser.h @@ -22,9 +22,6 @@ namespace mailcore { virtual AbstractPart * mainPart(); virtual Data * data(); - virtual AbstractPart * partForContentID(String * contentID); - virtual AbstractPart * partForUniqueID(String * uniqueID); - virtual String * htmlRendering(HTMLRendererTemplateCallback * htmlCallback = NULL); public: // subclass behavior @@ -32,6 +29,9 @@ namespace mailcore { virtual String * description(); virtual Object * copy(); + virtual AbstractPart * partForContentID(String * contentID); + virtual AbstractPart * partForUniqueID(String * uniqueID); + private: Data * mData; AbstractPart * mMainPart; diff --git a/src/objc/MCObjC.h b/src/objc/MCObjC.h index 31aba9c1..a54af7d6 100644 --- a/src/objc/MCObjC.h +++ b/src/objc/MCObjC.h @@ -11,17 +11,7 @@ #ifdef __OBJC__ -#import <mailcore/MCOObjectWrapper.h> -#import <mailcore/NSData+MCO.h> -#import <mailcore/NSString+MCO.h> -#import <mailcore/NSDictionary+MCO.h> -#import <mailcore/NSArray+MCO.h> -#import <mailcore/NSObject+MCO.h> -#import <mailcore/MCOObjectWrapper.h> -#import <mailcore/NSError+MCO.h> -#import <mailcore/MCOOperation.h> -#import <mailcore/MCOConstants.h> - +#import <mailcore/MCOUtils.h> #import <mailcore/MCOAbstract.h> #import <mailcore/MCOIMAP.h> diff --git a/src/objc/abstract/MCOAbstractMessage+Private.h b/src/objc/abstract/MCOAbstractMessage+Private.h new file mode 100644 index 00000000..82e94c12 --- /dev/null +++ b/src/objc/abstract/MCOAbstractMessage+Private.h @@ -0,0 +1,26 @@ +// +// MCOAbstractMessage+Private.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/23/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef mailcore2_MCOAbstractMessage_Private_h +#define mailcore2_MCOAbstractMessage_Private_h + +#ifdef __cplusplus + +namespace mailcore { + class AbstractMessage; +} + +@interface MCOAbstractMessage (Private) + +- (id) initWithMCMessage:(mailcore::AbstractMessage *)message; + +@end + +#endif + +#endif diff --git a/src/objc/abstract/MCOAbstractMessage.h b/src/objc/abstract/MCOAbstractMessage.h index 60ed63cd..c5a2f27f 100644 --- a/src/objc/abstract/MCOAbstractMessage.h +++ b/src/objc/abstract/MCOAbstractMessage.h @@ -6,6 +6,10 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_MCOABSTRACTMESSAGE_H_ + +#define __MAILCORE_MCOABSTRACTMESSAGE_H_ + #import <Foundation/Foundation.h> @class MCOMessageHeader; @@ -19,3 +23,5 @@ - (MCOAbstractPart *) partForUniqueID:(NSString *)uniqueID; @end + +#endif diff --git a/src/objc/abstract/MCOAbstractMessage.mm b/src/objc/abstract/MCOAbstractMessage.mm index d9ab7a95..e0b4bd37 100644 --- a/src/objc/abstract/MCOAbstractMessage.mm +++ b/src/objc/abstract/MCOAbstractMessage.mm @@ -21,7 +21,14 @@ mailcore::AbstractMessage * _message; } -- (id) initWithPart:(mailcore::AbstractMessage *)message +#define nativeType mailcore::AbstractMessage + +- (mailcore::Object *) mco_mcObject +{ + return _message; +} + +- (id) initWithMCMessage:(mailcore::AbstractMessage *)message { self = [super init]; @@ -37,29 +44,16 @@ [super dealloc]; } -- (MCOMessageHeader *) header -{ - return (MCOMessageHeader *) [NSObject mco_objectWithMCObject:((mailcore::AbstractMessage *) [self mco_mcObject])->header()]; -} - -- (void) setHeader:(MCOMessageHeader *)header -{ - ((mailcore::AbstractMessage *) [self mco_mcObject])->setHeader((mailcore::MessageHeader *) [header mco_mcObject]); -} +MCO_OBJC_SYNTHESIZE(MessageHeader, setHeader, header) - (MCOAbstractPart *) partForContentID:(NSString *)contentID { - return (MCOAbstractPart *) [NSObject mco_objectWithMCObject:((mailcore::AbstractMessage *) [self mco_mcObject])->partForContentID([contentID mco_mcString])]; + return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->partForContentID([contentID mco_mcString])); } - (MCOAbstractPart *) partForUniqueID:(NSString *)uniqueID { - return (MCOAbstractPart *) [NSObject mco_objectWithMCObject:((mailcore::AbstractMessage *) [self mco_mcObject])->partForUniqueID([uniqueID mco_mcString])]; -} - -- (mailcore::Object *) mco_mcObject -{ - return _message; + return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->partForUniqueID([uniqueID mco_mcString])); } @end diff --git a/src/objc/abstract/MCOAbstractMessagePart.h b/src/objc/abstract/MCOAbstractMessagePart.h index 297df341..8675fc17 100644 --- a/src/objc/abstract/MCOAbstractMessagePart.h +++ b/src/objc/abstract/MCOAbstractMessagePart.h @@ -6,6 +6,10 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_MCOABSTRACTMESSAGEPART_H_ + +#define __MAILCORE_MCOABSTRACTMESSAGEPART_H_ + #import <Foundation/Foundation.h> #import <mailcore/MCOAbstractPart.h> @@ -17,3 +21,6 @@ @property (nonatomic, retain) MCOAbstractPart * mainPart; @end + +#endif + diff --git a/src/objc/abstract/MCOAbstractMessagePart.mm b/src/objc/abstract/MCOAbstractMessagePart.mm index 4468fd6f..7d66a355 100644 --- a/src/objc/abstract/MCOAbstractMessagePart.mm +++ b/src/objc/abstract/MCOAbstractMessagePart.mm @@ -16,24 +16,9 @@ @implementation MCOAbstractMessagePart -- (void) setHeader:(MCOMessageHeader *)header -{ - ((mailcore::AbstractMessagePart *) [self mco_mcObject])->setHeader((mailcore::MessageHeader *) [header mco_mcObject]); -} +#define nativeType mailcore::AbstractMessagePart -- (MCOMessageHeader *) header -{ - return (MCOMessageHeader *) [NSObject mco_objectWithMCObject:((mailcore::AbstractMessagePart *) [self mco_mcObject])->header()]; -} - -- (void) setMainPart:(MCOAbstractPart *)part -{ - ((mailcore::AbstractMessagePart *) [self mco_mcObject])->setMainPart((mailcore::AbstractPart *) [part mco_mcObject]); -} - -- (MCOAbstractPart *) mainPart -{ - return (MCOAbstractPart *) [NSObject mco_objectWithMCObject:((mailcore::AbstractMessagePart *) [self mco_mcObject])->mainPart()]; -} +MCO_OBJC_SYNTHESIZE(MessageHeader, setHeader, header) +MCO_OBJC_SYNTHESIZE(AbstractMessagePart, setMainPart, mainPart) @end diff --git a/src/objc/abstract/MCOAbstractMultipart.h b/src/objc/abstract/MCOAbstractMultipart.h index 37422d71..3eeb6794 100644 --- a/src/objc/abstract/MCOAbstractMultipart.h +++ b/src/objc/abstract/MCOAbstractMultipart.h @@ -6,6 +6,10 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_MCOABSTRACTMULTIPART_H_ + +#define __MAILCORE_MCOABSTRACTMULTIPART_H_ + #import <Foundation/Foundation.h> #import <mailcore/MCOAbstractPart.h> @@ -14,3 +18,5 @@ @property (nonatomic, copy) NSArray * parts; @end + +#endif diff --git a/src/objc/abstract/MCOAbstractMultipart.mm b/src/objc/abstract/MCOAbstractMultipart.mm index 568471d1..25e633cd 100644 --- a/src/objc/abstract/MCOAbstractMultipart.mm +++ b/src/objc/abstract/MCOAbstractMultipart.mm @@ -14,14 +14,8 @@ @implementation MCOAbstractMultipart -- (NSArray *) parts -{ - return (NSArray *) [NSObject mco_objectWithMCObject:((mailcore::AbstractMultipart *) [self mco_mcObject])->parts()]; -} +#define nativeType mailcore::AbstractMultipart -- (void) setParts:(NSArray *)parts -{ - ((mailcore::AbstractMultipart *) [self mco_mcObject])->setParts((mailcore::Array *) [parts mco_mcObject]); -} +MCO_OBJC_SYNTHESIZE_ARRAY(setParts, parts) @end diff --git a/src/objc/abstract/MCOAbstractPart+Private.h b/src/objc/abstract/MCOAbstractPart+Private.h index abc20944..47ea189b 100644 --- a/src/objc/abstract/MCOAbstractPart+Private.h +++ b/src/objc/abstract/MCOAbstractPart+Private.h @@ -6,6 +6,10 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_MCOABSTRACTPART_PRIVATE_H_ + +#define __MAILCORE_MCOABSTRACTPART_PRIVATE_H_ + #include <mailcore/MCOAbstractPart.h> #ifdef __cplusplus @@ -16,8 +20,10 @@ namespace mailcore { @interface MCOAbstractPart (Private) -- (id) initWithPart:(mailcore::AbstractPart *)part; +- (id) initWithMCPart:(mailcore::AbstractPart *)part; @end #endif + +#endif diff --git a/src/objc/abstract/MCOAbstractPart.h b/src/objc/abstract/MCOAbstractPart.h index 2ffcf338..b46f6724 100644 --- a/src/objc/abstract/MCOAbstractPart.h +++ b/src/objc/abstract/MCOAbstractPart.h @@ -6,6 +6,10 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_MCOABSTRACTPART_H_ + +#define __MAILCORE_MCOABSTRACTPART_H_ + #import <Foundation/Foundation.h> @class MCOAbstractMessage; @@ -34,3 +38,5 @@ typedef enum { - (MCOAbstractPart *) partForUniqueID:(NSString *)uniqueID; @end + +#endif diff --git a/src/objc/abstract/MCOAbstractPart.mm b/src/objc/abstract/MCOAbstractPart.mm index 1e2f2ef7..2adf8891 100644 --- a/src/objc/abstract/MCOAbstractPart.mm +++ b/src/objc/abstract/MCOAbstractPart.mm @@ -18,7 +18,14 @@ mailcore::AbstractPart * _part; } -- (id) initWithPart:(mailcore::AbstractPart *)part +#define nativeType mailcore::AbstractPart + +- (mailcore::Object *) mco_mcObject +{ + return _part; +} + +- (id) initWithMCPart:(mailcore::AbstractPart *)part { self = [super init]; @@ -34,109 +41,25 @@ [super dealloc]; } -- (MCOPartType) partType -{ - return (MCOPartType) _part->partType(); -} - -- (void) setPartType:(MCOPartType)partType -{ - _part->setPartType((mailcore::PartType) partType); -} - -- (NSString *) filename -{ - return [NSString mco_stringWithMCString:_part->filename()]; -} - -- (void) setFilename:(NSString *)filename -{ - _part->setFilename([filename mco_mcString]); -} - -- (NSString *) mimeType -{ - return [NSString mco_stringWithMCString:_part->mimeType()]; -} - -- (void) setMimeType:(NSString *)mimeType -{ - _part->setMimeType([mimeType mco_mcString]); -} - -- (NSString *) charset -{ - return [NSString mco_stringWithMCString:_part->charset()]; -} - -- (void) setCharset:(NSString *)charset -{ - _part->setCharset([charset mco_mcString]); -} +MCO_OBJC_SYNTHESIZE_SCALAR(MCOPartType, mailcore::PartType, setPartType, partType) -- (NSString *) uniqueID -{ - return [NSString mco_stringWithMCString:_part->uniqueID()]; -} - -- (void) setUniqueID:(NSString *)uniqueID -{ - _part->setUniqueID([uniqueID mco_mcString]); -} - -- (NSString *) contentID -{ - return [NSString mco_stringWithMCString:_part->contentID()]; -} - -- (void) setContentID:(NSString *)contentID -{ - _part->setContentID([contentID mco_mcString]); -} - -- (NSString *) contentLocation -{ - return [NSString mco_stringWithMCString:_part->contentLocation()]; -} - -- (void) setContentLocation:(NSString *)contentLocation -{ - _part->setContentLocation([contentLocation mco_mcString]); -} - -- (BOOL) isInlineAttachment -{ - return _part->isInlineAttachment(); -} - -- (void) setInlineAttachment:(BOOL)inlineAttachment -{ - _part->setInlineAttachment(inlineAttachment); -} - -- (MCOAbstractMessage *) message -{ - return (MCOAbstractMessage *) [NSObject mco_objectWithMCObject:_part->message()]; -} - -- (void) setMessage:(MCOAbstractMessage *)message -{ - _part->setMessage((mailcore::AbstractMessage *) [message mco_mcObject]); -} +MCO_OBJC_SYNTHESIZE_STRING(setFilename, filename) +MCO_OBJC_SYNTHESIZE_STRING(setMimeType, mimeType) +MCO_OBJC_SYNTHESIZE_STRING(setCharset, charset) +MCO_OBJC_SYNTHESIZE_STRING(setUniqueID, uniqueID) +MCO_OBJC_SYNTHESIZE_STRING(setContentID, contentID) +MCO_OBJC_SYNTHESIZE_STRING(setContentLocation, contentLocation) +MCO_OBJC_SYNTHESIZE_BOOL(setInlineAttachment, isInlineAttachment) +MCO_OBJC_SYNTHESIZE(AbstractMessage, setMessage, message) - (MCOAbstractPart *) partForContentID:(NSString *)contentID { - return (MCOAbstractPart *) [NSObject mco_objectWithMCObject:_part->partForContentID([contentID mco_mcString])]; + return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->partForContentID([contentID mco_mcString])); } - (MCOAbstractPart *) partForUniqueID:(NSString *)uniqueID { - return (MCOAbstractPart *) [NSObject mco_objectWithMCObject:_part->partForUniqueID([uniqueID mco_mcString])]; -} - -- (mailcore::Object *) mco_mcObject -{ - return _part; + return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->partForUniqueID([uniqueID mco_mcString])); } @end diff --git a/src/objc/abstract/MCOAddress+Private.h b/src/objc/abstract/MCOAddress+Private.h index 34fce13c..ac7f7703 100644 --- a/src/objc/abstract/MCOAddress+Private.h +++ b/src/objc/abstract/MCOAddress+Private.h @@ -6,6 +6,10 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_MCOADDRESS_PRIVATE_H_ + +#define __MAILCORE_MCOADDRESS_PRIVATE_H_ + #ifdef __cplusplus namespace mailcore { class Address; @@ -18,3 +22,5 @@ namespace mailcore { @end #endif + +#endif diff --git a/src/objc/abstract/MCOAddress.h b/src/objc/abstract/MCOAddress.h index b4b1b902..7362af93 100644 --- a/src/objc/abstract/MCOAddress.h +++ b/src/objc/abstract/MCOAddress.h @@ -6,6 +6,10 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_MCOADDRESS_H_ + +#define __MAILCORE_MCOADDRESS_H_ + #import <Foundation/Foundation.h> @interface MCOAddress : NSObject <NSCopying> @@ -26,3 +30,5 @@ - (NSString *) nonEncodedRFC822String; @end + +#endif diff --git a/src/objc/abstract/MCOAddress.mm b/src/objc/abstract/MCOAddress.mm index 37727f0c..6afb0134 100644 --- a/src/objc/abstract/MCOAddress.mm +++ b/src/objc/abstract/MCOAddress.mm @@ -19,9 +19,11 @@ mailcore::Address * _nativeAddress; } +#define nativeType mailcore::Address + + (void) initialize { - MCORegisterClass(self, &typeid(mailcore::Address)); + MCORegisterClass(self, &typeid(nativeType)); } + (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object @@ -30,6 +32,11 @@ return [[[self alloc] initWithMCAddress:address] autorelease]; } +- (mailcore::Object *) mco_mcObject +{ + return _nativeAddress; +} + + (MCOAddress *) addressWithDisplayName:(NSString *)displayName mailbox:(NSString *)mailbox { @@ -110,42 +117,20 @@ - (NSString *) description { - return [NSString mco_stringWithMCObject:_nativeAddress]; -} - -- (NSString *) displayName -{ - return [NSString mco_stringWithMCString:_nativeAddress->displayName()]; -} - -- (void) setDisplayName:(NSString *)displayName -{ - _nativeAddress->setDisplayName([displayName mco_mcString]); -} - -- (NSString *) mailbox -{ - return [NSString mco_stringWithMCString:_nativeAddress->mailbox()]; + return MCO_OBJC_BRIDGE_GET(description); } -- (void) setMailbox:(NSString *)mailbox -{ - _nativeAddress->setMailbox([mailbox mco_mcString]); -} +MCO_OBJC_SYNTHESIZE_STRING(setDisplayName, displayName) +MCO_OBJC_SYNTHESIZE_STRING(setMailbox, mailbox) - (NSString *) RFC822String { - return [NSString mco_stringWithMCString:_nativeAddress->RFC822String()]; + return MCO_OBJC_BRIDGE_GET(RFC822String); } - (NSString *) nonEncodedRFC822String { - return [NSString mco_stringWithMCString:_nativeAddress->nonEncodedRFC822String()]; -} - -- (mailcore::Object *) mco_mcObject -{ - return _nativeAddress; + return MCO_OBJC_BRIDGE_GET(nonEncodedRFC822String); } @end diff --git a/src/objc/MCOConstants.h b/src/objc/abstract/MCOConstants.h index 257b0d68..257b0d68 100644 --- a/src/objc/MCOConstants.h +++ b/src/objc/abstract/MCOConstants.h diff --git a/src/objc/abstract/MCOMessageHeader+Private.h b/src/objc/abstract/MCOMessageHeader+Private.h index fe7c77bd..1c12736d 100644 --- a/src/objc/abstract/MCOMessageHeader+Private.h +++ b/src/objc/abstract/MCOMessageHeader+Private.h @@ -6,6 +6,10 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_MCOMESSAGEHEADER_PRIVATE_H_ + +#define __MAILCORE_MCOMESSAGEHEADER_PRIVATE_H_ + #ifdef __cplusplus namespace mailcore { class MessageHeader; @@ -18,3 +22,5 @@ namespace mailcore { @end #endif + +#endif diff --git a/src/objc/abstract/MCOMessageHeader.h b/src/objc/abstract/MCOMessageHeader.h index 97a48023..09ed130e 100644 --- a/src/objc/abstract/MCOMessageHeader.h +++ b/src/objc/abstract/MCOMessageHeader.h @@ -6,6 +6,10 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_MCOMESSAGEHEADER_H_ + +#define __MAILCORE_MCOMESSAGEHEADER_H_ + #import <Foundation/Foundation.h> @class MCOAddress; @@ -26,9 +30,11 @@ @property (nonatomic, copy) NSString * subject; @property (nonatomic, copy) NSString * userAgent; -- (NSString *) extractedSuject; -- (NSString *) partialExtractedSuject; +- (NSString *) extractedSubject; +- (NSString *) partialExtractedSubject; - (void) importHeadersData:(NSData *)data; @end + +#endif diff --git a/src/objc/abstract/MCOMessageHeader.mm b/src/objc/abstract/MCOMessageHeader.mm index ac5e8a81..649819e9 100644 --- a/src/objc/abstract/MCOMessageHeader.mm +++ b/src/objc/abstract/MCOMessageHeader.mm @@ -18,22 +18,30 @@ #include "NSData+MCO.h" #include "MCOAddress.h" #include "MCOAddress+Private.h" +#include "MCAddress.h" @implementation MCOMessageHeader { mailcore::MessageHeader * _nativeHeader; } +#define nativeType mailcore::MessageHeader + + (void) initialize { - MCORegisterClass(self, &typeid(mailcore::MessageHeader)); + MCORegisterClass(self, &typeid(nativeType)); } -+ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object ++ (id) mco_objectWithMCObject:(mailcore::Object *)object { mailcore::MessageHeader * header = (mailcore::MessageHeader *) object; return [[[self alloc] initWithMCMessageHeader:header] autorelease]; } +- (mailcore::Object *) mco_mcObject +{ + return _nativeHeader; +} + - (id) init { self = [super init]; @@ -71,201 +79,31 @@ - (NSString *) description { - return [NSString mco_stringWithMCObject:_nativeHeader]; -} - -- (NSString *) messageID -{ - return [NSString mco_stringWithMCString:_nativeHeader->messageID()]; -} - -- (void) setMessageID:(NSString *)messageID -{ - _nativeHeader->setMessageID([messageID mco_mcString]); -} - -- (NSArray *) references -{ - mailcore::Array * msgIDs = _nativeHeader->references(); - if (msgIDs == NULL) - return nil; - - NSMutableArray * result = [NSMutableArray array]; - for(unsigned int i = 0 ; i < msgIDs->count() ; i ++) { - mailcore::String * nativeMsgID = (mailcore::String *) msgIDs->objectAtIndex(i); - [result addObject:[NSString mco_stringWithMCString:nativeMsgID]]; - } - return result; -} - -- (void) setReferences:(NSArray *)references -{ - _nativeHeader->setReferences((mailcore::Array *) [references mco_mcArray]); -} - -- (NSArray *) inReplyTo -{ - mailcore::Array * msgIDs = _nativeHeader->inReplyTo(); - if (msgIDs == NULL) - return nil; - - NSMutableArray * result = [NSMutableArray array]; - for(unsigned int i = 0 ; i < msgIDs->count() ; i ++) { - mailcore::String * nativeMsgID = (mailcore::String *) msgIDs->objectAtIndex(i); - [result addObject:[NSString mco_stringWithMCString:nativeMsgID]]; - } - return result; -} - -- (void) setInReplyTo:(NSArray *)inReplyTo -{ - _nativeHeader->setInReplyTo([inReplyTo mco_mcArray]); -} - -- (NSDate *) date -{ - return [NSDate dateWithTimeIntervalSince1970:_nativeHeader->date()]; -} - -- (void) setDate:(NSDate *)date -{ - _nativeHeader->setDate([date timeIntervalSince1970]); -} - -- (NSDate *) receivedDate -{ - return [NSDate dateWithTimeIntervalSince1970:((NSTimeInterval) _nativeHeader->receivedDate())]; -} - -- (void) setReceivedDate:(NSDate *)receivedDate -{ - _nativeHeader->setReceivedDate(((NSTimeInterval) [receivedDate timeIntervalSince1970])); -} - -- (MCOAddress *) sender -{ - return [[[MCOAddress alloc] initWithMCAddress:_nativeHeader->sender()] autorelease]; -} - -- (void) setSender:(MCOAddress *)sender -{ - _nativeHeader->setSender((mailcore::Address *) [sender mco_mcObject]); -} - -- (MCOAddress *) from -{ - return [MCOAddress addressWithMCAddress:_nativeHeader->from()]; -} - -- (void) setFrom:(MCOAddress *)from -{ - _nativeHeader->setFrom((mailcore::Address *) [from mco_mcObject]); -} - -- (NSArray *) to -{ - mailcore::Array * addresses = _nativeHeader->to(); - if (addresses == NULL) - return nil; - - NSMutableArray * result = [NSMutableArray array]; - for(unsigned int i = 0 ; i < addresses->count() ; i ++) { - mailcore::Address * nativeAddress = (mailcore::Address *) addresses->objectAtIndex(i); - [result addObject:[MCOAddress addressWithMCAddress:nativeAddress]]; - } - return result; + return MCO_OBJC_BRIDGE_GET(description); } -- (void) setTo:(NSArray *)to -{ - _nativeHeader->setTo((mailcore::Array *) [to mco_mcObject]); -} +MCO_OBJC_SYNTHESIZE_STRING(setMessageID, messageID) +MCO_OBJC_SYNTHESIZE_ARRAY(setReferences, references) +MCO_OBJC_SYNTHESIZE_ARRAY(setInReplyTo, inReplyTo) +MCO_OBJC_SYNTHESIZE_DATE(setDate, date) +MCO_OBJC_SYNTHESIZE_DATE(setReceivedDate, receivedDate) +MCO_OBJC_SYNTHESIZE(Address, setSender, sender) +MCO_OBJC_SYNTHESIZE(Address, setFrom, from) +MCO_OBJC_SYNTHESIZE_ARRAY(setTo, to) +MCO_OBJC_SYNTHESIZE_ARRAY(setCc, cc) +MCO_OBJC_SYNTHESIZE_ARRAY(setBcc, bcc) +MCO_OBJC_SYNTHESIZE_ARRAY(setReplyTo, replyTo) +MCO_OBJC_SYNTHESIZE_STRING(setSubject, subject) +MCO_OBJC_SYNTHESIZE_STRING(setUserAgent, userAgent) -- (NSArray *) cc +- (NSString *) extractedSubject { - mailcore::Array * addresses = _nativeHeader->cc(); - if (addresses == NULL) - return nil; - - NSMutableArray * result = [NSMutableArray array]; - for(unsigned int i = 0 ; i < addresses->count() ; i ++) { - mailcore::Address * nativeAddress = (mailcore::Address *) addresses->objectAtIndex(i); - [result addObject:[MCOAddress addressWithMCAddress:nativeAddress]]; - } - return result; + return MCO_OBJC_BRIDGE_GET(extractedSubject); } -- (void) setCc:(NSArray *)cc +- (NSString *) partialExtractedSubject { - _nativeHeader->setCc((mailcore::Array *) [cc mco_mcObject]); -} - -- (NSArray *) bcc -{ - mailcore::Array * addresses = _nativeHeader->bcc(); - if (addresses == NULL) - return nil; - - NSMutableArray * result = [NSMutableArray array]; - for(unsigned int i = 0 ; i < addresses->count() ; i ++) { - mailcore::Address * nativeAddress = (mailcore::Address *) addresses->objectAtIndex(i); - [result addObject:[MCOAddress addressWithMCAddress:nativeAddress]]; - } - return result; -} - -- (void) setBcc:(NSArray *)bcc -{ - _nativeHeader->setBcc((mailcore::Array *) [bcc mco_mcObject]); -} - -- (NSArray *) replyTo -{ - mailcore::Array * addresses = _nativeHeader->replyTo(); - if (addresses == NULL) - return nil; - - NSMutableArray * result = [NSMutableArray array]; - for(unsigned int i = 0 ; i < addresses->count() ; i ++) { - mailcore::Address * nativeAddress = (mailcore::Address *) addresses->objectAtIndex(i); - [result addObject:[MCOAddress addressWithMCAddress:nativeAddress]]; - } - return result; -} - -- (void) setReplyTo:(NSArray *)replyTo -{ - _nativeHeader->setReplyTo((mailcore::Array *) [replyTo mco_mcObject]); -} - -- (NSString *) subject -{ - return [NSString mco_stringWithMCString:_nativeHeader->subject()]; -} - -- (void) setSubject:(NSString *)subject -{ - _nativeHeader->setSubject([subject mco_mcString]); -} - -- (NSString *) userAgent -{ - return [NSString mco_stringWithMCString:_nativeHeader->userAgent()]; -} - -- (void) setUserAgent:(NSString *)userAgent -{ - _nativeHeader->setUserAgent([userAgent mco_mcString]); -} - -- (NSString *) extractedSuject -{ - return [NSString mco_stringWithMCString:_nativeHeader->extractedSubject()]; -} - -- (NSString *) partialExtractedSuject -{ - return [NSString mco_stringWithMCString:_nativeHeader->partialExtractedSubject()]; + return MCO_OBJC_BRIDGE_GET(partialExtractedSubject); } - (void) importHeadersData:(NSData *)data @@ -273,9 +111,4 @@ _nativeHeader->importHeadersData([data mco_mcData]); } -- (mailcore::Object *) mco_mcObject -{ - return _nativeHeader; -} - @end diff --git a/src/objc/imap/MCOIMAP.h b/src/objc/imap/MCOIMAP.h index 564373ef..f8dcb30d 100644 --- a/src/objc/imap/MCOIMAP.h +++ b/src/objc/imap/MCOIMAP.h @@ -6,6 +6,12 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_MCOIMAP_H_ + +#define __MAILCORE_MCOIMAP_H_ + #import <mailcore/MCOIMAPSession.h> -#import <mailcore/MCOCheckAccountOperation.h> -#import <mailcore/MCOFetchFoldersOperation.h> +#import <mailcore/MCOIMAPCheckAccountOperation.h> +#import <mailcore/MCOIMAPFetchFoldersOperation.h> + +#endif diff --git a/src/objc/imap/MCOIMAPCheckAccountOperation.h b/src/objc/imap/MCOIMAPCheckAccountOperation.h index 61552dd4..3a14a1fe 100644 --- a/src/objc/imap/MCOIMAPCheckAccountOperation.h +++ b/src/objc/imap/MCOIMAPCheckAccountOperation.h @@ -6,8 +6,14 @@ // Copyright (c) 2013 __MyCompanyName__. All rights reserved. // +#ifndef __MAILCORE_MCOIMAPCHECKACCOUNTOPERATION_H_ + +#define __MAILCORE_MCOIMAPCHECKACCOUNTOPERATION_H_ + #import <mailcore/MCOOperation.h> -@interface MCOCheckAccountOperation : MCOOperation +@interface MCOIMAPCheckAccountOperation : MCOOperation - (void)start:(void (^)(NSError *error))completionBlock; @end + +#endif diff --git a/src/objc/imap/MCOIMAPCheckAccountOperation.mm b/src/objc/imap/MCOIMAPCheckAccountOperation.mm index 6cb167a6..3eb0aeb1 100644 --- a/src/objc/imap/MCOIMAPCheckAccountOperation.mm +++ b/src/objc/imap/MCOIMAPCheckAccountOperation.mm @@ -16,11 +16,11 @@ using namespace mailcore; -@interface MCOCheckAccountOperation () +@interface MCOIMAPCheckAccountOperation () @property (nonatomic, copy) void (^completionBlock)(NSError *error); @end -@implementation MCOCheckAccountOperation +@implementation MCOIMAPCheckAccountOperation - (void)start:(void (^)(NSError *error))completionBlock { self.completionBlock = completionBlock; diff --git a/src/objc/imap/MCOIMAPFetchFoldersOperation.h b/src/objc/imap/MCOIMAPFetchFoldersOperation.h index 914863d3..65410c39 100644 --- a/src/objc/imap/MCOIMAPFetchFoldersOperation.h +++ b/src/objc/imap/MCOIMAPFetchFoldersOperation.h @@ -6,8 +6,14 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_MCOIMAPFETCHFOLDERSOPERATION_H_ + +#define __MAILCORE_MCOIMAPFETCHFOLDERSOPERATION_H_ + #import <mailcore/MCOOperation.h> -@interface MCOFetchFoldersOperation : MCOOperation +@interface MCOIMAPFetchFoldersOperation : MCOOperation - (void)start:(void (^)(NSError *error, NSArray *folder))completionBlock; @end + +#endif diff --git a/src/objc/imap/MCOIMAPFetchFoldersOperation.mm b/src/objc/imap/MCOIMAPFetchFoldersOperation.mm index 63468fcd..09d5d38e 100644 --- a/src/objc/imap/MCOIMAPFetchFoldersOperation.mm +++ b/src/objc/imap/MCOIMAPFetchFoldersOperation.mm @@ -16,11 +16,11 @@ using namespace mailcore; -@interface MCOFetchFoldersOperation () +@interface MCOIMAPFetchFoldersOperation () @property (nonatomic, copy) void (^completionBlock)(NSError *error, NSArray *folder); @end -@implementation MCOFetchFoldersOperation +@implementation MCOIMAPFetchFoldersOperation - (void)start:(void (^)(NSError *error, NSArray *folder))completionBlock { self.completionBlock = completionBlock; diff --git a/src/objc/imap/MCOIMAPSession.h b/src/objc/imap/MCOIMAPSession.h index 88977ded..2e0ab3d2 100644 --- a/src/objc/imap/MCOIMAPSession.h +++ b/src/objc/imap/MCOIMAPSession.h @@ -6,12 +6,16 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_MCOIMAPSESSION_H_ + +#define __MAILCORE_MCOIMAPSESSION_H_ + #import <Foundation/Foundation.h> #import <mailcore/MCOConstants.h> #import <mailcore/MCOOperation.h> -@class MCOCheckAccountOperation; -@class MCOFetchFoldersOperation; +@class MCOIMAPCheckAccountOperation; +@class MCOIMAPFetchFoldersOperation; @interface MCOIMAPSession : NSObject @property (nonatomic, strong) NSString *hostname; @@ -26,6 +30,8 @@ @property (nonatomic, assign, getter=isVoIPEnabled) BOOL VoIPEnabled; @property (nonatomic, strong) NSString *delimiter; -- (MCOCheckAccountOperation *)checkAccountOperation; -- (MCOFetchFoldersOperation *)fetchAllFoldersOperation; +- (MCOIMAPCheckAccountOperation *)checkAccountOperation; +- (MCOIMAPFetchFoldersOperation *)fetchAllFoldersOperation; @end + +#endif diff --git a/src/objc/imap/MCOIMAPSession.mm b/src/objc/imap/MCOIMAPSession.mm index 21239e48..1bf23063 100644 --- a/src/objc/imap/MCOIMAPSession.mm +++ b/src/objc/imap/MCOIMAPSession.mm @@ -125,16 +125,16 @@ using namespace mailcore; #pragma mark - Operations -- (MCOCheckAccountOperation *)checkAccountOperation { +- (MCOIMAPCheckAccountOperation *)checkAccountOperation { IMAPOperation *coreOp = self.session->checkAccountOperation(); - MCOCheckAccountOperation *op = [[MCOCheckAccountOperation alloc] initWithMCOperation:coreOp]; + MCOIMAPCheckAccountOperation *op = [[MCOIMAPCheckAccountOperation alloc] initWithMCOperation:coreOp]; return [op autorelease]; } -- (MCOFetchFoldersOperation *)fetchAllFoldersOperation { +- (MCOIMAPFetchFoldersOperation *)fetchAllFoldersOperation { IMAPOperation *coreOp = self.session->fetchAllFoldersOperation(); - MCOFetchFoldersOperation *op = [[MCOFetchFoldersOperation alloc] initWithMCOperation:coreOp]; + MCOIMAPFetchFoldersOperation *op = [[MCOIMAPFetchFoldersOperation alloc] initWithMCOperation:coreOp]; return [op autorelease]; } diff --git a/src/objc/rfc822/MCOAttachment.h b/src/objc/rfc822/MCOAttachment.h new file mode 100644 index 00000000..fec04cc0 --- /dev/null +++ b/src/objc/rfc822/MCOAttachment.h @@ -0,0 +1,27 @@ +// +// MCOAttachment.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/22/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __MAILCORE_MCOATTACHMENT_H_ + +#define __MAILCORE_MCOATTACHMENT_H_ + +#import <mailcore/MCOAbstractPart.h> + +@interface MCOAttachment : MCOAbstractPart + ++ (NSString *) mimeTypeForFilename:(NSString *)filename; ++ (MCOAttachment *) attachmentWithContentsOfFile:(NSString *)filename; ++ (MCOAttachment *) attachmentWithHTMLString:(NSString *)htmlString; ++ (MCOAttachment *) attachmentWithRFC822Message:(NSData *)messageData; ++ (MCOAttachment *) attachmentWithText:(NSString *)text; + +@property (nonatomic, retain) NSData * data; + +@end + +#endif diff --git a/src/objc/rfc822/MCOAttachment.mm b/src/objc/rfc822/MCOAttachment.mm new file mode 100644 index 00000000..d9906a10 --- /dev/null +++ b/src/objc/rfc822/MCOAttachment.mm @@ -0,0 +1,81 @@ +// +// MCOAttachment.m +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/22/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "MCOAttachment.h" + +#include "MCAttachment.h" + +#import "MCOAbstractPart+Private.h" +#import "MCOUtils.h" +#import "NSString+MCO.h" +#import "NSObject+MCO.h" + +@implementation MCOAttachment { + NSData * _data; +} + +#define nativeType mailcore::Attachment + ++ (void) initialize +{ + MCORegisterClass(self, &typeid(nativeType)); +} + ++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object +{ + mailcore::Attachment * attachment = (mailcore::Attachment *) object; + return [[[self alloc] initWithMCPart:attachment] autorelease]; +} + +- (id) init +{ + mailcore::Attachment * attachment = new mailcore::Attachment(); + self = [super initWithMCPart:attachment]; + attachment->release(); + + return self; +} + +- (void) dealloc +{ + [_data release]; + [super dealloc]; +} + ++ (NSString *) mimeTypeForFilename:(NSString *)filename +{ + return [NSString mco_stringWithMCString:mailcore::Attachment::mimeTypeForFilename([filename mco_mcString])]; +} + ++ (MCOAttachment *) attachmentWithContentsOfFile:(NSString *)filename +{ + mailcore::Attachment * result = mailcore::Attachment::attachmentWithContentsOfFile([filename mco_mcString]); + return MCO_TO_OBJC(result); +} + ++ (MCOAttachment *) attachmentWithHTMLString:(NSString *)htmlString +{ + mailcore::Attachment * result = mailcore::Attachment::attachmentWithHTMLString([htmlString mco_mcString]); + return MCO_TO_OBJC(result); +} + ++ (MCOAttachment *) attachmentWithRFC822Message:(NSData *)messageData +{ + mailcore::Attachment * result = mailcore::Attachment::attachmentWithRFC822Message([messageData mco_mcData]); + return MCO_TO_OBJC(result); +} + ++ (MCOAttachment *) attachmentWithText:(NSString *)text +{ + mailcore::Attachment * result = mailcore::Attachment::attachmentWithText([text mco_mcString]); + return MCO_TO_OBJC(result); +} + +MCO_OBJC_SYNTHESIZE_DATA(setData, data) + +@end diff --git a/src/objc/rfc822/MCOMessageBuilder.h b/src/objc/rfc822/MCOMessageBuilder.h new file mode 100644 index 00000000..8b36da8a --- /dev/null +++ b/src/objc/rfc822/MCOMessageBuilder.h @@ -0,0 +1,32 @@ +// +// MCOMessageBuilder.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/22/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __MAILCORE_MCOMESSAGEBUILDER_H_ + +#define __MAILCORE_MCOMESSAGEBUILDER_H_ + +#import <mailcore/MCOAbstractMessage.h> + +@class MCOAttachment; + +@interface MCOMessageBuilder : MCOAbstractMessage + +@property (nonatomic, copy, setter=setHTMLBody:) NSString * htmlBody; +@property (nonatomic, copy) NSString * textBody; +@property (nonatomic, copy) NSArray * attachments; +@property (nonatomic, copy) NSArray * relatedAttachments; +@property (nonatomic, copy) NSString * boundaryPrefix; + +- (void) addAttachment:(MCOAttachment *)attachment; +- (void) addRelatedAttachment:(MCOAttachment *)attachment; + +- (NSData *) data; + +@end + +#endif diff --git a/src/objc/rfc822/MCOMessageBuilder.mm b/src/objc/rfc822/MCOMessageBuilder.mm new file mode 100644 index 00000000..d929e98a --- /dev/null +++ b/src/objc/rfc822/MCOMessageBuilder.mm @@ -0,0 +1,52 @@ +// +// MCOMessageBuilder.m +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/22/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "MCOMessageBuilder.h" + +#include "MCRFC822.h" + +#import "MCOUtils.h" +#import "MCOAbstractMessage+Private.h" + +@implementation MCOMessageBuilder + +#define nativeType mailcore::MessageBuilder + ++ (void) initialize +{ + MCORegisterClass(self, &typeid(nativeType)); +} + ++ (id) mco_objectWithMCObject:(mailcore::Object *)object +{ + mailcore::MessageBuilder * msg = (mailcore::MessageBuilder *) object; + return [[[self alloc] initWithMCMessage:msg] autorelease]; +} + +MCO_OBJC_SYNTHESIZE_STRING(setHTMLBody, htmlBody) +MCO_OBJC_SYNTHESIZE_STRING(setTextBody, textBody) +MCO_OBJC_SYNTHESIZE_ARRAY(setAttachments, attachments) +MCO_OBJC_SYNTHESIZE_ARRAY(setRelatedAttachments, relatedAttachments) +MCO_OBJC_SYNTHESIZE_STRING(setBoundaryPrefix, boundaryPrefix) + +- (void) addAttachment:(MCOAttachment *)attachment +{ + MCO_NATIVE_INSTANCE->addAttachment(MCO_FROM_OBJC(mailcore::Attachment, attachment)); +} + +- (void) addRelatedAttachment:(MCOAttachment *)attachment +{ + MCO_NATIVE_INSTANCE->addRelatedAttachment(MCO_FROM_OBJC(mailcore::Attachment, attachment)); +} + +- (NSData *) data +{ + return MCO_OBJC_BRIDGE_GET(data); +} + +@end diff --git a/src/objc/rfc822/MCOMessageParser.h b/src/objc/rfc822/MCOMessageParser.h new file mode 100644 index 00000000..7d086d7a --- /dev/null +++ b/src/objc/rfc822/MCOMessageParser.h @@ -0,0 +1,51 @@ +// +// MCOMessageParser.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/22/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __MAILCORE_MCOMESSAGEPARSER_H_ + +#define __MAILCORE_MCOMESSAGEPARSER_H_ + +#import <mailcore/MCOAbstractMessage.h> + +@protocol MCOMessageParserDelegate; + +@interface MCOMessageParser : MCOAbstractMessage + +@property (nonatomic, assign) id <MCOMessageParserDelegate> delegate; + ++ (MCOMessageParser *) messageParserWithData:(NSData *)data; + +- (id) initWithData:(NSData *)data; +- (void) dealloc; + +- (MCOAbstractPart *) mainPart; +- (NSData *) data; + +- (NSString *) htmlRendering; + +@end + +@protocol MCOMessageParserDelegate + +- (BOOL) MCOMessageParser:(MCOMessageParser *)parser canPreviewPart:(MCOAbstractPart *)part; +- (NSDictionary *) MCOMessageParser:(MCOMessageParser *)parser templateValuesForHeader:(MCOMessageHeader *)part; +- (NSDictionary *) MCOMessageParser:(MCOMessageParser *)parser templateValuesForPart:(MCOAbstractPart *)part; +- (NSString *) MCOMessageParser_templateForMainHeader:(MCOMessageParser *)parser; +- (NSString *) MCOMessageParser_templateForImage:(MCOMessageParser *)parser; +- (NSString *) MCOMessageParser_templateForAttachment:(MCOMessageParser *)parser; +- (NSString *) MCOMessageParser_templateForMessage:(MCOMessageParser *)parser; +- (NSString *) MCOMessageParser_templateForEmbeddedMessage:(MCOMessageParser *)parser; +- (NSString *) MCOMessageParser_templateForEmbeddedMessageHeader:(MCOMessageParser *)parser; +- (NSString *) MCOMessageParser_templateForAttachmentSeparator:(MCOMessageParser *)parser; + +- (NSString *) MCOMessageParser_filterHTMLForPart:(NSString *)html; +- (NSString *) MCOMessageParser_filterHTMLForMessage:(NSString *)html; + +@end + +#endif diff --git a/src/objc/rfc822/MCOMessageParser.mm b/src/objc/rfc822/MCOMessageParser.mm new file mode 100644 index 00000000..a964c064 --- /dev/null +++ b/src/objc/rfc822/MCOMessageParser.mm @@ -0,0 +1,70 @@ +// +// MCOMessageParser.m +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/22/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "MCOMessageParser.h" + +#include "MCRFC822.h" + +#import "NSObject+MCO.h" +#import "MCOAbstractMessage+Private.h" +#import "MCOUtils.h" + +@implementation MCOMessageParser { + id <MCOMessageParserDelegate> _delegate; +} + +@synthesize delegate = _delegate; + +#define nativeType mailcore::MessageParser + ++ (void) initialize +{ + MCORegisterClass(self, &typeid(nativeType)); +} + ++ (id) mco_objectWithMCObject:(mailcore::Object *)object +{ + mailcore::MessageParser * msg = (mailcore::MessageParser *) object; + return [[[self alloc] initWithMCMessage:msg] autorelease]; +} + ++ (MCOMessageParser *) messageParserWithData:(NSData *)data +{ + return [[[MCOMessageParser alloc] initWithData:data] autorelease]; +} + +- (id) initWithData:(NSData *)data +{ + mailcore::MessageParser * message = new mailcore::MessageParser([data mco_mcData]); + self = [super initWithMCMessage:message]; + message->release(); + return self; +} + +- (void) dealloc +{ + [super dealloc]; +} + +- (MCOAbstractPart *) mainPart +{ + return MCO_OBJC_BRIDGE_GET(mainPart); +} + +- (NSData *) data +{ + return MCO_OBJC_BRIDGE_GET(data); +} + +- (NSString *) htmlRendering +{ +#warning should implement callbacks + return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->htmlRendering()); +} + +@end diff --git a/src/objc/rfc822/MCOMessagePart.h b/src/objc/rfc822/MCOMessagePart.h new file mode 100644 index 00000000..7e9ebb05 --- /dev/null +++ b/src/objc/rfc822/MCOMessagePart.h @@ -0,0 +1,19 @@ +// +// MessagePart.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/22/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __MAILCORE_MCOMESSAGEPART_H_ + +#define __MAILCORE_MCOMESSAGEPART_H_ + +#import <mailcore/MCOAbstractMessagePart.h> + +@interface MCOMessagePart : MCOAbstractMessagePart + +@end + +#endif diff --git a/src/objc/rfc822/MCOMessagePart.mm b/src/objc/rfc822/MCOMessagePart.mm new file mode 100644 index 00000000..65e091dd --- /dev/null +++ b/src/objc/rfc822/MCOMessagePart.mm @@ -0,0 +1,31 @@ +// +// MessagePart.m +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/22/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "MCOMessagePart.h" + +#include "MCRFC822.h" + +#import "NSObject+MCO.h" +#import "MCOAbstractPart+Private.h" + +@implementation MCOMessagePart + +#define nativeType mailcore::MessagePart + ++ (void) initialize +{ + MCORegisterClass(self, &typeid(nativeType)); +} + ++ (id) mco_objectWithMCObject:(mailcore::Object *)object +{ + mailcore::MessagePart * part = (mailcore::MessagePart *) object; + return [[[self alloc] initWithMCPart:part] autorelease]; +} + +@end diff --git a/src/objc/rfc822/MCOMultipart.h b/src/objc/rfc822/MCOMultipart.h new file mode 100644 index 00000000..8eac50db --- /dev/null +++ b/src/objc/rfc822/MCOMultipart.h @@ -0,0 +1,19 @@ +// +// MCOMultipart.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/22/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __MAILCORE_MCOMULTIPART_H_ + +#define __MAILCORE_MCOMULTIPART_H_ + +#import <mailcore/MCOAbstractMultipart.h> + +@interface MCOMultipart : MCOAbstractMultipart + +@end + +#endif diff --git a/src/objc/rfc822/MCOMultipart.mm b/src/objc/rfc822/MCOMultipart.mm new file mode 100644 index 00000000..a0266503 --- /dev/null +++ b/src/objc/rfc822/MCOMultipart.mm @@ -0,0 +1,31 @@ +// +// MCOMultipart.m +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/22/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "MCOMultipart.h" + +#include "MCRFC822.h" + +#import "NSObject+MCO.h" +#import "MCOAbstractPart+Private.h" + +@implementation MCOMultipart + +#define nativeType mailcore::Multipart + ++ (void) initialize +{ + MCORegisterClass(self, &typeid(nativeType)); +} + ++ (id) mco_objectWithMCObject:(mailcore::Object *)object +{ + mailcore::Attachment * attachment = (mailcore::Attachment *) object; + return [[[self alloc] initWithMCPart:attachment] autorelease]; +} + +@end diff --git a/src/objc/rfc822/MCORFC822.h b/src/objc/rfc822/MCORFC822.h new file mode 100644 index 00000000..b85c8e53 --- /dev/null +++ b/src/objc/rfc822/MCORFC822.h @@ -0,0 +1,19 @@ +// +// MCORFC822.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/22/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef __MAILCORE_MCORFC822_H_ + +#define __MAILCORE_MCORFC822_H_ + +#import <mailcore/MCOAttachment.h> +#import <mailcore/MCOMessageBuilder.h> +#import <mailcore/MCOMessageParser.h> +#import <mailcore/MCOMessagePart.h> +#import <mailcore/MCOMultipart.h> + +#endif diff --git a/src/objc/utils/MCOObjectWrapper.h b/src/objc/utils/MCOObjectWrapper.h index 6827bde9..2fd34018 100644 --- a/src/objc/utils/MCOObjectWrapper.h +++ b/src/objc/utils/MCOObjectWrapper.h @@ -6,6 +6,10 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_MCOOBJECTWRAPPER_H_ + +#define __MAILCORE_MCOOBJECTWRAPPER_H_ + #import <Foundation/Foundation.h> #ifdef __cplusplus @@ -23,3 +27,5 @@ namespace mailcore { #endif @end + +#endif diff --git a/src/objc/utils/MCOOperation+Private.h b/src/objc/utils/MCOOperation+Private.h index 620b0fe8..ccd1b983 100644 --- a/src/objc/utils/MCOOperation+Private.h +++ b/src/objc/utils/MCOOperation+Private.h @@ -6,6 +6,10 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_MCOPERATION_PRIVATE_H_ + +#define __MAILCORE_MCOPERATION_PRIVATE_H_ + #ifdef __cplusplus namespace mailcore { class Operation; @@ -20,4 +24,6 @@ namespace mailcore { - (mailcore::Operation *)mcOperation; #endif - (void)start; -@end
\ No newline at end of file +@end + +#endif diff --git a/src/objc/utils/MCOOperation.h b/src/objc/utils/MCOOperation.h index deafa165..e44ea236 100644 --- a/src/objc/utils/MCOOperation.h +++ b/src/objc/utils/MCOOperation.h @@ -6,6 +6,10 @@ // Copyright (c) 2013 __MyCompanyName__. All rights reserved. // +#ifndef __MAILCORE_MCOOPERATION_H_ + +#define __MAILCORE_MCOOPERATION_H_ + #import <Foundation/Foundation.h> @interface MCOOperation : NSObject @@ -13,3 +17,5 @@ - (void)cancel; @end + +#endif diff --git a/src/objc/utils/MCOUtils.h b/src/objc/utils/MCOUtils.h new file mode 100644 index 00000000..3862ba5b --- /dev/null +++ b/src/objc/utils/MCOUtils.h @@ -0,0 +1,24 @@ +// +// MCOUtils.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/22/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifndef mailcore2_MCOUtils_h +#define mailcore2_MCOUtils_h + +#import <mailcore/MCOObjectWrapper.h> +#import <mailcore/NSData+MCO.h> +#import <mailcore/NSString+MCO.h> +#import <mailcore/NSDictionary+MCO.h> +#import <mailcore/NSArray+MCO.h> +#import <mailcore/NSObject+MCO.h> +#import <mailcore/MCOObjectWrapper.h> +#import <mailcore/NSError+MCO.h> +#import <mailcore/NSValue+MCO.h> +#import <mailcore/MCOOperation.h> +#import <mailcore/MCOConstants.h> + +#endif diff --git a/src/objc/utils/NSArray+MCO.h b/src/objc/utils/NSArray+MCO.h index 769da85d..836ef9c0 100644 --- a/src/objc/utils/NSArray+MCO.h +++ b/src/objc/utils/NSArray+MCO.h @@ -6,6 +6,10 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_NSARRAY_MCO_H_ + +#define __MAILCORE_NSARRAY_MCO_H_ + #import <Foundation/Foundation.h> #ifdef __cplusplus @@ -23,3 +27,5 @@ namespace mailcore { #endif @end + +#endif diff --git a/src/objc/utils/NSData+MCO.h b/src/objc/utils/NSData+MCO.h index 9a0b39cc..fb581abe 100644 --- a/src/objc/utils/NSData+MCO.h +++ b/src/objc/utils/NSData+MCO.h @@ -6,6 +6,10 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_NSDATA_MCO_H_ + +#define __MAILCORE_NSDATA_MCO_H_ + #import <Foundation/Foundation.h> #ifdef __cplusplus @@ -23,3 +27,5 @@ namespace mailcore { #endif @end + +#endif diff --git a/src/objc/utils/NSDictionary+MCO.h b/src/objc/utils/NSDictionary+MCO.h index 8e78a872..bdc842de 100644 --- a/src/objc/utils/NSDictionary+MCO.h +++ b/src/objc/utils/NSDictionary+MCO.h @@ -6,6 +6,10 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_NSDICTIONARY_MCO_H_ + +#define __MAILCORE_NSDICTIONARY_MCO_H_ + #import <Foundation/Foundation.h> #ifdef __cplusplus @@ -23,3 +27,5 @@ namespace mailcore { #endif @end + +#endif
\ No newline at end of file diff --git a/src/objc/utils/NSError+MCO.h b/src/objc/utils/NSError+MCO.h index 1d8ca85b..baf48f45 100644 --- a/src/objc/utils/NSError+MCO.h +++ b/src/objc/utils/NSError+MCO.h @@ -2,6 +2,9 @@ // Created by mronge on 1/31/13. // +#ifndef __MAILCORE_NSERROR_MCO_H_ + +#define __MAILCORE_NSERROR_MCO_H_ #import <Foundation/Foundation.h> @@ -11,4 +14,6 @@ #ifdef __cplusplus + (NSError *)mco_errorWithErrorCode:(mailcore::ErrorCode)code; #endif -@end
\ No newline at end of file +@end + +#endif diff --git a/src/objc/utils/NSObject+MCO.h b/src/objc/utils/NSObject+MCO.h index 6cc24884..31818ce3 100644 --- a/src/objc/utils/NSObject+MCO.h +++ b/src/objc/utils/NSObject+MCO.h @@ -6,6 +6,10 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_NSOBJECT_MCO_H_ + +#define __MAILCORE_NSOBJECT_MCO_H_ + #import <Foundation/Foundation.h> #ifdef __cplusplus @@ -18,10 +22,66 @@ namespace mailcore { } #endif +#define MCO_NATIVE_INSTANCE ((nativeType *) [self mco_mcObject]) + +#define MCO_TO_OBJC(mcValue) \ + [NSObject mco_objectWithMCObject:((mailcore::Object *) (mcValue))] + +#define MCO_FROM_OBJC(type, objcValue) \ + ((type *) [(objcValue) mco_mcObject]) + +#define MCO_OBJC_BRIDGE_SET(setter, mcValueType, objcValue) \ + MCO_NATIVE_INSTANCE->setter((mcValueType *) [(objcValue) mco_mcObject]) + +#define MCO_OBJC_BRIDGE_GET(getter) \ + [NSObject mco_objectWithMCObject:MCO_NATIVE_INSTANCE->getter()] + +#define MCO_OBJC_SYNTHESIZE_TYPE(objcType, mcType, setter, getter) \ +- (objcType *) getter \ +{ \ +return MCO_OBJC_BRIDGE_GET(getter); \ +} \ +\ +- (void) setter:(objcType *)getter \ +{ \ +MCO_OBJC_BRIDGE_SET(setter, mcType, getter); \ +} + +#define MCO_OBJC_SYNTHESIZE(type, setter, getter) \ + MCO_OBJC_SYNTHESIZE_TYPE(MCO ## type, mailcore::type, setter, getter) + +#define MCO_OBJC_SYNTHESIZE_SCALAR(objcType, mcType, setter, getter) \ +- (objcType) getter \ +{ \ +return (objcType) MCO_NATIVE_INSTANCE->getter(); \ +} \ +\ +- (void) setter:(objcType)getter \ +{ \ +MCO_NATIVE_INSTANCE->setter((mcType) getter); \ +} + +#define MCO_OBJC_SYNTHESIZE_STRING(setter, getter) MCO_OBJC_SYNTHESIZE_TYPE(NSString, mailcore::String, setter, getter) +#define MCO_OBJC_SYNTHESIZE_ARRAY(setter, getter) MCO_OBJC_SYNTHESIZE_TYPE(NSArray, mailcore::Array, setter, getter) +#define MCO_OBJC_SYNTHESIZE_DATA(setter, getter) MCO_OBJC_SYNTHESIZE_TYPE(NSData, mailcore::Data, setter, getter) +#define MCO_OBJC_SYNTHESIZE_HASHMAP(setter, getter) MCO_OBJC_SYNTHESIZE_TYPE(NSDictionary, mailcore::HashMap, setter, getter) +#define MCO_OBJC_SYNTHESIZE_BOOL(setter, getter) MCO_OBJC_SYNTHESIZE_SCALAR(BOOL, bool, setter, getter) + +#define MCO_OBJC_SYNTHESIZE_DATE(setter, getter) \ +- (NSDate *) getter \ +{ \ + return [NSDate dateWithTimeIntervalSince1970:MCO_NATIVE_INSTANCE->getter()]; \ +} \ +\ +- (void) setter:(NSDate *)getter \ +{ \ + MCO_NATIVE_INSTANCE->setter([getter timeIntervalSince1970]); \ +} + @interface NSObject (MCO) #ifdef __cplusplus -+ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object; ++ (id) mco_objectWithMCObject:(mailcore::Object *)object; - (mailcore::Object *) mco_mcObject; #endif @@ -32,3 +92,4 @@ namespace mailcore { extern void MCORegisterClass(Class aClass, const std::type_info * info); #endif +#endif diff --git a/src/objc/utils/NSObject+MCO.mm b/src/objc/utils/NSObject+MCO.mm index 52a1bc43..0e0411d0 100644 --- a/src/objc/utils/NSObject+MCO.mm +++ b/src/objc/utils/NSObject+MCO.mm @@ -56,7 +56,7 @@ static Class classWithTypeInfo(const std::type_info * info) @implementation NSObject (MCO) -+ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object ++ (id) mco_objectWithMCObject:(mailcore::Object *)object { if (&typeid(object) == &typeid(mailcore::Value *)) { return [NSValue mco_valueWithMCValue:(mailcore::Value *) object]; @@ -76,7 +76,7 @@ static Class classWithTypeInfo(const std::type_info * info) else { Class aClass = classWithTypeInfo(&typeid(* object)); MCAssert(aClass != nil); - return (NSObject *) [aClass mco_objectWithMCObject:object]; + return [aClass mco_objectWithMCObject:object]; } } diff --git a/src/objc/utils/NSString+MCO.h b/src/objc/utils/NSString+MCO.h index 33cc0b67..b459a846 100644 --- a/src/objc/utils/NSString+MCO.h +++ b/src/objc/utils/NSString+MCO.h @@ -6,6 +6,10 @@ // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_NSSTRING_MCO_H_ + +#define __MAILCORE_NSSTRING_MCO_H_ + #import <Foundation/Foundation.h> #ifdef __cplusplus @@ -25,3 +29,5 @@ namespace mailcore { #endif @end + +#endif diff --git a/src/objc/utils/NSValue+MCO.h b/src/objc/utils/NSValue+MCO.h index bee3c742..484fc205 100644 --- a/src/objc/utils/NSValue+MCO.h +++ b/src/objc/utils/NSValue+MCO.h @@ -1,11 +1,15 @@ // -// NSNumber+MCO.h +// NSValue+MCO.h // mailcore2 // // Created by DINH Viêt Hoà on 3/21/13. // Copyright (c) 2013 MailCore. All rights reserved. // +#ifndef __MAILCORE_NSVALUE_MCO_H_ + +#define __MAILCORE_NSVALUE_MCO_H_ + #import <Foundation/Foundation.h> #ifdef __cplusplus @@ -23,3 +27,5 @@ namespace mailcore { #endif @end + +#endif diff --git a/tests/main.mm b/tests/main.mm index 2fb7b55b..7d2f3241 100644 --- a/tests/main.mm +++ b/tests/main.mm @@ -57,9 +57,9 @@ static mailcore::Data * testMessageBuilder() bcc->release(); msg->header()->setSubject(MCSTR("Mon projet d'été")); msg->setHTMLBody(MCSTR("<div>Hello <img src=\"cid:1234\"></div>")); - msg->addAttachment(mailcore::Attachment::attachmentWithContentOfFile(MCSTR("first-filename"))); - msg->addAttachment(mailcore::Attachment::attachmentWithContentOfFile(MCSTR("second-filename"))); - mailcore::Attachment * attachment = mailcore::Attachment::attachmentWithContentOfFile(MCSTR("third-image-attachment")); + msg->addAttachment(mailcore::Attachment::attachmentWithContentsOfFile(MCSTR("first-filename"))); + msg->addAttachment(mailcore::Attachment::attachmentWithContentsOfFile(MCSTR("second-filename"))); + mailcore::Attachment * attachment = mailcore::Attachment::attachmentWithContentsOfFile(MCSTR("third-image-attachment")); attachment->setContentID(MCSTR("1234")); msg->addRelatedAttachment(attachment); |