summaryrefslogtreecommitdiff
path: root/bindings/objc/src/SwordInstallSource.mm
diff options
context:
space:
mode:
Diffstat (limited to 'bindings/objc/src/SwordInstallSource.mm')
-rw-r--r--bindings/objc/src/SwordInstallSource.mm197
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