diff options
author | CodaFi <devteam.codafi@gmail.com> | 2013-06-20 16:31:54 -0600 |
---|---|---|
committer | CodaFi <devteam.codafi@gmail.com> | 2013-06-20 16:31:54 -0600 |
commit | e3ae2f0b8a83e939f37dff0b32f33b5c7b7e2d8e (patch) | |
tree | 75fa36c7ad8f0428a3a58c8abcb3532294265ff4 | |
parent | 06c4537db1a6ffd1112e92319f7c820016109f58 (diff) |
Redo commits
24 files changed, 252 insertions, 13 deletions
diff --git a/src/objc/abstract/MCOAbstractMessage.h b/src/objc/abstract/MCOAbstractMessage.h index a26d5aac..a5c2cc1b 100644 --- a/src/objc/abstract/MCOAbstractMessage.h +++ b/src/objc/abstract/MCOAbstractMessage.h @@ -15,7 +15,7 @@ @class MCOMessageHeader; @class MCOAbstractPart; -@interface MCOAbstractMessage : NSObject +@interface MCOAbstractMessage : NSObject <NSCoding, NSCopying> /** Header of the message. */ @property (nonatomic, strong) MCOMessageHeader * header; diff --git a/src/objc/abstract/MCOAbstractMessage.mm b/src/objc/abstract/MCOAbstractMessage.mm index 6fedcc8a..83f19732 100644 --- a/src/objc/abstract/MCOAbstractMessage.mm +++ b/src/objc/abstract/MCOAbstractMessage.mm @@ -38,6 +38,32 @@ return self; } +- (id) initWithCoder:(NSCoder *)decoder +{ + MCOAbstractMessage * abstractPart = [[[[self class] alloc] init] autorelease]; + mailcore::AbstractMessage * message = (mailcore::AbstractMessage *) [abstractPart mco_mcObject]; + message->setHeader((mailcore::MessageHeader *) [[decoder decodeObjectForKey:@"header"] mco_mcObject]); + + self = [self initWithMCMessage:message]; + + return self; +} + +- (void) encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:[self header] forKey:@"header"]; +} + +- (id) copyWithZone:(NSZone *)zone +{ + MCOAbstractMessage *message; + + message = [[[self class] alloc] initWithMCMessage:(mailcore::AbstractMessage *)_message->copy()->autorelease()]; + [message setHeader:[[[self header] copy] autorelease]]; + + return message; +} + - (void) dealloc { _message->release(); diff --git a/src/objc/abstract/MCOAbstractMessagePart.h b/src/objc/abstract/MCOAbstractMessagePart.h index 69a6a8f8..d69b6012 100644 --- a/src/objc/abstract/MCOAbstractMessagePart.h +++ b/src/objc/abstract/MCOAbstractMessagePart.h @@ -15,7 +15,7 @@ @class MCOMessageHeader; -@interface MCOAbstractMessagePart : MCOAbstractPart +@interface MCOAbstractMessagePart : MCOAbstractPart <NSCoding> // Returns the header of the embedded message. @property (nonatomic, strong) MCOMessageHeader * header; diff --git a/src/objc/abstract/MCOAbstractMessagePart.mm b/src/objc/abstract/MCOAbstractMessagePart.mm index 7d66a355..55a0a828 100644 --- a/src/objc/abstract/MCOAbstractMessagePart.mm +++ b/src/objc/abstract/MCOAbstractMessagePart.mm @@ -18,6 +18,22 @@ #define nativeType mailcore::AbstractMessagePart +- (id) initWithCoder:(NSCoder *)decoder +{ + self = [super init]; + + [self setHeader:[decoder decodeObjectForKey:@"header"]]; + [self setMainPart:[decoder decodeObjectForKey:@"mainPart"]]; + + return self; +} + +- (void) encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:[self header] forKey:@"header"]; + [encoder encodeObject:[self mainPart] forKey:@"mainPart"]; +} + MCO_OBJC_SYNTHESIZE(MessageHeader, setHeader, header) MCO_OBJC_SYNTHESIZE(AbstractMessagePart, setMainPart, mainPart) diff --git a/src/objc/abstract/MCOAbstractMultipart.h b/src/objc/abstract/MCOAbstractMultipart.h index e43a3e41..b3b202db 100644 --- a/src/objc/abstract/MCOAbstractMultipart.h +++ b/src/objc/abstract/MCOAbstractMultipart.h @@ -13,7 +13,7 @@ #import <Foundation/Foundation.h> #import <MailCore/MCOAbstractPart.h> -@interface MCOAbstractMultipart : MCOAbstractPart +@interface MCOAbstractMultipart : MCOAbstractPart <NSCoding> /** Returns the subparts of that multipart.*/ @property (nonatomic, copy) NSArray * /* MCOAbstractPart */ parts; diff --git a/src/objc/abstract/MCOAbstractMultipart.mm b/src/objc/abstract/MCOAbstractMultipart.mm index 25e633cd..a644a15f 100644 --- a/src/objc/abstract/MCOAbstractMultipart.mm +++ b/src/objc/abstract/MCOAbstractMultipart.mm @@ -16,6 +16,20 @@ #define nativeType mailcore::AbstractMultipart +- (id) initWithCoder:(NSCoder *)decoder +{ + self = [super initWithCoder:decoder]; + + [self setParts:[decoder decodeObjectForKey:@"parts"]]; + + return self; +} + +- (void) encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:[self parts] forKey:@"parts"]; +} + MCO_OBJC_SYNTHESIZE_ARRAY(setParts, parts) @end diff --git a/src/objc/abstract/MCOAbstractPart.h b/src/objc/abstract/MCOAbstractPart.h index 0269347a..eb9807c4 100644 --- a/src/objc/abstract/MCOAbstractPart.h +++ b/src/objc/abstract/MCOAbstractPart.h @@ -37,7 +37,7 @@ typedef enum { MCOPartTypeMultipartAlternative, } MCOPartType; -@interface MCOAbstractPart : NSObject +@interface MCOAbstractPart : NSObject <NSCoding> /** Returns type of the part (single / message part / multipart/mixed, multipart/related, multipart/alternative). See MCOPartType.*/ diff --git a/src/objc/abstract/MCOAbstractPart.mm b/src/objc/abstract/MCOAbstractPart.mm index 47191ce9..d2422f34 100644 --- a/src/objc/abstract/MCOAbstractPart.mm +++ b/src/objc/abstract/MCOAbstractPart.mm @@ -37,6 +37,40 @@ return self; } +- (id) initWithCoder:(NSCoder *)decoder +{ + MCOAbstractPart *abstractPart = [[[[self class] alloc] init] autorelease]; + mailcore::AbstractPart * part = (mailcore::AbstractPart *) [abstractPart mco_mcObject]; + part->setPartType((mailcore::PartType)[decoder decodeIntForKey:@"partType"]); + part->setFilename([[decoder decodeObjectForKey:@"filename"] mco_mcString]); + part->setMimeType([[decoder decodeObjectForKey:@"mimeType"] mco_mcString]); + part->setCharset([[decoder decodeObjectForKey:@"charset"] mco_mcString]); + part->setUniqueID([[decoder decodeObjectForKey:@"uniqueID"] mco_mcString]); + part->setContentID([[decoder decodeObjectForKey:@"contentID"] mco_mcString]); + part->setContentLocation([[decoder decodeObjectForKey:@"contentLocation"] mco_mcString]); + part->setInlineAttachment([decoder decodeBoolForKey:@"inlineAttachment"]); + part->setMessage((mailcore::AbstractMessage *) [[decoder decodeObjectForKey:@"message"] mco_mcObject]); + + self = [self initWithMCPart:part]; + + part->release(); + + return self; +} + +- (void) encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeInt:[self partType] forKey:@"partType"]; + [encoder encodeObject:[self filename] forKey:@"filename"]; + [encoder encodeObject:[self mimeType] forKey:@"mimeType"]; + [encoder encodeObject:[self charset] forKey:@"charset"]; + [encoder encodeObject:[self uniqueID] forKey:@"uniqueID"]; + [encoder encodeObject:[self contentID] forKey:@"contentID"]; + [encoder encodeObject:[self contentLocation] forKey:@"contentLocation"]; + [encoder encodeBool:[self isInlineAttachment] forKey:@"inlineAttachment"]; + [encoder encodeObject:[self message] forKey:@"message"]; +} + - (void) dealloc { _part->release(); diff --git a/src/objc/abstract/MCOAddress.h b/src/objc/abstract/MCOAddress.h index 8e409589..49c17a5a 100644 --- a/src/objc/abstract/MCOAddress.h +++ b/src/objc/abstract/MCOAddress.h @@ -12,7 +12,7 @@ #import <Foundation/Foundation.h> -@interface MCOAddress : NSObject <NSCopying> +@interface MCOAddress : NSObject <NSCopying, NSCoding> /** Creates an address with a display name and a mailbox. diff --git a/src/objc/abstract/MCOAddress.mm b/src/objc/abstract/MCOAddress.mm index 1cb37e62..fc724d77 100644 --- a/src/objc/abstract/MCOAddress.mm +++ b/src/objc/abstract/MCOAddress.mm @@ -113,6 +113,22 @@ return self; } +- (id)initWithCoder:(NSCoder *)coder +{ + self = [self init]; + + [self setDisplayName:[coder decodeObjectForKey:@"displayName"]]; + [self setMailbox:[coder decodeObjectForKey:@"mailbox"]]; + + return self; +} + +- (void)encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:[self displayName] forKey:@"displayName"]; + [encoder encodeObject:[self mailbox] forKey:@"mailbox"]; +} + + (MCOAddress *) addressWithMCAddress:(mailcore::Address *)address { if (address == NULL) diff --git a/src/objc/abstract/MCOMessageHeader.h b/src/objc/abstract/MCOMessageHeader.h index 6e8eb9bf..3e891ef3 100644 --- a/src/objc/abstract/MCOMessageHeader.h +++ b/src/objc/abstract/MCOMessageHeader.h @@ -16,7 +16,7 @@ @class MCOAddress; -@interface MCOMessageHeader : NSObject <NSCopying> +@interface MCOMessageHeader : NSObject <NSCoding, NSCopying> /** Message-ID field.*/ @property (nonatomic, copy) NSString * messageID; diff --git a/src/objc/abstract/MCOMessageHeader.mm b/src/objc/abstract/MCOMessageHeader.mm index 6729894d..c060337d 100644 --- a/src/objc/abstract/MCOMessageHeader.mm +++ b/src/objc/abstract/MCOMessageHeader.mm @@ -29,6 +29,46 @@ MCORegisterClass(self, &typeid(nativeType)); } +- (id)initWithCoder:(NSCoder *)decoder +{ + self = [super init]; + + self.messageID = [[decoder decodeObjectForKey:@"messageID"] retain]; + self.references = [[decoder decodeObjectForKey:@"references"] retain]; + self.inReplyTo = [[decoder decodeObjectForKey:@"inReplyTo"] retain]; + self.sender = [[decoder decodeObjectForKey:@"sender"] retain]; + self.from = [[decoder decodeObjectForKey:@"from"] retain]; + self.to = [[decoder decodeObjectForKey:@"to"] retain]; + self.cc = [[decoder decodeObjectForKey:@"cc"] retain]; + self.bcc = [[decoder decodeObjectForKey:@"bcc"] retain]; + self.replyTo = [[decoder decodeObjectForKey:@"replyTo"] retain]; + self.subject = [[decoder decodeObjectForKey:@"subject"] retain]; + self.date = [[decoder decodeObjectForKey:@"date"] retain]; + self.receivedDate = [[decoder decodeObjectForKey:@"receivedDate"] retain]; + if (self.receivedDate == nil) { + self.receivedDate = [self.date retain]; + } + + return self; +} + +- (void) encodeWithCoder:(NSCoder *)encoder +{ + [encoder encodeObject:[self messageID] forKey:@"messageID"]; + [encoder encodeObject:[self references] forKey:@"references"]; + [encoder encodeObject:[self inReplyTo] forKey:@"inReplyTo"]; + [encoder encodeObject:[self sender] forKey:@"sender"]; + [encoder encodeObject:[self from] forKey:@"from"]; + [encoder encodeObject:[self to] forKey:@"to"]; + [encoder encodeObject:[self cc] forKey:@"cc"]; + [encoder encodeObject:[self bcc] forKey:@"bcc"]; + [encoder encodeObject:[self replyTo] forKey:@"replyTo"]; + [encoder encodeObject:[self subject] forKey:@"subject"]; + [encoder encodeObject:[self date] forKey:@"date"]; + [encoder encodeObject:[self receivedDate] forKey:@"receivedDate"]; +} + + - (id) copyWithZone:(NSZone *)zone { nativeType * nativeObject = (nativeType *) [self mco_mcObject]->copy(); diff --git a/src/objc/imap/MCOIMAPFolder.h b/src/objc/imap/MCOIMAPFolder.h index 8688ef5b..bf643b54 100644 --- a/src/objc/imap/MCOIMAPFolder.h +++ b/src/objc/imap/MCOIMAPFolder.h @@ -15,7 +15,7 @@ #import <Foundation/Foundation.h> #import <MailCore/MCOConstants.h> -@interface MCOIMAPFolder : NSObject <NSCopying> +@interface MCOIMAPFolder : NSObject <NSCoding, NSCopying> /** The folder's path, like for example INBOX.Archive */ @property (nonatomic, copy) NSString * path; diff --git a/src/objc/imap/MCOIMAPFolder.mm b/src/objc/imap/MCOIMAPFolder.mm index 66e36beb..666bb78c 100644 --- a/src/objc/imap/MCOIMAPFolder.mm +++ b/src/objc/imap/MCOIMAPFolder.mm @@ -56,6 +56,24 @@ return self; } +- (id) initWithCoder:(NSCoder *)aDecoder +{ + self = [self init]; + + [self setPath:[aDecoder decodeObjectForKey:@"path"]]; + [self setDelimiter:[aDecoder decodeIntForKey:@"delimiter"]]; + [self setFlags:(MCOIMAPFolderFlag)[aDecoder decodeInt32ForKey:@"flags"]]; + + return self; +} + +- (void) encodeWithCoder:(NSCoder *)aCoder +{ + [aCoder encodeObject:[self path] forKey:@"path"]; + [aCoder encodeInt:[self delimiter] forKey:@"delimiter"]; + [aCoder encodeInt32:[self flags] forKey:@"flags"]; +} + - (void) dealloc { MC_SAFE_RELEASE(_nativeFolder); diff --git a/src/objc/imap/MCOIMAPMessage.h b/src/objc/imap/MCOIMAPMessage.h index 81dfa9f7..d9b54abe 100644 --- a/src/objc/imap/MCOIMAPMessage.h +++ b/src/objc/imap/MCOIMAPMessage.h @@ -29,7 +29,7 @@ @protocol MCOHTMLRendererIMAPDelegate; -@interface MCOIMAPMessage : MCOAbstractMessage <NSCopying> +@interface MCOIMAPMessage : MCOAbstractMessage <NSCoding, NSCopying> /** IMAP UID of the message. */ @property (nonatomic, assign) uint32_t uid; diff --git a/src/objc/imap/MCOIMAPMessage.mm b/src/objc/imap/MCOIMAPMessage.mm index 9984443e..2f6be457 100644 --- a/src/objc/imap/MCOIMAPMessage.mm +++ b/src/objc/imap/MCOIMAPMessage.mm @@ -27,6 +27,30 @@ MCORegisterClass(self, &typeid(nativeType)); } +- (id) initWithCoder:(NSCoder *)aDecoder { + self = [super initWithCoder:aDecoder]; + + [self setUid:[aDecoder decodeInt32ForKey:@"uid"]]; + [self setFlags:(MCOMessageFlag)[aDecoder decodeIntForKey:@"flags"]]; + [self setOriginalFlags:(MCOMessageFlag)[aDecoder decodeIntForKey:@"originalFlags"]]; + [self setModSeqValue:[aDecoder decodeInt64ForKey:@"modSeqValue"]]; + [self setMainPart:[aDecoder decodeObjectForKey:@"mainPart"]]; + [self setGmailLabels:[aDecoder decodeObjectForKey:@"gmailLabels"]]; + + return self; +} + +- (void) encodeWithCoder:(NSCoder *)aCoder +{ + [super encodeWithCoder:aCoder]; + [aCoder encodeInt32:[self uid] forKey:@"uid"]; + [aCoder encodeInt:[self flags] forKey:@"flags"]; + [aCoder encodeInt:[self originalFlags] forKey:@"originalFlags"]; + [aCoder encodeInt64:[self modSeqValue] forKey:@"modSeqValue"]; + [aCoder encodeObject:[self mainPart] forKey:@"mainPart"]; + [aCoder encodeObject:[self gmailLabels] forKey:@"gmailLabels"]; +} + - (id) copyWithZone:(NSZone *)zone { nativeType * nativeObject = (nativeType *) [self mco_mcObject]->copy(); diff --git a/src/objc/imap/MCOIMAPMessagePart.h b/src/objc/imap/MCOIMAPMessagePart.h index b602d93a..c40c2673 100644 --- a/src/objc/imap/MCOIMAPMessagePart.h +++ b/src/objc/imap/MCOIMAPMessagePart.h @@ -14,7 +14,7 @@ #import <MailCore/MCOAbstractMessagePart.h> -@interface MCOIMAPMessagePart : MCOAbstractMessagePart <NSCopying> +@interface MCOIMAPMessagePart : MCOAbstractMessagePart <NSCoding, NSCopying> /** A part identifier is of the form 1.2.1*/ @property (nonatomic, copy) NSString * partID; diff --git a/src/objc/imap/MCOIMAPMessagePart.mm b/src/objc/imap/MCOIMAPMessagePart.mm index 827636b3..35c13162 100644 --- a/src/objc/imap/MCOIMAPMessagePart.mm +++ b/src/objc/imap/MCOIMAPMessagePart.mm @@ -22,6 +22,14 @@ MCORegisterClass(self, &typeid(nativeType)); } +- (id) initWithCoder:(NSCoder *)aDecoder { + self = [super initWithCoder:aDecoder]; + + [self setPartID:[aDecoder decodeObjectForKey:@"partID"]]; + + return self; +} + - (id) copyWithZone:(NSZone *)zone { nativeType * nativeObject = (nativeType *) [self mco_mcObject]->copy(); @@ -30,6 +38,12 @@ return [result retain]; } +- (void) encodeWithCoder:(NSCoder *)aCoder +{ + [super encodeWithCoder:aCoder]; + [aCoder encodeObject:[self partID] forKey:@"partID"]; +} + + (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object { mailcore::IMAPMessagePart * part = (mailcore::IMAPMessagePart *) object; diff --git a/src/objc/imap/MCOIMAPMultipart.h b/src/objc/imap/MCOIMAPMultipart.h index 0e0bb0eb..d6eb55cb 100644 --- a/src/objc/imap/MCOIMAPMultipart.h +++ b/src/objc/imap/MCOIMAPMultipart.h @@ -14,7 +14,7 @@ #import <MailCore/MCOAbstractMultipart.h> -@interface MCOIMAPMultipart : MCOAbstractMultipart <NSCopying> +@interface MCOIMAPMultipart : MCOAbstractMultipart <NSCoding, NSCopying> /** A part identifier looks like 1.2.1 */ @property (nonatomic, copy) NSString * partID; diff --git a/src/objc/imap/MCOIMAPMultipart.mm b/src/objc/imap/MCOIMAPMultipart.mm index fdfe4e7a..1cc60e05 100644 --- a/src/objc/imap/MCOIMAPMultipart.mm +++ b/src/objc/imap/MCOIMAPMultipart.mm @@ -22,6 +22,20 @@ MCORegisterClass(self, &typeid(nativeType)); } +- (id) initWithCoder:(NSCoder *)aDecoder { + self = [super initWithCoder:aDecoder]; + + [self setPartID:[aDecoder decodeObjectForKey:@"partID"]]; + + return self; +} + +- (void) encodeWithCoder:(NSCoder *)aCoder +{ + [super encodeWithCoder:aCoder]; + [aCoder encodeObject:[self partID] forKey:@"partID"]; +} + - (id) copyWithZone:(NSZone *)zone { nativeType * nativeObject = (nativeType *) [self mco_mcObject]->copy(); diff --git a/src/objc/imap/MCOIMAPPart.h b/src/objc/imap/MCOIMAPPart.h index 029135bf..bf897f2f 100644 --- a/src/objc/imap/MCOIMAPPart.h +++ b/src/objc/imap/MCOIMAPPart.h @@ -16,7 +16,7 @@ /** Represents a single IMAP message part */ -@interface MCOIMAPPart : MCOAbstractPart <NSCopying> +@interface MCOIMAPPart : MCOAbstractPart <NSCoding, NSCopying> /** A part identifier looks like 1.2.1 */ @property (nonatomic, copy) NSString * partID; diff --git a/src/objc/imap/MCOIMAPPart.mm b/src/objc/imap/MCOIMAPPart.mm index 80b86d23..78361c51 100644 --- a/src/objc/imap/MCOIMAPPart.mm +++ b/src/objc/imap/MCOIMAPPart.mm @@ -22,6 +22,24 @@ MCORegisterClass(self, &typeid(nativeType)); } +- (id) initWithCoder:(NSCoder *)aDecoder { + self = [super initWithCoder:aDecoder]; + + [self setPartID:[aDecoder decodeObjectForKey:@"partID"]]; + [self setSize:(unsigned int) [aDecoder decodeInt64ForKey:@"size"]]; + [self setEncoding:(MCOEncoding) [aDecoder decodeIntForKey:@"encoding"]]; + + return self; +} + +- (void) encodeWithCoder:(NSCoder *)aCoder +{ + [super encodeWithCoder:aCoder]; + [aCoder encodeObject:[self partID] forKey:@"partID"]; + [aCoder encodeInt64:[self size] forKey:@"size"]; + [aCoder encodeInt:[self encoding] forKey:@"encoding"]; +} + - (id) copyWithZone:(NSZone *)zone { nativeType * nativeObject = (nativeType *) [self mco_mcObject]->copy(); diff --git a/src/objc/provider/MCONetService.h b/src/objc/provider/MCONetService.h index 482ae4dc..eb198e5e 100644 --- a/src/objc/provider/MCONetService.h +++ b/src/objc/provider/MCONetService.h @@ -13,7 +13,7 @@ This class provides a specific way to access a given service */ -@interface MCONetService : NSObject +@interface MCONetService : NSObject <NSCopying> /** The hostname of the server. [MCONetService hostnameWithEmail:] is recommended diff --git a/src/objc/provider/MCONetService.mm b/src/objc/provider/MCONetService.mm index 0a2c0c33..702e7dcd 100644 --- a/src/objc/provider/MCONetService.mm +++ b/src/objc/provider/MCONetService.mm @@ -32,7 +32,7 @@ + (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object { mailcore::NetService *netService = (mailcore::NetService *)object; - return [[self alloc] initWithNetService:netService]; + return [[[self alloc] initWithNetService:netService] autorelease]; } + (MCONetService *) serviceWithInfo:(NSDictionary *)info @@ -60,6 +60,11 @@ return self; } +- (id) copyWithZone:(NSZone *)zone +{ + return [[MCONetService mco_objectWithMCObject:_netService->autorelease()] retain]; +} + MCO_OBJC_SYNTHESIZE_STRING(setHostname, hostname) MCO_OBJC_SYNTHESIZE_SCALAR(unsigned int, unsigned int, setPort, port) MCO_OBJC_SYNTHESIZE_SCALAR(MCOConnectionType, mailcore::ConnectionType, setConnectionType, connectionType) |