Subversion Repositories Projects

Compare Revisions

Ignore whitespace Rev 804 → Rev 805

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