aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/objc/rfc822
diff options
context:
space:
mode:
authorGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2013-03-24 23:26:55 -0700
committerGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2013-03-24 23:26:55 -0700
commitb41efcc17b184ce75a648e26f85662c68756a912 (patch)
treead8932dc955dff61ccb0edc5764f53d98b2570ed /src/objc/rfc822
parent2a6128d2d7782be77bcf5dc8d5087dd8eb493eab (diff)
Implemented IMAP ObjC API
Diffstat (limited to 'src/objc/rfc822')
-rw-r--r--src/objc/rfc822/MCOMessageParser.h4
-rw-r--r--src/objc/rfc822/MCOMessageParser.mm130
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