diff options
author | Hoa V. DINH <dinh.viet.hoa@gmail.com> | 2013-03-24 23:26:55 -0700 |
---|---|---|
committer | Hoa V. DINH <dinh.viet.hoa@gmail.com> | 2013-03-24 23:26:55 -0700 |
commit | b41efcc17b184ce75a648e26f85662c68756a912 (patch) | |
tree | ad8932dc955dff61ccb0edc5764f53d98b2570ed /src/objc/rfc822 | |
parent | 2a6128d2d7782be77bcf5dc8d5087dd8eb493eab (diff) |
Implemented IMAP ObjC API
Diffstat (limited to 'src/objc/rfc822')
-rw-r--r-- | src/objc/rfc822/MCOMessageParser.h | 4 | ||||
-rw-r--r-- | src/objc/rfc822/MCOMessageParser.mm | 130 |
2 files changed, 9 insertions, 125 deletions
diff --git a/src/objc/rfc822/MCOMessageParser.h b/src/objc/rfc822/MCOMessageParser.h index c3348fb2..0d239511 100644 --- a/src/objc/rfc822/MCOMessageParser.h +++ b/src/objc/rfc822/MCOMessageParser.h @@ -16,8 +16,6 @@ @interface MCOMessageParser : MCOAbstractMessage <NSCopying> -@property (nonatomic, weak) id <MCOHTMLRendererDelegate> rendererDelegate; - + (MCOMessageParser *) messageParserWithData:(NSData *)data; - (id) initWithData:(NSData *)data; @@ -26,7 +24,7 @@ - (MCOAbstractPart *) mainPart; - (NSData *) data; -- (NSString *) htmlRendering; +- (NSString *) htmlRenderingWithDelegate:(id <MCOHTMLRendererDelegate>)delegate; @end diff --git a/src/objc/rfc822/MCOMessageParser.mm b/src/objc/rfc822/MCOMessageParser.mm index 325a6f3f..05f52f54 100644 --- a/src/objc/rfc822/MCOMessageParser.mm +++ b/src/objc/rfc822/MCOMessageParser.mm @@ -15,125 +15,9 @@ #import "NSObject+MCO.h" #import "MCOAbstractMessage+Private.h" #import "MCOUtils.h" +#import "MCOAbstractMessageRendererCallback.h" -class MCOMessageParserRenderedCallback : public mailcore::Object, public mailcore::HTMLRendererTemplateCallback { -public: - MCOMessageParserRenderedCallback(MCOMessageParser * parser) - { - _parser = parser; - } - - virtual bool canPreviewPart(mailcore::AbstractPart * part) - { - if ([rendererDelegate() respondsToSelector:@selector(MCOAbstractMessage:canPreviewPart:)]) { - return [rendererDelegate() MCOAbstractMessage:_parser canPreviewPart:MCO_TO_OBJC(part)]; - } - return mailcore::HTMLRendererTemplateCallback::canPreviewPart(part); - } - - virtual mailcore::HashMap * templateValuesForHeader(mailcore::MessageHeader * header) - { - if ([rendererDelegate() respondsToSelector:@selector(MCOAbstractMessage:templateValuesForHeader:)]) { - return MCO_FROM_OBJC(mailcore::HashMap, [rendererDelegate() MCOAbstractMessage:_parser templateValuesForHeader:MCO_TO_OBJC(header)]); - } - return mailcore::HTMLRendererTemplateCallback::templateValuesForHeader(header); - } - - virtual mailcore::HashMap * templateValuesForPart(mailcore::AbstractPart * part) - { - if ([rendererDelegate() respondsToSelector:@selector(MCOAbstractMessage:templateValuesForPart:)]) { - return MCO_FROM_OBJC(mailcore::HashMap, [rendererDelegate() MCOAbstractMessage:_parser templateValuesForPart:MCO_TO_OBJC(part)]); - } - return mailcore::HTMLRendererTemplateCallback::templateValuesForPart(part); - } - - virtual mailcore::String * templateForMainHeader() - { - if ([rendererDelegate() respondsToSelector:@selector(MCOAbstractMessage_templateForMainHeader:)]) { - return MCO_FROM_OBJC(mailcore::String, [rendererDelegate() MCOAbstractMessage_templateForMainHeader:_parser]); - } - return mailcore::HTMLRendererTemplateCallback::templateForMainHeader(); - } - - virtual mailcore::String * templateForImage() - { - if ([rendererDelegate() respondsToSelector:@selector(MCOAbstractMessage_templateForImage:)]) { - return MCO_FROM_OBJC(mailcore::String, [rendererDelegate() MCOAbstractMessage_templateForImage:_parser]); - } - return mailcore::HTMLRendererTemplateCallback::templateForImage(); - } - - virtual mailcore::String * templateForAttachment() - { - if ([rendererDelegate() respondsToSelector:@selector(MCOAbstractMessage_templateForAttachment:)]) { - return MCO_FROM_OBJC(mailcore::String, [rendererDelegate() MCOAbstractMessage_templateForAttachment:_parser]); - } - return mailcore::HTMLRendererTemplateCallback::templateForAttachment(); - } - - virtual mailcore::String * templateForMessage() - { - if ([rendererDelegate() respondsToSelector:@selector(MCOAbstractMessage_templateForMessage:)]) { - return MCO_FROM_OBJC(mailcore::String, [rendererDelegate() MCOAbstractMessage_templateForMessage:_parser]); - } - return mailcore::HTMLRendererTemplateCallback::templateForMessage(); - } - - virtual mailcore::String * templateForEmbeddedMessage() - { - if ([rendererDelegate() respondsToSelector:@selector(MCOAbstractMessage_templateForEmbeddedMessage:)]) { - return MCO_FROM_OBJC(mailcore::String, [rendererDelegate() MCOAbstractMessage_templateForEmbeddedMessage:_parser]); - } - return mailcore::HTMLRendererTemplateCallback::templateForEmbeddedMessage(); - } - - virtual mailcore::String * templateForEmbeddedMessageHeader() - { - if ([rendererDelegate() respondsToSelector:@selector(MCOAbstractMessage_templateForEmbeddedMessageHeader:)]) { - return MCO_FROM_OBJC(mailcore::String, [rendererDelegate() MCOAbstractMessage_templateForEmbeddedMessageHeader:_parser]); - } - return mailcore::HTMLRendererTemplateCallback::templateForEmbeddedMessageHeader(); - } - - virtual mailcore::String * templateForAttachmentSeparator() - { - if ([rendererDelegate() respondsToSelector:@selector(MCOAbstractMessage_templateForAttachmentSeparator:)]) { - return MCO_FROM_OBJC(mailcore::String, [rendererDelegate() MCOAbstractMessage_templateForAttachmentSeparator:_parser]); - } - return mailcore::HTMLRendererTemplateCallback::templateForAttachmentSeparator(); - } - - virtual mailcore::String * filterHTMLForPart(mailcore::String * html) - { - if ([rendererDelegate() respondsToSelector:@selector(MCOAbstractMessage:filterHTMLForPart:)]) { - return MCO_FROM_OBJC(mailcore::String, [rendererDelegate() MCOAbstractMessage:_parser filterHTMLForPart:MCO_TO_OBJC(html)]); - } - return mailcore::HTMLRendererTemplateCallback::filterHTMLForPart(html); - } - - virtual mailcore::String * filterHTMLForMessage(mailcore::String * html) - { - if ([rendererDelegate() respondsToSelector:@selector(MCOAbstractMessage:filterHTMLForMesage:)]) { - return MCO_FROM_OBJC(mailcore::String, [rendererDelegate() MCOAbstractMessage:_parser filterHTMLForMessage:MCO_TO_OBJC(html)]); - } - return mailcore::HTMLRendererTemplateCallback::filterHTMLForMessage(html); - } - -private: - id <MCOHTMLRendererDelegate> rendererDelegate() - { - return [_parser rendererDelegate]; - } - - MCOMessageParser * _parser; -}; - -@implementation MCOMessageParser { - id <MCOHTMLRendererDelegate> _rendererDelegate; - MCOMessageParserRenderedCallback * _htmlRenderCallback; -} - -@synthesize rendererDelegate = _rendererDelegate; +@implementation MCOMessageParser #define nativeType mailcore::MessageParser @@ -165,14 +49,12 @@ private: { mailcore::MessageParser * message = new mailcore::MessageParser([data mco_mcData]); self = [super initWithMCMessage:message]; - _htmlRenderCallback = new MCOMessageParserRenderedCallback(self); MC_SAFE_RELEASE(message); return self; } - (void) dealloc { - _htmlRenderCallback->release(); [super dealloc]; } @@ -186,9 +68,13 @@ private: return MCO_OBJC_BRIDGE_GET(data); } -- (NSString *) htmlRendering +- (NSString *) htmlRenderingWithDelegate:(id <MCOHTMLRendererDelegate>)delegate { - return MCO_TO_OBJC(MCO_NATIVE_INSTANCE->htmlRendering(_htmlRenderCallback)); + MCOAbstractMessageRendererCallback * htmlRenderCallback = new MCOAbstractMessageRendererCallback(self, delegate, NULL); + NSString * result = MCO_TO_OBJC(MCO_NATIVE_INSTANCE->htmlRendering(htmlRenderCallback)); + htmlRenderCallback->release(); + + return result; } @end |