0,0 → 1,175 |
// /////////////////////////////////////////////////////////////////////////////// |
// Copyright (C) 2010, Frank Blumenberg |
// |
// See License.txt for complete licensing and attribution information. |
// Permission is hereby granted, free of charge, to any person obtaining a copy |
// of this software and associated documentation files (the "Software"), to deal |
// in the Software without restriction, including without limitation the rights |
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell |
// copies of the Software, and to permit persons to whom the Software is |
// furnished to do so, subject to the following conditions: |
// |
// The above copyright notice and this permission notice shall be included in all |
// copies or substantial portions of the Software. |
// |
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR |
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, |
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE |
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER |
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, |
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN |
// THE SOFTWARE. |
// |
// /////////////////////////////////////////////////////////////////////////////// |
|
#import "MKHosts.h" |
#import "MKHost.h" |
|
#import "TTGlobalCorePaths.h" |
#import "TTCorePreprocessorMacros.h" |
|
@interface MKHosts (Private) |
-(void) load; |
-(void) save; |
@end |
|
@implementation MKHosts |
|
- (id) init |
{ |
self = [super init]; |
if (self != nil) { |
[self load]; |
|
if(!hosts) { |
hosts = [[NSMutableArray alloc]init]; |
|
MKHost* h; |
|
h = [[MKHost alloc]init]; |
h.name = @"Quadkopter WLAN"; |
h.address = @"192.168.0.74"; |
h.port = 23; |
h.connectionClass = @"MKIpConnection"; |
[hosts addObject:h]; |
[h release]; |
|
h = [[MKHost alloc]init]; |
h.name = @"Quadkopter QMK"; |
h.address = @"127.0.0.1"; |
h.port = 64400; |
h.connectionClass = @"MKQmkIpConnection"; |
[hosts addObject:h]; |
[h release]; |
|
h = [[MKHost alloc]init]; |
h.name = @"Quadkopter Fake"; |
h.address = @"192.168.0.74"; |
h.port = 23; |
h.connectionClass = @"MKFakeConnection"; |
[hosts addObject:h]; |
[h release]; |
|
|
|
[self save]; |
} |
} |
return self; |
} |
|
- (void) dealloc |
{ |
[hosts release]; |
[super dealloc]; |
} |
|
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
#define kFilename @"mkhosts" |
#define kDataKey @"Data" |
|
-(void) load { |
|
NSString *filePath = TTPathForDocumentsResource(kFilename); |
|
if ([[NSFileManager defaultManager] fileExistsAtPath:filePath]) { |
|
DLog(@"Load the hosts from %@",filePath); |
|
NSData *data = [[NSMutableData alloc] |
initWithContentsOfFile:filePath]; |
NSKeyedUnarchiver *unarchiver = [[NSKeyedUnarchiver alloc] initForReadingWithData:data]; |
|
TT_RELEASE_SAFELY(hosts); |
hosts = [unarchiver decodeObjectForKey:kDataKey]; |
[hosts retain]; |
|
[unarchiver finishDecoding]; |
|
[unarchiver release]; |
[data release]; |
|
DLog(@"Loaded the hosts %@",hosts); |
|
} |
} |
|
-(void) save { |
|
NSString *filePath = TTPathForDocumentsResource(kFilename); |
NSMutableData *data = [[NSMutableData alloc] init]; |
NSKeyedArchiver *archiver = [[NSKeyedArchiver alloc] initForWritingWithMutableData:data]; |
|
[archiver encodeObject:hosts forKey:kDataKey]; |
[archiver finishEncoding]; |
[data writeToFile:filePath atomically:YES]; |
|
[archiver release]; |
[data release]; |
} |
|
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
-(NSUInteger) count { |
return [hosts count]; |
} |
|
-(MKHost*) hostAtIndexPath:(NSIndexPath *)indexPath { |
NSUInteger row = [indexPath row]; |
return [hosts objectAtIndex:row]; |
} |
|
-(NSIndexPath*) addHost { |
MKHost* h = [[MKHost alloc]init]; |
h.connectionClass = @"MKFakeConnection"; |
[hosts addObject:h]; |
[h release]; |
|
[self save]; |
return [NSIndexPath indexPathForRow:[hosts count]-1 inSection:0]; |
} |
|
-(void) moveHostAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { |
NSLog(@"moveHostAtIndexPath %@ -> %@",fromIndexPath,toIndexPath); |
NSLog(@"%@",hosts); |
|
NSUInteger fromRow = [fromIndexPath row]; |
NSUInteger toRow = [toIndexPath row]; |
|
id object = [[hosts objectAtIndex:fromRow] retain]; |
[hosts removeObjectAtIndex:fromRow]; |
[hosts insertObject:object atIndex:toRow]; |
[object release]; |
|
NSLog(@"%@",hosts); |
[self save]; |
} |
|
-(void) deleteHostAtIndexPath:(NSIndexPath*)indexPath { |
[hosts removeObjectAtIndex:[indexPath row]]; |
[self save]; |
} |
|
@end |
|