diff options
Diffstat (limited to 'bindings/objc/src/SwordInstallSource.mm')
-rw-r--r-- | bindings/objc/src/SwordInstallSource.mm | 197 |
1 files changed, 197 insertions, 0 deletions
diff --git a/bindings/objc/src/SwordInstallSource.mm b/bindings/objc/src/SwordInstallSource.mm new file mode 100644 index 0000000..b1f71d3 --- /dev/null +++ b/bindings/objc/src/SwordInstallSource.mm @@ -0,0 +1,197 @@ +// +// SwordInstallSource.mm +// Eloquent +// +// Created by Manfred Bergmann on 13.08.07. +// Copyright 2007 __MyCompanyName__. All rights reserved. +// + +#import "SwordInstallSource.h" +#import "SwordInstallSourceManager.h" +#import "SwordManager.h" + +@interface SwordInstallSource () + +@end + +@implementation SwordInstallSource + +// init +- (id)init { + self = [super init]; + if(self) { + temporarySource = NO; + + // at first we have no sword manager + [self setSwordManager:nil]; + + // init InstallMgr + swInstallSource = new sword::InstallSource("", ""); + if(swInstallSource == nil) { + ALog(@"Could not init sword install source!"); + } + } + + return self; +} + +- (id)initWithType:(NSString *)aType { + self = [self init]; + if(self) { + // set type + swInstallSource->type = [aType cStringUsingEncoding:NSUTF8StringEncoding]; + } + + return self; +} + +/** init with given source */ +- (id)initWithSource:(sword::InstallSource *)is { + self = [super init]; + if(self) { + temporarySource = YES; + + // at first we have no sword manager + [self setSwordManager:nil]; + + swInstallSource = is; + } + + return self; +} + +- (void)finalize { + if(temporarySource == NO) { + //LogL(LOG_DEBUG, @"[SwordInstallSource -finalize] deleting swInstallSource"); + //delete swInstallSource; + } + + [super finalize]; +} + +- (void)dealloc { + [swordManager release]; + [super dealloc]; +} + +- (void)setSwordManager:(SwordManager *)swManager { + [swManager retain]; + [swordManager release]; + swordManager = swManager; +} + +// accessors +- (NSString *)caption { + const char *str = swInstallSource->caption; + return [[[NSString alloc] initWithCString:str encoding:NSUTF8StringEncoding] autorelease]; +} + +- (void)setCaption:(NSString *)aCaption { + swInstallSource->caption = [aCaption cStringUsingEncoding:NSUTF8StringEncoding]; +} + +- (NSString *)type { + const char *str = swInstallSource->type; + return [[[NSString alloc] initWithCString:str encoding:NSUTF8StringEncoding] autorelease]; +} + +- (void)setType:(NSString *)aType { + swInstallSource->type = [aType cStringUsingEncoding:NSUTF8StringEncoding]; +} + +- (NSString *)source { + const char *str = swInstallSource->source; + return [[[NSString alloc] initWithCString:str encoding:NSUTF8StringEncoding] autorelease]; +} + +- (void)setSource:(NSString *)aSource { + swInstallSource->source = [aSource cStringUsingEncoding:NSUTF8StringEncoding]; +} + +- (NSString *)directory { + const char *str = swInstallSource->directory; + return [[[NSString alloc] initWithCString:str encoding:NSUTF8StringEncoding] autorelease]; +} + +- (void)setDirectory:(NSString *)aDir { + swInstallSource->directory = [aDir cStringUsingEncoding:NSUTF8StringEncoding]; +} + +- (BOOL)isLocalSource { + return [[self source] isEqualToString:@"localhost"]; +} + +// get config entry +- (NSString *)configEntry { + return [NSString stringWithFormat:@"%@|%@|%@", [self caption], [self source], [self directory]]; +} + +/** install module */ +- (void)installModuleWithName:(NSString *)mName usingManager:(SwordManager *)swManager withInstallController:(SwordInstallSourceManager *)sim { + sword::InstallMgr *im = [sim installMgr]; + im->installModule([swManager swManager], 0, [mName UTF8String], swInstallSource); +} + +/** list all modules of this source */ +- (NSArray *)listModules { + NSArray *ret = [NSArray array]; + + SwordManager *sm = [self swordManager]; + if(sm) { + ret = [sm listModules]; + } else { + ALog(@"Have nil SwordManager"); + } + + return ret; +} + +- (NSArray *)listModulesForType:(ModuleType)aType { + NSArray *ret = [NSArray array]; + + SwordManager *sm = [self swordManager]; + if(sm) { + ret = [sm modulesForType:aType]; + } else { + ALog(@"Have nil SwordManager"); + } + + return ret; +} + +/** list module types */ +- (NSArray *)listModuleTypes { + NSArray *ret = [SwordManager moduleTypes]; + return ret; +} + +// get associated SwordManager +- (SwordManager *)swordManager { + + if(swordManager == nil) { + // create SwordManager from the SWMgr of this source + sword::SWMgr *mgr; + if([[self source] isEqualToString:@"localhost"]) { + // create SwordManager from new SWMgr of path + mgr = new sword::SWMgr([[self directory] UTF8String], true, NULL, false, false); + } else { + // create SwordManager from the SWMgr of this source + mgr = swInstallSource->getMgr(); + } + + if(mgr == nil) { + ALog(@"Have a nil SWMgr!"); + } else { + swordManager = [[SwordManager alloc] initWithSWMgr:mgr]; + } + } + + return swordManager; +} + +/** low level API */ +- (sword::InstallSource *)installSource { + return swInstallSource; +} + +@end |