/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 |