aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/objc/imap
diff options
context:
space:
mode:
authorGravatar DINH Viet Hoa <dinh.viet.hoa@gmail.com>2013-03-23 16:27:20 -0700
committerGravatar DINH Viet Hoa <dinh.viet.hoa@gmail.com>2013-03-23 16:27:20 -0700
commitd9444ef87c866e3535562a693236b55d88379886 (patch)
treeabfef08ad60df8e84fa46549be7bdd10bb713c9a /src/objc/imap
parent77d8decc5071234189dc803d715015f0a93c7652 (diff)
Make IMAP ObjC bridge implementation consistent
Diffstat (limited to 'src/objc/imap')
-rw-r--r--src/objc/imap/MCOIMAP.h2
-rw-r--r--src/objc/imap/MCOIMAPCheckAccountOperation.h19
-rw-r--r--src/objc/imap/MCOIMAPCheckAccountOperation.mm36
-rw-r--r--src/objc/imap/MCOIMAPFetchFoldersOperation.mm35
-rw-r--r--src/objc/imap/MCOIMAPOperation.h15
-rw-r--r--src/objc/imap/MCOIMAPOperation.mm49
-rw-r--r--src/objc/imap/MCOIMAPSession.h7
-rw-r--r--src/objc/imap/MCOIMAPSession.mm122
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