aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/objc/provider
diff options
context:
space:
mode:
authorGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2013-05-04 23:17:33 -0700
committerGravatar Hoa V. DINH <dinh.viet.hoa@gmail.com>2013-05-04 23:17:33 -0700
commit55f998e5076e6ee5607580a56bdac68e605e1050 (patch)
tree8313b526775f494806ff82f67d0f6e31e39ab6bb /src/objc/provider
parentcf0e72e7f751413c57b0a2dd1c7adcf7e1a37c38 (diff)
Cleaned provider implementation
Diffstat (limited to 'src/objc/provider')
-rw-r--r--src/objc/provider/MCOMailProvider.mm42
-rw-r--r--src/objc/provider/MCOMailProvidersManager.h2
-rw-r--r--src/objc/provider/MCOMailProvidersManager.mm22
-rw-r--r--src/objc/provider/MCONetService.h12
-rw-r--r--src/objc/provider/MCONetService.mm31
5 files changed, 47 insertions, 62 deletions
diff --git a/src/objc/provider/MCOMailProvider.mm b/src/objc/provider/MCOMailProvider.mm
index 4eb5f9fb..e8d80407 100644
--- a/src/objc/provider/MCOMailProvider.mm
+++ b/src/objc/provider/MCOMailProvider.mm
@@ -7,16 +7,27 @@
//
#import "MCOMailProvider.h"
+
+#include <typeinfo>
+
#include "MCMailProvider.h"
#import "NSDictionary+MCO.h"
#import "NSArray+MCO.h"
#import "NSString+MCO.h"
+#import "NSObject+MCO.h"
@implementation MCOMailProvider {
mailcore::MailProvider * _provider;
}
+#define nativeType mailcore::MailProvider
+
++ (void) load
+{
+ MCORegisterClass(self, &typeid(nativeType));
+}
+
- (mailcore::Object *) mco_mcObject
{
return _provider;
@@ -25,40 +36,42 @@
+ (NSObject *) mco_objectWithMCObject:(mailcore::Object *)object
{
mailcore::MailProvider * provider = (mailcore::MailProvider *) object;
- return [[self alloc] initWithProvider:provider];
+ return [[self alloc] initWithMCProvider:provider];
}
- (id) initWithInfo:(NSDictionary *)info
{
self = [super init];
- _provider = new mailcore::MailProvider([info mco_mcHashMap]);
+ _provider = mailcore::MailProvider::providerWithInfo([info mco_mcHashMap]);
+ _provider->retain();
return self;
}
-- (id) initWithProvider:(mailcore::MailProvider *)provider
+- (id) initWithMCProvider:(mailcore::MailProvider *)provider
{
self = [super init];
_provider = provider;
+ _provider->retain();
return self;
}
- (NSArray *) imapServices
{
- return [NSArray mco_arrayWithMCArray:_provider->imapServices()];
+ return MCO_OBJC_BRIDGE_GET(imapServices);
}
- (NSArray *) smtpServices
{
- return [NSArray mco_arrayWithMCArray:_provider->smtpServices()];
+ return MCO_OBJC_BRIDGE_GET(smtpServices);
}
- (NSArray *) popServices
{
- return [NSArray mco_arrayWithMCArray:_provider->popServices()];
+ return MCO_OBJC_BRIDGE_GET(popServices);
}
- (BOOL) matchEmail:(NSString *)email
@@ -73,40 +86,41 @@
- (NSString *) sentMailFolderPath
{
- return [NSString mco_stringWithMCString:_provider->sentMailFolderPath()];
+ return MCO_OBJC_BRIDGE_GET(sentMailFolderPath);
}
- (NSString *) starredFolderPath
{
- return [NSString mco_stringWithMCString:_provider->starredFolderPath()];
+ return MCO_OBJC_BRIDGE_GET(starredFolderPath);
}
- (NSString *) allMailFolderPath
{
- return [NSString mco_stringWithMCString:_provider->allMailFolderPath()];
+ return MCO_OBJC_BRIDGE_GET(allMailFolderPath);
}
- (NSString *) trashFolderPath
{
- return [NSString mco_stringWithMCString:_provider->trashFolderPath()];
+ return MCO_OBJC_BRIDGE_GET(trashFolderPath);
}
- (NSString *) draftsFolderPath
{
- return [NSString mco_stringWithMCString:_provider->draftsFolderPath()];
+ return MCO_OBJC_BRIDGE_GET(draftsFolderPath);
}
- (NSString *) spamFolderPath
{
- return [NSString mco_stringWithMCString:_provider->spamFolderPath()];
+ return MCO_OBJC_BRIDGE_GET(spamFolderPath);
}
- (NSString *) importantFolderPath
{
- return [NSString mco_stringWithMCString:_provider->spamFolderPath()];
+ return MCO_OBJC_BRIDGE_GET(importantFolderPath);
}
-- (BOOL) isMainFolder:(NSString *)folderPath prefix:(NSString *)prefix {
+- (BOOL) isMainFolder:(NSString *)folderPath prefix:(NSString *)prefix
+{
return _provider->isMainFolder(folderPath.mco_mcString, prefix.mco_mcString);
}
diff --git a/src/objc/provider/MCOMailProvidersManager.h b/src/objc/provider/MCOMailProvidersManager.h
index 55b5e6af..78d10ff2 100644
--- a/src/objc/provider/MCOMailProvidersManager.h
+++ b/src/objc/provider/MCOMailProvidersManager.h
@@ -17,7 +17,5 @@
- (MCOMailProvider *) providerForEmail:(NSString *)email;
- (MCOMailProvider *) providerForMX:(NSString *)hostname;
- (MCOMailProvider *) providerForIdentifier:(NSString *)identifier;
-- (void) registerProviders:(NSDictionary *)providers;
-- (void) registerProvidersFilename:(NSString *)filename;
@end
diff --git a/src/objc/provider/MCOMailProvidersManager.mm b/src/objc/provider/MCOMailProvidersManager.mm
index f7b11cb9..8f12aa11 100644
--- a/src/objc/provider/MCOMailProvidersManager.mm
+++ b/src/objc/provider/MCOMailProvidersManager.mm
@@ -18,7 +18,7 @@
+ (MCOMailProvidersManager *) sharedManager
{
- static MCOMailProvidersManager *sharedInstance = nil;
+ static MCOMailProvidersManager * sharedInstance = nil;
static dispatch_once_t onceToken;
dispatch_once(&onceToken, ^{
sharedInstance = [[self alloc] init]; \
@@ -31,39 +31,29 @@
NSString * filename;
self = [super init];
-
+
filename = [[NSBundle bundleForClass:[self class]] pathForResource:@"providers" ofType:@"json"];
- [self registerProvidersFilename:filename];
+ mailcore::MailProvidersManager::sharedManager()->registerProvidersWithFilename(filename.mco_mcString);
return self;
}
-- (void) registerProviders:(NSDictionary *)providers
-{
- mailcore::MailProvidersManager::sharedManager()->registerProviders(providers.mco_mcHashMap);
-}
-
-- (void) registerProvidersFilename:(NSString *)filename
-{
- mailcore::MailProvidersManager::sharedManager()->registerProvidersFilename(filename.mco_mcString);
-}
-
- (MCOMailProvider *) providerForEmail:(NSString *)email
{
mailcore::MailProvider *provider = mailcore::MailProvidersManager::sharedManager()->providerForEmail(email.mco_mcString);
- return [MCOMailProvider mco_objectWithMCObject:(mailcore::Object *) provider];
+ return MCO_TO_OBJC(provider);
}
- (MCOMailProvider *) providerForMX:(NSString *)hostname
{
mailcore::MailProvider *provider = mailcore::MailProvidersManager::sharedManager()->providerForMX(hostname.mco_mcString);
- return [MCOMailProvider mco_objectWithMCObject:(mailcore::Object *) provider];
+ return MCO_TO_OBJC(provider);
}
- (MCOMailProvider *) providerForIdentifier:(NSString *)identifier
{
mailcore::MailProvider *provider = mailcore::MailProvidersManager::sharedManager()->providerForIdentifier(identifier.mco_mcString);
- return [MCOMailProvider mco_objectWithMCObject:(mailcore::Object *) provider];
+ return MCO_TO_OBJC(provider);
}
@end
diff --git a/src/objc/provider/MCONetService.h b/src/objc/provider/MCONetService.h
index e1e02141..06a9f2af 100644
--- a/src/objc/provider/MCONetService.h
+++ b/src/objc/provider/MCONetService.h
@@ -7,21 +7,15 @@
//
#import <Foundation/Foundation.h>
-
-typedef enum {
- MCONetServiceConnectionTypeClear = 1 << 0,
- MCONetServiceConnectionTypeStartTLS = 1 << 1,
- MCONetServiceConnectionTypeTLS = 1 << 2,
- MCONetServiceConnectionTypeMask = (MCONetServiceConnectionTypeClear | MCONetServiceConnectionTypeStartTLS | MCONetServiceConnectionTypeTLS)
-} MCONetServiceConnectionType;
+#import <MailCore/MCOConstants.h>
@interface MCONetService : NSObject
@property (nonatomic, copy) NSString * hostname;
@property (nonatomic, assign) unsigned int port;
-@property (nonatomic, assign) MCONetServiceConnectionType connectionType;
+@property (nonatomic, assign) MCOConnectionType connectionType;
-+ (MCONetService *) netServiceWithInfo:(NSDictionary *)info;
++ (MCONetService *) serviceWithInfo:(NSDictionary *)info;
- (id) initWithInfo:(NSDictionary *)info;
- (NSDictionary *) info;
diff --git a/src/objc/provider/MCONetService.mm b/src/objc/provider/MCONetService.mm
index eb2ad6f5..614e2337 100644
--- a/src/objc/provider/MCONetService.mm
+++ b/src/objc/provider/MCONetService.mm
@@ -11,11 +11,14 @@
#import "NSDictionary+MCO.h"
#import "NSString+MCO.h"
+#import "NSObject+MCO.h"
@implementation MCONetService {
mailcore::NetService * _netService;
}
+#define nativeType mailcore::NetService
+
- (mailcore::Object *) mco_mcObject
{
return _netService;
@@ -29,14 +32,15 @@
+ (MCONetService *) netServiceWithInfo:(NSDictionary *)info
{
- return [[[MCONetService alloc] initWithInfo:info] autorelease];
+ return [[[self alloc] initWithInfo:info] autorelease];
}
- (id) initWithInfo:(NSDictionary *)info
{
self = [super init];
- _netService = new mailcore::NetService(info.mco_mcHashMap);
+ _netService = mailcore::NetService::serviceWithInfo(info.mco_mcHashMap);
+ _netService->retain();
return self;
}
@@ -46,29 +50,14 @@
self = [super init];
_netService = netService;
+ _netService->retain();
return self;
}
-- (void) setHostname:(NSString *)hostname {
- _netService->setHostname(hostname.mco_mcString);
-}
-
-- (NSString *) hostname {
- return [NSString mco_stringWithMCString:_netService->hostname()];
-}
-
-- (void) setPort:(unsigned int)port {
- _netService->setPort(port);
-}
-
-- (unsigned int) port {
- return _netService->port();
-}
-
-- (MCONetServiceConnectionType) connectionType {
- return (MCONetServiceConnectionType) _netService->connectionType();
-}
+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)
- (NSDictionary *) info
{