project_files/HedgewarsMobile/Classes/MasterViewController.m
changeset 3701 8c449776ebe6
parent 3697 d5b30d6373fc
child 3737 2ba6ac8a114b
--- a/project_files/HedgewarsMobile/Classes/MasterViewController.m	Sun Aug 01 09:17:59 2010 -0400
+++ b/project_files/HedgewarsMobile/Classes/MasterViewController.m	Sun Aug 01 17:58:09 2010 +0200
@@ -15,7 +15,7 @@
 #import "CommodityFunctions.h"
 
 @implementation MasterViewController
-@synthesize detailViewController, controllerNames, lastIndexPath;
+@synthesize targetController, controllerNames, lastIndexPath;
 
 
 -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
@@ -29,20 +29,29 @@
     [super viewDidLoad];
 
     // the list of selectable controllers
-    controllerNames = [[NSArray alloc] initWithObjects:NSLocalizedString(@"General",@""),
-                                                       NSLocalizedString(@"Teams",@""),
-                                                       NSLocalizedString(@"Weapons",@""),
-                                                       NSLocalizedString(@"Schemes",@""),
-                                                       nil];
-    // the "Done" button on top left
-    self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
-                                                                                          target:self
-                                                                                          action:@selector(dismissSplitView)];
+    NSArray *array = [[NSArray alloc] initWithObjects:NSLocalizedString(@"General",@""),
+                                                      NSLocalizedString(@"Teams",@""),
+                                                      NSLocalizedString(@"Weapons",@""),
+                                                      NSLocalizedString(@"Schemes",@""),
+                                                      nil];
+    self.controllerNames = array;
+    [array release];
+
+    // targetControllers tells whether we're on the right or left side of the splitview -- on iphone we only use the right side
+    if (targetController == nil && UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) {
+        if (nil == generalSettingsViewController)
+            generalSettingsViewController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];
+        generalSettingsViewController.navigationItem.hidesBackButton = YES;
+        [self.navigationController pushViewController:generalSettingsViewController animated:NO];
+    } else {
+        self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone
+                                                                                              target:self
+                                                                                              action:@selector(dismissSplitView)];
+    }
 }
 
 #pragma mark -
 #pragma mark Table view data source
-
 -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView {
     return 1;
 }
@@ -58,9 +67,17 @@
     UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
     if (cell == nil) {
         cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
-        cell.textLabel.text = [controllerNames objectAtIndex:[indexPath row]];
     }
 
+    cell.textLabel.text = [controllerNames objectAtIndex:[indexPath row]];
+    if (nil == targetController) {
+        UIImage *icon = [[UIImage alloc] initWithContentsOfFile:@"Icon-Small.png"];
+        cell.imageView.image = icon;
+        [icon release];
+        cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
+    } else
+        cell.accessoryType = UITableViewCellAccessoryNone;
+
     return cell;
 }
 
@@ -73,7 +90,7 @@
 
     if (newRow != oldRow) {
         [self.tableView deselectRowAtIndexPath:lastIndexPath animated:YES];
-        [detailViewController.navigationController popToRootViewControllerAnimated:NO];
+        [targetController.navigationController popToRootViewControllerAnimated:NO];
 
         switch (newRow) {
             case 0:
@@ -98,11 +115,17 @@
                 break;
         }
 
-        nextController.navigationItem.hidesBackButton = YES;
         nextController.title = [controllerNames objectAtIndex:newRow];
-        [detailViewController.navigationController pushViewController:nextController animated:NO];
         self.lastIndexPath = indexPath;
         [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
+
+        if (nil == targetController) {
+            nextController.navigationItem.hidesBackButton = NO;
+            [self.navigationController pushViewController:nextController animated:YES];
+        } else {
+            nextController.navigationItem.hidesBackButton = YES;
+            [targetController.navigationController pushViewController:nextController animated:NO];
+        }
     }
 }
 
@@ -125,7 +148,7 @@
 }
 
 -(void) viewDidUnload {
-    self.detailViewController = nil;
+    self.targetController = nil;
     self.controllerNames = nil;
     self.lastIndexPath = nil;
     generalSettingsViewController = nil;
@@ -137,8 +160,8 @@
 }
 
 -(void) dealloc {
+    targetController = nil;
     [controllerNames release];
-    [detailViewController release];
     [lastIndexPath release];
     [generalSettingsViewController release];
     [teamSettingsViewController release];