Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 804 → Rev 805

/iKopter/trunk/Classes/Hosts/MKHost.h
0,0 → 1,40
// ///////////////////////////////////////////////////////////////////////////////
// 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 <Foundation/Foundation.h>
 
 
@interface MKHost : NSObject<NSCoding, NSCopying> {
NSString* _name;
NSString* _address;
NSUInteger _port;
NSString* _connectionClass;
}
 
@property(retain) NSString* name;
@property(retain) NSString* address;
@property(assign) NSUInteger port;
@property(retain) NSString* connectionClass;
 
@end
/iKopter/trunk/Classes/Hosts/MKHost.m
0,0 → 1,90
// ///////////////////////////////////////////////////////////////////////////////
// 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 "MKHost.h"
 
#define kNameKey @"name"
#define kAddressKey @"address"
#define kPortKey @"port"
#define kConnectionClassKey @"connectionClass"
 
@implementation MKHost
 
@synthesize name=_name;
@synthesize address=_address;
@synthesize port=_port;
@synthesize connectionClass=_connectionClass;
 
- (id) init
{
self = [super init];
if (self != nil) {
self.name = NSLocalizedString(@"New host",@"Default host name");
}
return self;
}
 
- (void) dealloc
{
self.name=nil;
self.address=nil;
self.connectionClass=nil;
[super dealloc];
}
 
-(NSString*) description {
return self.name;
}
 
#pragma mark NSCoding
- (void)encodeWithCoder:(NSCoder *)encoder {
[encoder encodeObject:_name forKey:kNameKey];
[encoder encodeObject:_address forKey:kAddressKey];
[encoder encodeInteger:_port forKey:kPortKey];
[encoder encodeObject:_connectionClass forKey:kConnectionClassKey];
}
- (id)initWithCoder:(NSCoder *)decoder {
if (self = [super init]) {
self.name = [decoder decodeObjectForKey:kNameKey];
self.address = [decoder decodeObjectForKey:kAddressKey];
self.port = [decoder decodeIntegerForKey:kPortKey];
self.connectionClass = [decoder decodeObjectForKey:kConnectionClassKey];
}
return self;
}
#pragma mark -
#pragma mark NSCopying
- (id)copyWithZone:(NSZone *)zone {
MKHost *copy = [[[self class] allocWithZone: zone] init];
copy.name = [[self.name copyWithZone:zone] autorelease];
copy.address = [[self.address copyWithZone:zone] autorelease];
copy.port = self.port;
copy.connectionClass = [[self.connectionClass copyWithZone:zone] autorelease];
return copy;
}
 
 
@end
/iKopter/trunk/Classes/Hosts/MKHostViewController.h
0,0 → 1,40
// ///////////////////////////////////////////////////////////////////////////////
// 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 <UIKit/UIKit.h>
#import "InAppSettings.h"
 
@class MKHost;
 
@interface MKHostViewController : InAppSettingsViewController<InAppSettingsDatasource> {
MKHost* _host;
}
 
@property(nonatomic,retain) MKHost* host;
 
- (id)initWithHost:(MKHost*)theHost;
 
 
@end
/iKopter/trunk/Classes/Hosts/MKHostViewController.m
0,0 → 1,81
// ///////////////////////////////////////////////////////////////////////////////
// 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 "MKHostViewController.h"
 
 
@implementation MKHostViewController
 
@synthesize host=_host;
 
#pragma mark -
 
- (id)initWithHost:(MKHost*)theHost {
 
if ((self = [super initWithFile:@"MKHost"])) {
self.title = NSLocalizedString(@"MK Host",@"MK Host Title");
self.host = theHost;
super.dataSource = self;
}
return self;
}
 
- (void)dealloc {
self.host = nil;
[_host release];
[super dealloc];
}
 
#pragma mark -
 
// called after this controller's view will appear
- (void)viewWillAppear:(BOOL)animated
{
[self.navigationController setToolbarHidden:YES animated:NO];
}
 
/*
// Override to allow orientations other than the default portrait orientation.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
*/
 
#pragma mark -
#pragma mark InAppSettingsDatasource
 
- (id) objectForKey:(id)aKey {
return [self.host valueForKey:aKey];
}
 
- (void) setObject:(id)anObject forKey:(id)aKey {
[self.host setValue:anObject forKey:aKey];
}
 
@end
 
/iKopter/trunk/Classes/Hosts/MKHosts.h
0,0 → 1,42
// ///////////////////////////////////////////////////////////////////////////////
// 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 <Foundation/Foundation.h>
 
@class MKHost;
 
@interface MKHosts : NSObject {
 
NSMutableArray* hosts;
}
 
-(NSUInteger) count;
 
-(MKHost*) hostAtIndexPath:(NSIndexPath *)indexPath;
 
-(NSIndexPath*) addHost;
-(void) moveHostAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath;
-(void) deleteHostAtIndexPath:(NSIndexPath*)indexPath;
 
@end
/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