diff options
author | DINH Viet Hoa <dinh.viet.hoa@gmail.com> | 2013-03-23 16:27:20 -0700 |
---|---|---|
committer | DINH Viet Hoa <dinh.viet.hoa@gmail.com> | 2013-03-23 16:27:20 -0700 |
commit | d9444ef87c866e3535562a693236b55d88379886 (patch) | |
tree | abfef08ad60df8e84fa46549be7bdd10bb713c9a /src/objc/imap | |
parent | 77d8decc5071234189dc803d715015f0a93c7652 (diff) |
Make IMAP ObjC bridge implementation consistent
Diffstat (limited to 'src/objc/imap')
-rw-r--r-- | src/objc/imap/MCOIMAP.h | 2 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPCheckAccountOperation.h | 19 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPCheckAccountOperation.mm | 36 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPFetchFoldersOperation.mm | 35 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPOperation.h | 15 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPOperation.mm | 49 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPSession.h | 7 | ||||
-rw-r--r-- | src/objc/imap/MCOIMAPSession.mm | 122 |
8 files changed, 118 insertions, 167 deletions
diff --git a/src/objc/imap/MCOIMAP.h b/src/objc/imap/MCOIMAP.h index f8dcb30d..3fae405b 100644 --- a/src/objc/imap/MCOIMAP.h +++ b/src/objc/imap/MCOIMAP.h @@ -11,7 +11,7 @@ #define __MAILCORE_MCOIMAP_H_ #import <mailcore/MCOIMAPSession.h> -#import <mailcore/MCOIMAPCheckAccountOperation.h> +#import <mailcore/MCOIMAPOperation.h> #import <mailcore/MCOIMAPFetchFoldersOperation.h> #endif diff --git a/src/objc/imap/MCOIMAPCheckAccountOperation.h b/src/objc/imap/MCOIMAPCheckAccountOperation.h deleted file mode 100644 index 3a14a1fe..00000000 --- a/src/objc/imap/MCOIMAPCheckAccountOperation.h +++ /dev/null @@ -1,19 +0,0 @@ -// -// MCOIMAPCheckAccountOperation.h -// mailcore2 -// -// Created by Matt Ronge on 01/31/13. -// Copyright (c) 2013 __MyCompanyName__. All rights reserved. -// - -#ifndef __MAILCORE_MCOIMAPCHECKACCOUNTOPERATION_H_ - -#define __MAILCORE_MCOIMAPCHECKACCOUNTOPERATION_H_ - -#import <mailcore/MCOOperation.h> - -@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 deleted file mode 100644 index 3eb0aeb1..00000000 --- a/src/objc/imap/MCOIMAPCheckAccountOperation.mm +++ /dev/null @@ -1,36 +0,0 @@ -// -// MCOIMAPCheckAccountOperation.m -// mailcore2 -// -// Created by Matt Ronge on 01/31/13. -// Copyright (c) 2013 __MyCompanyName__. All rights reserved. -// - -#import "MCOIMAPCheckAccountOperation.h" - -#import "MCAsync.h" - -#import "MCOOperation+Private.h" -#import "MCOIMAPCheckAccountOperation.h" -#import "NSError+MCO.h" - -using namespace mailcore; - -@interface MCOIMAPCheckAccountOperation () -@property (nonatomic, copy) void (^completionBlock)(NSError *error); -@end - -@implementation MCOIMAPCheckAccountOperation - -- (void)start:(void (^)(NSError *error))completionBlock { - self.completionBlock = completionBlock; - [self start]; -} - -- (void)operationCompleted { - IMAPOperation *op = (IMAPOperation *) [self mcOperation]; - NSError *error = [NSError mco_errorWithErrorCode:op->error()]; - self.completionBlock(error); -} - -@end diff --git a/src/objc/imap/MCOIMAPFetchFoldersOperation.mm b/src/objc/imap/MCOIMAPFetchFoldersOperation.mm index 09d5d38e..d0af62b2 100644 --- a/src/objc/imap/MCOIMAPFetchFoldersOperation.mm +++ b/src/objc/imap/MCOIMAPFetchFoldersOperation.mm @@ -7,10 +7,12 @@ // #import "MCOIMAPFetchFoldersOperation.h" + #import "NSError+MCO.h" -#import "NSString+MCO.h" #import "MCOOperation+Private.h" +#import "MCOUtils.h" + #import <Foundation/Foundation.h> #import <mailcore/MCAsync.h> @@ -20,7 +22,24 @@ using namespace mailcore; @property (nonatomic, copy) void (^completionBlock)(NSError *error, NSArray *folder); @end -@implementation MCOIMAPFetchFoldersOperation +@implementation MCOIMAPFetchFoldersOperation { + void (^_completionBlock)(NSError *error, NSArray *folder); +} + +@synthesize completionBlock = _completionBlock; + +#define nativeType mailcore::IMAPFetchFoldersOperation + ++ (void) initialize +{ + MCORegisterClass(self, &typeid(nativeType)); +} + ++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object +{ + mailcore::IMAPOperation * op = (mailcore::IMAPOperation *) object; + return [[[self alloc] initWithMCOperation:op] autorelease]; +} - (void)start:(void (^)(NSError *error, NSArray *folder))completionBlock { self.completionBlock = completionBlock; @@ -28,18 +47,12 @@ using namespace mailcore; } - (void)operationCompleted { - IMAPFetchFoldersOperation *op = (IMAPFetchFoldersOperation *) [self mcOperation]; + IMAPFetchFoldersOperation *op = MCO_NATIVE_INSTANCE; if (op->error() == ErrorNone) { - NSMutableArray *nsfolders = [NSMutableArray array]; - Array *folders = op->folders(); - for (int i = 0 ; i < folders->count(); i++) { - NSString *folder = [NSString mco_stringWithMCObject:folders->objectAtIndex(i)]; - [nsfolders addObject:folder]; - } - - self.completionBlock(nil, nsfolders); + self.completionBlock(nil, MCO_TO_OBJC(op->folders())); } else { self.completionBlock([NSError mco_errorWithErrorCode:op->error()], nil); } } + @end diff --git a/src/objc/imap/MCOIMAPOperation.h b/src/objc/imap/MCOIMAPOperation.h new file mode 100644 index 00000000..baf8cdec --- /dev/null +++ b/src/objc/imap/MCOIMAPOperation.h @@ -0,0 +1,15 @@ +// +// MCOIMAPOperation.h +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/23/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "MCOOperation.h" + +@interface MCOIMAPOperation : MCOOperation + +- (void)start:(void (^)(NSError *error))completionBlock; + +@end diff --git a/src/objc/imap/MCOIMAPOperation.mm b/src/objc/imap/MCOIMAPOperation.mm new file mode 100644 index 00000000..c2b36e26 --- /dev/null +++ b/src/objc/imap/MCOIMAPOperation.mm @@ -0,0 +1,49 @@ +// +// MCOIMAPOperation.m +// mailcore2 +// +// Created by DINH Viêt Hoà on 3/23/13. +// Copyright (c) 2013 MailCore. All rights reserved. +// + +#import "MCOIMAPOperation.h" + +#include "MCIMAPOperation.h" +#import "MCOOperation+Private.h" + +#import "MCOUtils.h" + +@interface MCOIMAPOperation () +@property (nonatomic, copy) void (^completionBlock)(NSError *error); +@end + +@implementation MCOIMAPOperation { + void (^_completionBlock)(NSError *error); +} + +@synthesize completionBlock = _completionBlock; + +#define nativeType mailcore::IMAPOperation + ++ (void) initialize +{ + MCORegisterClass(self, &typeid(nativeType)); +} + ++ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object +{ + mailcore::IMAPOperation * op = (mailcore::IMAPOperation *) object; + return [[[self alloc] initWithMCOperation:op] autorelease]; +} + +- (void)start:(void (^)(NSError *error))completionBlock { + self.completionBlock = completionBlock; + [self start]; +} + +- (void)operationCompleted { + NSError * error = [NSError mco_errorWithErrorCode:MCO_NATIVE_INSTANCE->error()]; + self.completionBlock(error); +} + +@end diff --git a/src/objc/imap/MCOIMAPSession.h b/src/objc/imap/MCOIMAPSession.h index 2e0ab3d2..7019b792 100644 --- a/src/objc/imap/MCOIMAPSession.h +++ b/src/objc/imap/MCOIMAPSession.h @@ -12,10 +12,9 @@ #import <Foundation/Foundation.h> #import <mailcore/MCOConstants.h> -#import <mailcore/MCOOperation.h> -@class MCOIMAPCheckAccountOperation; @class MCOIMAPFetchFoldersOperation; +@class MCOIMAPOperation; @interface MCOIMAPSession : NSObject @property (nonatomic, strong) NSString *hostname; @@ -28,9 +27,9 @@ @property (nonatomic, assign) NSTimeInterval timeout; @property (nonatomic, assign) BOOL checkCertificateEnabled; @property (nonatomic, assign, getter=isVoIPEnabled) BOOL VoIPEnabled; -@property (nonatomic, strong) NSString *delimiter; +@property (nonatomic, assign) char delimiter; -- (MCOIMAPCheckAccountOperation *)checkAccountOperation; +- (MCOIMAPOperation *)checkAccountOperation; - (MCOIMAPFetchFoldersOperation *)fetchAllFoldersOperation; @end diff --git a/src/objc/imap/MCOIMAPSession.mm b/src/objc/imap/MCOIMAPSession.mm index 1bf23063..a4a6e5cc 100644 --- a/src/objc/imap/MCOIMAPSession.mm +++ b/src/objc/imap/MCOIMAPSession.mm @@ -7,12 +7,13 @@ // #import "MCOIMAPSession.h" -#import "MCOOperation+Private.h" + +#import "MCOOperation.h" #import "MCOObjectWrapper.h" -#import "MCOIMAPCheckAccountOperation.h" +#import "MCOIMAPOperation.h" #import "MCOIMAPFetchFoldersOperation.h" -#import "NSString+MCO.h" +#import "MCOUtils.h" #import <mailcore/MCAsync.h> @@ -23,6 +24,13 @@ using namespace mailcore; IMAPAsyncSession * _session; } +#define nativeType mailcore::IMAPAsyncSession + +- (mailcore::Object *) mco_mcObject +{ + return _session; +} + - (id)init { self = [super init]; if (self) { @@ -36,106 +44,28 @@ using namespace mailcore; [super dealloc]; } -- (IMAPAsyncSession *)session { - return _session; -} - -- (NSString *)hostname { - return [NSString mco_stringWithMCString:self.session->hostname()]; -} - -- (void)setHostname:(NSString *)hostname { - self.session->setHostname([hostname mco_mcString]); -} - -- (unsigned int)port { - return self.session->port(); -} - -- (void)setPort:(unsigned int)port { - self.session->setPort(port); -} - -- (NSString *)username { - return [NSString mco_stringWithMCString:self.session->username()]; -} - -- (void)setUsername:(NSString *)username { - self.session->setUsername([username mco_mcString]); -} - -- (NSString *)password { - return [NSString mco_stringWithMCString:self.session->password()]; -} - -- (void)setPassword:(NSString *)password { - self.session->setPassword([password mco_mcString]); -} - -- (void)setAuthType:(MCOAuthType)authType { - self.session->setAuthType((AuthType)authType); -} - -- (MCOAuthType)authType { - return (MCOAuthType)self.session->authType(); -} - -- (void)setConnectionType:(MCOConnectionType)connectionType { - self.session->setConnectionType((ConnectionType)connectionType); -} - -- (MCOConnectionType)connectionType{ - return (MCOConnectionType)self.session->connectionType(); -} - -- (void)setTimeout:(NSTimeInterval)timeout { - self.session->setTimeout((time_t)timeout); -} - -- (NSTimeInterval)timeout { - return (NSTimeInterval)self.session->timeout(); -} - -- (void)setCheckCertificateEnabled:(BOOL)checkCertificateEnabled { - self.session->setCheckCertificateEnabled(checkCertificateEnabled); -} - -- (BOOL)checkCertificateEnabled { - return (BOOL)self.session->isCheckCertificateEnabled(); -} - -- (void)setVoIPEnabled:(BOOL)VoIPEnabled { - self.session->setVoIPEnabled(VoIPEnabled); -} - -- (BOOL)isVoIPEnabled { - return (BOOL)self.session->isVoIPEnabled(); -} - -- (NSString *)delimiter { - char delim = self.session->delimiter(); - return [NSString stringWithFormat:@"%c", delim]; -} - -- (void)setDelimiter:(NSString *)delimiter { - NSAssert(delimiter.length == 1, @"Delimiter has to be a single char"); - char delim = [delimiter characterAtIndex:0]; - self.session->setDelimiter(delim); -} +MCO_OBJC_SYNTHESIZE_STRING(setHostname, hostname) +MCO_OBJC_SYNTHESIZE_SCALAR(unsigned int, unsigned int, setPort, port) +MCO_OBJC_SYNTHESIZE_STRING(setUsername, username) +MCO_OBJC_SYNTHESIZE_STRING(setPassword, password) +MCO_OBJC_SYNTHESIZE_SCALAR(MCOAuthType, mailcore::AuthType, setAuthType, authType) +MCO_OBJC_SYNTHESIZE_SCALAR(MCOConnectionType, mailcore::ConnectionType, setConnectionType, connectionType) +MCO_OBJC_SYNTHESIZE_SCALAR(NSTimeInterval, time_t, setTimeout, timeout) +MCO_OBJC_SYNTHESIZE_BOOL(setCheckCertificateEnabled, isCheckCertificateEnabled) +MCO_OBJC_SYNTHESIZE_BOOL(setVoIPEnabled, isVoIPEnabled) +MCO_OBJC_SYNTHESIZE_SCALAR(char, char, setDelimiter, delimiter) #pragma mark - Operations -- (MCOIMAPCheckAccountOperation *)checkAccountOperation { - IMAPOperation *coreOp = self.session->checkAccountOperation(); - MCOIMAPCheckAccountOperation *op = [[MCOIMAPCheckAccountOperation alloc] initWithMCOperation:coreOp]; - return [op autorelease]; +- (MCOIMAPOperation *)checkAccountOperation { + IMAPOperation *coreOp = MCO_NATIVE_INSTANCE->checkAccountOperation(); + return MCO_TO_OBJC(coreOp); } - (MCOIMAPFetchFoldersOperation *)fetchAllFoldersOperation { - IMAPOperation *coreOp = self.session->fetchAllFoldersOperation(); - MCOIMAPFetchFoldersOperation *op = [[MCOIMAPFetchFoldersOperation alloc] initWithMCOperation:coreOp]; - return [op autorelease]; + IMAPOperation *coreOp = MCO_NATIVE_INSTANCE->fetchAllFoldersOperation(); + return MCO_TO_OBJC(coreOp); } @end |