Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 804 → Rev 805

/iKopter/trunk/Classes/Hosts/MKHosts.m
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