0,0 → 1,216 |
// |
// RootViewController.m |
// iKopter |
// |
// Created by Frank Blumenberg on 20.06.10. |
// Copyright de.frankblumenberg 2010. All rights reserved. |
// |
|
#import "RootViewController.h" |
#import "MainViewController.h" |
|
#import "MKHosts.h"; |
#import "MKHost.h"; |
#import "MKHostViewController.h" |
#import "MKConnectionController.h" |
|
@implementation RootViewController |
|
|
#pragma mark - |
#pragma mark View lifecycle |
|
|
- (void)viewDidLoad { |
[super viewDidLoad]; |
|
self.title = @"µKopter"; |
|
hosts=[[MKHosts alloc]init]; |
|
UIBarButtonItem* addButton; |
addButton = [[[UIBarButtonItem alloc] |
initWithBarButtonSystemItem:UIBarButtonSystemItemAdd |
target:self |
action:@selector(addHost)] autorelease]; |
addButton.style = UIBarButtonItemStyleBordered; |
|
UIBarButtonItem* spacerButton; |
spacerButton = [[[UIBarButtonItem alloc] |
initWithBarButtonSystemItem:UIBarButtonSystemItemFlexibleSpace |
target:nil |
action:nil] autorelease]; |
|
[self setToolbarItems:[NSArray arrayWithObjects:self.editButtonItem,spacerButton,addButton,nil]]; |
|
self.tableView.allowsSelectionDuringEditing=YES; |
} |
|
- (void)viewWillAppear:(BOOL)animated { |
[super viewWillAppear:animated]; |
|
self.navigationController.navigationBar.barStyle = UIBarStyleDefault; |
[UIApplication sharedApplication].statusBarStyle = UIStatusBarStyleDefault; |
|
[self.navigationController setToolbarHidden:NO animated:NO]; |
[[MKConnectionController sharedMKConnectionController] stop]; |
|
} |
|
- (void)viewDidAppear:(BOOL)animated { |
|
if(self.tableView.editing ) { |
|
if( editingHost ) { |
|
NSArray* indexPaths=[NSArray arrayWithObject:editingHost]; |
|
NSLog(@"appear reload %@",indexPaths); |
[self.tableView beginUpdates]; |
[self.tableView reloadRowsAtIndexPaths:indexPaths |
withRowAnimation:UITableViewRowAnimationFade]; |
[self.tableView endUpdates]; |
|
editingHost=nil; |
} |
} |
} |
|
|
// Override to allow orientations other than the default portrait orientation. |
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { |
return YES; //(interfaceOrientation == UIInterfaceOrientationPortrait); |
} |
|
/////////////////////////////////////////////////////////////////////////////////////////////////// |
#pragma mark - |
#pragma mark Table view data source |
|
// Customize the number of sections in the table view. |
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { |
return 1; |
} |
|
|
// Customize the number of rows in the table view. |
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { |
return [hosts count]; |
} |
|
|
// Customize the appearance of table view cells. |
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { |
|
NSLog(@"cellForRowAtIndexPath %@",indexPath); |
|
static NSString *CellIdentifier = @"MKHostCell"; |
|
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; |
if (cell == nil) { |
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease]; |
} |
|
MKHost* host = [hosts hostAtIndexPath:indexPath]; |
|
cell.textLabel.text = host.name; |
cell.detailTextLabel.text = host.address; |
cell.editingAccessoryType = UITableViewCellAccessoryDisclosureIndicator; |
|
return cell; |
} |
|
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
// Override to support conditional editing of the table view. |
- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { |
// Return NO if you do not want the specified item to be editable. |
return YES; |
} |
|
|
// Override to support editing the table view. |
- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { |
|
if (editingStyle == UITableViewCellEditingStyleDelete) { |
// Delete the row from the data source. |
[hosts deleteHostAtIndexPath:indexPath]; |
[tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; |
} |
else if (editingStyle == UITableViewCellEditingStyleInsert) { |
// Create a new instance of the appropriate class, insert it into the array, and add a new row to the table view. |
} |
} |
|
- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { |
[hosts moveHostAtIndexPath:fromIndexPath toIndexPath:toIndexPath]; |
} |
|
- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { |
return YES; |
} |
|
/////////////////////////////////////////////////////////////////////////////////////////////////// |
#pragma mark - |
#pragma mark Table view delegate |
|
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { |
|
[tableView deselectRowAtIndexPath:indexPath animated:YES]; |
|
MKHost* host=[hosts hostAtIndexPath:indexPath]; |
if (self.tableView.editing ) { |
MKHostViewController* hostView = [[MKHostViewController alloc] initWithHost:host]; |
editingHost = indexPath; |
[self.navigationController pushViewController:hostView animated:YES]; |
[hostView release]; |
} |
else { |
MainViewController* mainView = [[MainViewController alloc] initWithHost:host]; |
[self.navigationController pushViewController:mainView animated:YES]; |
[mainView release]; |
} |
} |
|
/////////////////////////////////////////////////////////////////////////////////////////////////// |
|
- (void)addHost { |
|
editingHost=[hosts addHost]; |
|
NSArray* indexPaths=[NSArray arrayWithObject:editingHost]; |
|
[self.tableView beginUpdates]; |
[self.tableView insertRowsAtIndexPaths:indexPaths |
withRowAnimation:UITableViewRowAnimationFade]; |
[self.tableView endUpdates]; |
|
MKHost* host=[hosts hostAtIndexPath:editingHost]; |
MKHostViewController* hostView = [[MKHostViewController alloc] initWithHost:host]; |
[self.navigationController pushViewController:hostView animated:YES]; |
[hostView release]; |
} |
|
/////////////////////////////////////////////////////////////////////////////////////////////////// |
#pragma mark - |
#pragma mark Memory management |
|
- (void)didReceiveMemoryWarning { |
// Releases the view if it doesn't have a superview. |
[super didReceiveMemoryWarning]; |
|
// Relinquish ownership any cached data, images, etc that aren't in use. |
} |
|
- (void)viewDidUnload { |
[hosts release]; |
hosts = nil; |
} |
|
- (void)dealloc { |
[hosts release]; |
[super dealloc]; |
} |
|
|
@end |
|