diff options
-rw-r--r-- | src/core/abstract/MCAddress.h | 19 | ||||
-rw-r--r-- | src/core/abstract/MCMessageHeader.cc | 2 | ||||
-rw-r--r-- | src/core/abstract/MCMessageHeader.h | 12 | ||||
-rw-r--r-- | src/objc/abstract/MCOAddress+Private.h | 20 | ||||
-rw-r--r-- | src/objc/abstract/MCOAddress.h | 28 | ||||
-rw-r--r-- | src/objc/abstract/MCOAddress.mm | 137 | ||||
-rw-r--r-- | src/objc/abstract/MCOMessageHeader+Private.h | 20 | ||||
-rw-r--r-- | src/objc/abstract/MCOMessageHeader.h | 34 | ||||
-rw-r--r-- | src/objc/abstract/MCOMessageHeader.mm | 268 |
9 files changed, 526 insertions, 14 deletions
diff --git a/src/core/abstract/MCAddress.h b/src/core/abstract/MCAddress.h index 49d74079..add45f7d 100644 --- a/src/core/abstract/MCAddress.h +++ b/src/core/abstract/MCAddress.h @@ -28,15 +28,6 @@ namespace mailcore { virtual String * RFC822String(); virtual String * nonEncodedRFC822String(); - // Additions - static Address * addressWithIMFMailbox(struct mailimf_mailbox * mb); - static Address * addressWithNonEncodedIMFMailbox(struct mailimf_mailbox * mb); - static Address * addressWithIMAPAddress(struct mailimap_address * imap_addr); - - // Must be released - virtual struct mailimf_address * createIMFAddress(); - virtual struct mailimf_mailbox * createIMFMailbox(); - public: // subclass behavior. Address(Address * other); virtual String * description(); @@ -44,6 +35,16 @@ namespace mailcore { virtual unsigned int hash(); virtual Object * copy(); + public: // private + // Must be released + virtual struct mailimf_address * createIMFAddress(); + virtual struct mailimf_mailbox * createIMFMailbox(); + + // Additions + static Address * addressWithIMFMailbox(struct mailimf_mailbox * mb); + static Address * addressWithNonEncodedIMFMailbox(struct mailimf_mailbox * mb); + static Address * addressWithIMAPAddress(struct mailimap_address * imap_addr); + private: String * mDisplayName; String * mMailbox; diff --git a/src/core/abstract/MCMessageHeader.cc b/src/core/abstract/MCMessageHeader.cc index a1b006b1..3502ea75 100644 --- a/src/core/abstract/MCMessageHeader.cc +++ b/src/core/abstract/MCMessageHeader.cc @@ -41,6 +41,8 @@ MessageHeader::MessageHeader(MessageHeader * other) setBcc(other->mBcc); setReplyTo(other->mReplyTo); setSubject(other->mSubject); + setDate(other->date()); + setReceivedDate(other->receivedDate()); setUserAgent(other->mUserAgent); } diff --git a/src/core/abstract/MCMessageHeader.h b/src/core/abstract/MCMessageHeader.h index 045d91c5..33569204 100644 --- a/src/core/abstract/MCMessageHeader.h +++ b/src/core/abstract/MCMessageHeader.h @@ -58,6 +58,13 @@ namespace mailcore { virtual String * extractedSubject(); virtual String * partialExtractedSubject(); virtual void importHeadersData(Data * data); + + public: // subclass behavior + MessageHeader(MessageHeader * other); + virtual String * description(); + virtual Object * copy(); + + public: // private virtual void importIMAPEnvelope(struct mailimap_envelope * env); virtual void importIMAPReferences(Data * data); virtual void importIMAPInternalDate(struct mailimap_date_time * date); @@ -65,11 +72,6 @@ namespace mailcore { virtual struct mailimf_fields * createIMFFieldsAndFilterBcc(bool filterBcc); virtual void importIMFFields(struct mailimf_fields * fields); - public: // subclass behavior - MessageHeader(MessageHeader * other); - virtual String * description(); - virtual Object * copy(); - private: String * mMessageID; Array * /* String */ mReferences; diff --git a/src/objc/abstract/MCOAddress+Private.h b/src/objc/abstract/MCOAddress+Private.h new file mode 100644 index 00000000..34fce13c --- /dev/null +++ b/src/objc/abstract/MCOAddress+Private.h @@ -0,0 +1,20 @@ +// +// MCOAddress+Private.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/11/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifdef __cplusplus +namespace mailcore { + class Address; +} + +@interface MCOAddress (Private) + +- (id) initWithMCAddress:(mailcore::Address *)address; ++ (MCOAddress *) addressWithMCAddress:(mailcore::Address *)address; + +@end +#endif diff --git a/src/objc/abstract/MCOAddress.h b/src/objc/abstract/MCOAddress.h new file mode 100644 index 00000000..b4b1b902 --- /dev/null +++ b/src/objc/abstract/MCOAddress.h @@ -0,0 +1,28 @@ +// +// MCOAddress.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/10/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import <Foundation/Foundation.h> + +@interface MCOAddress : NSObject <NSCopying> + ++ (MCOAddress *) addressWithDisplayName:(NSString *)displayName + mailbox:(NSString *)mailbox; + ++ (MCOAddress *) addressWithMailbox:(NSString *)mailbox; + ++ (MCOAddress *) addressWithRFC822String:(NSString *)RFC822String; + ++ (MCOAddress *) addressWithNonEncodedRFC822String:(NSString *)nonEncodedRFC822String; + +@property (nonatomic, copy) NSString * displayName; +@property (nonatomic, copy) NSString * mailbox; + +- (NSString *) RFC822String; +- (NSString *) nonEncodedRFC822String; + +@end diff --git a/src/objc/abstract/MCOAddress.mm b/src/objc/abstract/MCOAddress.mm new file mode 100644 index 00000000..58767fea --- /dev/null +++ b/src/objc/abstract/MCOAddress.mm @@ -0,0 +1,137 @@ +// +// MCOAddress.m +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/10/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "MCOAddress.h" +#import "MCOAddress+Private.h" + +#include "MCAddress.h" +#include "NSString+MCO.h" + +@implementation MCOAddress { + mailcore::Address * _nativeAddress; +} + ++ (MCOAddress *) addressWithDisplayName:(NSString *)displayName + mailbox:(NSString *)mailbox +{ + MCOAddress * result = [[[MCOAddress alloc] init] autorelease]; + MC_SAFE_RELEASE(result->_nativeAddress); + result->_nativeAddress = mailcore::Address::addressWithDisplayName([displayName mco_mcString], [mailbox mco_mcString]); + result->_nativeAddress->retain(); + return result; +} + ++ (MCOAddress *) addressWithMailbox:(NSString *)mailbox +{ + MCOAddress * result = [[[MCOAddress alloc] init] autorelease]; + MC_SAFE_RELEASE(result->_nativeAddress); + result->_nativeAddress = mailcore::Address::addressWithMailbox([mailbox mco_mcString]); + result->_nativeAddress->retain(); + return result; +} + ++ (MCOAddress *) addressWithRFC822String:(NSString *)RFC822String +{ + MCOAddress * result = [[[MCOAddress alloc] init] autorelease]; + MC_SAFE_RELEASE(result->_nativeAddress); + result->_nativeAddress = mailcore::Address::addressWithRFC822String([RFC822String mco_mcString]); + result->_nativeAddress->retain(); + return result; +} + ++ (MCOAddress *) addressWithNonEncodedRFC822String:(NSString *)nonEncodedRFC822String +{ + MCOAddress * result = [[[MCOAddress alloc] init] autorelease]; + MC_SAFE_RELEASE(result->_nativeAddress); + result->_nativeAddress = mailcore::Address::addressWithNonEncodedRFC822String([nonEncodedRFC822String mco_mcString]); + result->_nativeAddress->retain(); + return result; +} + +- (id) init +{ + self = [super init]; + + _nativeAddress = new mailcore::Address(); + + return self; +} + +- (id) initWithMCAddress:(mailcore::Address *)address +{ + self = [super init]; + + _nativeAddress = address; + _nativeAddress->retain(); + + return self; +} + ++ (MCOAddress *) addressWithMCAddress:(mailcore::Address *)address +{ + if (address == NULL) + return nil; + + return [[[self alloc] initWithMCAddress:address] autorelease]; +} + +- (void) dealloc +{ + MC_SAFE_RELEASE(_nativeAddress); + [super dealloc]; +} + +- (id) copyWithZone:(NSZone *)zone +{ + mailcore::Address * address = (mailcore::Address *) _nativeAddress->copy(); + MCOAddress * result = [[MCOAddress alloc] initWithMCAddress:address]; + MC_SAFE_RELEASE(address); + return result; +} + +- (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()]; +} + +- (void) setMailbox:(NSString *)mailbox +{ + _nativeAddress->setMailbox([mailbox mco_mcString]); +} + +- (NSString *) RFC822String +{ + return [NSString mco_stringWithMCString:_nativeAddress->RFC822String()]; +} + +- (NSString *) nonEncodedRFC822String +{ + return [NSString mco_stringWithMCString:_nativeAddress->nonEncodedRFC822String()]; +} + +- (mailcore::Object *) mco_mcObject +{ + return _nativeAddress; +} + +@end diff --git a/src/objc/abstract/MCOMessageHeader+Private.h b/src/objc/abstract/MCOMessageHeader+Private.h new file mode 100644 index 00000000..fe7c77bd --- /dev/null +++ b/src/objc/abstract/MCOMessageHeader+Private.h @@ -0,0 +1,20 @@ +// +// MCOMessageHeader+Private.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/11/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#ifdef __cplusplus +namespace mailcore { + class MessageHeader; +} + +@interface MCOMessageHeader (Private) + +- (id) initWithMCMessageHeader:(mailcore::MessageHeader *)header; ++ (MCOAddress *) addressWithMCMessageHeader:(mailcore::MessageHeader *)header; + +@end +#endif diff --git a/src/objc/abstract/MCOMessageHeader.h b/src/objc/abstract/MCOMessageHeader.h new file mode 100644 index 00000000..97a48023 --- /dev/null +++ b/src/objc/abstract/MCOMessageHeader.h @@ -0,0 +1,34 @@ +// +// MCOMessageHeader.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/10/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import <Foundation/Foundation.h> + +@class MCOAddress; + +@interface MCOMessageHeader : NSObject + +@property (nonatomic, copy) NSString * messageID; +@property (nonatomic, copy) NSArray * references; +@property (nonatomic, copy) NSArray * inReplyTo; +@property (nonatomic, retain) NSDate * date; +@property (nonatomic, retain) NSDate * receivedDate; +@property (nonatomic, copy) MCOAddress * sender; +@property (nonatomic, copy) MCOAddress * from; +@property (nonatomic, copy) NSArray * to; +@property (nonatomic, copy) NSArray * cc; +@property (nonatomic, copy) NSArray * bcc; +@property (nonatomic, copy) NSArray * replyTo; +@property (nonatomic, copy) NSString * subject; +@property (nonatomic, copy) NSString * userAgent; + +- (NSString *) extractedSuject; +- (NSString *) partialExtractedSuject; + +- (void) importHeadersData:(NSData *)data; + +@end diff --git a/src/objc/abstract/MCOMessageHeader.mm b/src/objc/abstract/MCOMessageHeader.mm new file mode 100644 index 00000000..3d0a3d28 --- /dev/null +++ b/src/objc/abstract/MCOMessageHeader.mm @@ -0,0 +1,268 @@ +// +// MCOMessageHeader.m +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/10/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "MCOMessageHeader.h" +#import "MCOMessageHeader+Private.h" + +#include "MCMessageHeader.h" +#include "NSString+MCO.h" +#include "NSArray+MCO.h" +#include "NSObject+MCO.h" +#include "NSData+MCO.h" +#include "MCOAddress.h" +#include "MCOAddress+Private.h" + +@implementation MCOMessageHeader { + mailcore::MessageHeader * _nativeHeader; +} + +- (id) init +{ + self = [super init]; + + _nativeHeader = new mailcore::MessageHeader(); + + return self; +} + +- (id) initWithMCMessageHeader:(mailcore::MessageHeader *)header +{ + self = [super init]; + + _nativeHeader = header; + _nativeHeader->retain(); + + return self; +} + ++ (MCOMessageHeader *) messageHeaderWithMCMessageHeader:(mailcore::MessageHeader *)header +{ + if (header == NULL) + return nil; + + return [[[self alloc] initWithMCMessageHeader:header] autorelease]; +} + +- (id) copyWithZone:(NSZone *)zone +{ + mailcore::MessageHeader * header = (mailcore::MessageHeader *) _nativeHeader->copy(); + MCOMessageHeader * result = [[MCOMessageHeader alloc] initWithMCMessageHeader:header]; + MC_SAFE_RELEASE(header); + return result; +} + +- (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; +} + +- (void) setTo:(NSArray *)to +{ + _nativeHeader->setTo((mailcore::Array *) [to mco_mcObject]); +} + +- (NSArray *) cc +{ + 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; +} + +- (void) setCc:(NSArray *)cc +{ + _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()]; +} + +- (void) importHeadersData:(NSData *)data +{ + _nativeHeader->importHeadersData([data mco_mcData]); +} + +- (mailcore::Object *) mco_mcObject +{ + return _nativeHeader; +} + +@end |