cocoaTouch/DetailViewController.m
author koda
Thu, 17 Jun 2010 19:57:51 +0200
changeset 3513 f589230fa21b
parent 3490 016b3172b645
permissions -rw-r--r--
now it's possible to select the scheme file in the ifrontendfix a type about loading an image (iphone file system IS case senstive) add rotation for iphone build too make the ifrontend work again with 3.0 sdk reworked openalbridge following most of an old implementation by Smaxx and making it more modular -- now sources are limited but the memory extension and cleanup is todo nil'd many variables in engine that were causing intialization problems

    //
//  DetailViewController.m
//  HedgewarsMobile
//
//  Created by Vittorio on 27/03/10.
//  Copyright 2010 __MyCompanyName__. All rights reserved.
//

#import "DetailViewController.h"
#import "SDL_uikitappdelegate.h"
#import "GeneralSettingsViewController.h"
#import "TeamSettingsViewController.h"
#import "WeaponSettingsViewController.h"
#import "SchemeSettingsViewController.h"
#import "CommodityFunctions.h"

@implementation DetailViewController
@synthesize controllerNames,popoverController;


-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
	return rotationManager(interfaceOrientation);
}

-(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration{
    self.view.frame = CGRectMake(0, 0, 1024, 1024);
}

-(void) viewDidLoad {
    self.title = NSLocalizedString(@"Settings",@"");

    // allocate controllers and store them into the array
    NSArray *array= [[NSArray alloc] initWithObjects:NSLocalizedString(@"General",@""), 
                                                     NSLocalizedString(@"Teams",@""),
                                                     NSLocalizedString(@"Weapons",@""),
                                                     NSLocalizedString(@"Schemes",@""),
                                                     nil];
    self.controllerNames = array;
    [array release];
    
    // on ipad make the general setting the first view, on iphone add the "Done" button on top left
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
        
        UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(112, 112, 480, 320)];
        label.text = @"Press the buttons on the left";
        label.font = [UIFont systemFontOfSize:20];
        label.textAlignment = UITextAlignmentCenter;
        [self.view addSubview:label];
        [label release];
        
        //[self.navigationController pushViewController:nextController animated:NO];
    } else {
        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
                                                                                              target:self
                                                                                              action:@selector(dismissSplitView)];
    }

    [super viewDidLoad];
}


#pragma mark -
#pragma mark Table view data source
-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView {
    // don't display 
    if (UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad)
        return 0;
    else
        return 1;
}

-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
    return [controllerNames count];
}

-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
    static NSString *CellIdentifier = @"Cell";
    
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
    if (cell == nil) {
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault 
                                       reuseIdentifier:CellIdentifier] autorelease];
    }
    
    NSInteger row = [indexPath row];
    
    cell.textLabel.text = [controllerNames objectAtIndex:row];
    cell.imageView.image = [UIImage imageNamed:@"Icon.png"];
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
    
    return cell;
}

#pragma mark -
#pragma mark Table view delegate
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
    NSInteger row = [indexPath row];
    UIViewController *nextController = nil;
    
    switch (row) {
        case 0:
            if (nil == generalSettingsViewController)
                generalSettingsViewController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
            nextController = generalSettingsViewController;
            break;
        case 1:
            if (nil == teamSettingsViewController)
                teamSettingsViewController = [[TeamSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
            nextController = teamSettingsViewController;
            break;
        case 2:
            if (nil == weaponSettingsViewController)
                weaponSettingsViewController = [[WeaponSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
            nextController = weaponSettingsViewController;
            break;
        case 3:
            if (nil == schemeSettingsViewController)
                schemeSettingsViewController = [[SchemeSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
            nextController = schemeSettingsViewController;
            break;
    }
    
    nextController.title = [controllerNames objectAtIndex:row];
    [self.navigationController pushViewController:nextController animated:YES];
}

-(IBAction) dismissSplitView {
    [[NSNotificationCenter defaultCenter] postNotificationName:@"dismissModalView" object:nil];
}

#if __IPHONE_3_2
#pragma mark -
#pragma mark splitview support
-(void) splitViewController:(UISplitViewController *)svc popoverController:(UIPopoverController *)pc willPresentViewController:(UIViewController *)aViewController {
    if (popoverController != nil) {
        [popoverController dismissPopoverAnimated:YES];
    }
}

// Called when the master view controller is about to be hidden
-(void) splitViewController: (UISplitViewController*)svc willHideViewController:(UIViewController *)aViewController 
            withBarButtonItem:(UIBarButtonItem*)barButtonItem forPopoverController: (UIPopoverController*)pc {

  /*  barButtonItem.title = @"Master View";
    UIToolbar *toolbar = self.parentViewController.navigationController.toolbar;
    NSMutableArray *items = [[toolbar items] mutableCopy];
    [items insertObject:barButtonItem atIndex:0];
    [toolbar setItems:items animated:YES];

    [items release];

    self.popoverController = pc;*/
    barButtonItem.title = aViewController.title;
    self.navigationItem.rightBarButtonItem = barButtonItem;
}

// Called when the master view controller is about to appear
-(void) splitViewController: (UISplitViewController*)svc  willShowViewController:(UIViewController *)aViewController 
            invalidatingBarButtonItem:(UIBarButtonItem *)barButtonItem {
    /*UIToolbar *toolbar = self.parentViewController.navigationController.toolbar;

    NSMutableArray *items = [[toolbar items] mutableCopy];
    [items removeObjectAtIndex:0];

    [toolbar setItems:items animated:YES];

    [items release];

    self.popoverController = nil;*/
        self.navigationItem.rightBarButtonItem = nil;

}
#endif

-(void) didReceiveMemoryWarning {
    // Releases the view if it doesn't have a superview.
    [super didReceiveMemoryWarning];
    // Release any cached data, images, etc that aren't in use.
    if (generalSettingsViewController.view.superview == nil)
        generalSettingsViewController = nil;
    if (teamSettingsViewController.view.superview == nil)
        teamSettingsViewController = nil;
    if (weaponSettingsViewController.view.superview == nil)
        weaponSettingsViewController = nil;
    if (schemeSettingsViewController.view.superview == nil)
        schemeSettingsViewController = nil;
    MSG_MEMCLEAN();
}

-(void) viewDidUnload {
    self.controllerNames = nil;
    generalSettingsViewController = nil;
    teamSettingsViewController = nil;
    weaponSettingsViewController = nil;
    schemeSettingsViewController = nil;
    [super viewDidUnload];
    MSG_DIDUNLOAD();
}

-(void) dealloc {
    [controllerNames release];
    [generalSettingsViewController release];
    [teamSettingsViewController release];
    [weaponSettingsViewController release];
    [schemeSettingsViewController release];
    [super dealloc];
}
@end