13 #import "WeaponSettingsViewController.h" |
13 #import "WeaponSettingsViewController.h" |
14 #import "SchemeSettingsViewController.h" |
14 #import "SchemeSettingsViewController.h" |
15 #import "CommodityFunctions.h" |
15 #import "CommodityFunctions.h" |
16 |
16 |
17 @implementation MasterViewController |
17 @implementation MasterViewController |
18 @synthesize detailViewController, controllerNames, lastIndexPath; |
18 @synthesize targetController, controllerNames, lastIndexPath; |
19 |
19 |
20 |
20 |
21 -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { |
21 -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { |
22 return rotationManager(interfaceOrientation); |
22 return rotationManager(interfaceOrientation); |
23 } |
23 } |
27 #pragma mark View lifecycle |
27 #pragma mark View lifecycle |
28 -(void) viewDidLoad { |
28 -(void) viewDidLoad { |
29 [super viewDidLoad]; |
29 [super viewDidLoad]; |
30 |
30 |
31 // the list of selectable controllers |
31 // the list of selectable controllers |
32 controllerNames = [[NSArray alloc] initWithObjects:NSLocalizedString(@"General",@""), |
32 NSArray *array = [[NSArray alloc] initWithObjects:NSLocalizedString(@"General",@""), |
33 NSLocalizedString(@"Teams",@""), |
33 NSLocalizedString(@"Teams",@""), |
34 NSLocalizedString(@"Weapons",@""), |
34 NSLocalizedString(@"Weapons",@""), |
35 NSLocalizedString(@"Schemes",@""), |
35 NSLocalizedString(@"Schemes",@""), |
36 nil]; |
36 nil]; |
37 // the "Done" button on top left |
37 self.controllerNames = array; |
38 self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone |
38 [array release]; |
39 target:self |
39 |
40 action:@selector(dismissSplitView)]; |
40 // targetControllers tells whether we're on the right or left side of the splitview -- on iphone we only use the right side |
|
41 if (targetController == nil && UI_USER_INTERFACE_IDIOM() == UIUserInterfaceIdiomPad) { |
|
42 if (nil == generalSettingsViewController) |
|
43 generalSettingsViewController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
|
44 generalSettingsViewController.navigationItem.hidesBackButton = YES; |
|
45 [self.navigationController pushViewController:generalSettingsViewController animated:NO]; |
|
46 } else { |
|
47 self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone |
|
48 target:self |
|
49 action:@selector(dismissSplitView)]; |
|
50 } |
41 } |
51 } |
42 |
52 |
43 #pragma mark - |
53 #pragma mark - |
44 #pragma mark Table view data source |
54 #pragma mark Table view data source |
45 |
|
46 -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { |
55 -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { |
47 return 1; |
56 return 1; |
48 } |
57 } |
49 |
58 |
50 -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { |
59 -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { |
56 static NSString *CellIdentifier = @"Cell"; |
65 static NSString *CellIdentifier = @"Cell"; |
57 |
66 |
58 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; |
67 UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; |
59 if (cell == nil) { |
68 if (cell == nil) { |
60 cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; |
69 cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease]; |
61 cell.textLabel.text = [controllerNames objectAtIndex:[indexPath row]]; |
|
62 } |
70 } |
|
71 |
|
72 cell.textLabel.text = [controllerNames objectAtIndex:[indexPath row]]; |
|
73 if (nil == targetController) { |
|
74 UIImage *icon = [[UIImage alloc] initWithContentsOfFile:@"Icon-Small.png"]; |
|
75 cell.imageView.image = icon; |
|
76 [icon release]; |
|
77 cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; |
|
78 } else |
|
79 cell.accessoryType = UITableViewCellAccessoryNone; |
63 |
80 |
64 return cell; |
81 return cell; |
65 } |
82 } |
66 |
83 |
67 #pragma mark - |
84 #pragma mark - |
71 int oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1; |
88 int oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1; |
72 UIViewController *nextController = nil; |
89 UIViewController *nextController = nil; |
73 |
90 |
74 if (newRow != oldRow) { |
91 if (newRow != oldRow) { |
75 [self.tableView deselectRowAtIndexPath:lastIndexPath animated:YES]; |
92 [self.tableView deselectRowAtIndexPath:lastIndexPath animated:YES]; |
76 [detailViewController.navigationController popToRootViewControllerAnimated:NO]; |
93 [targetController.navigationController popToRootViewControllerAnimated:NO]; |
77 |
94 |
78 switch (newRow) { |
95 switch (newRow) { |
79 case 0: |
96 case 0: |
80 if (nil == generalSettingsViewController) |
97 if (nil == generalSettingsViewController) |
81 generalSettingsViewController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
98 generalSettingsViewController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
96 schemeSettingsViewController = [[SchemeSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
113 schemeSettingsViewController = [[SchemeSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
97 nextController = schemeSettingsViewController; |
114 nextController = schemeSettingsViewController; |
98 break; |
115 break; |
99 } |
116 } |
100 |
117 |
101 nextController.navigationItem.hidesBackButton = YES; |
|
102 nextController.title = [controllerNames objectAtIndex:newRow]; |
118 nextController.title = [controllerNames objectAtIndex:newRow]; |
103 [detailViewController.navigationController pushViewController:nextController animated:NO]; |
|
104 self.lastIndexPath = indexPath; |
119 self.lastIndexPath = indexPath; |
105 [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone]; |
120 [self.tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone]; |
|
121 |
|
122 if (nil == targetController) { |
|
123 nextController.navigationItem.hidesBackButton = NO; |
|
124 [self.navigationController pushViewController:nextController animated:YES]; |
|
125 } else { |
|
126 nextController.navigationItem.hidesBackButton = YES; |
|
127 [targetController.navigationController pushViewController:nextController animated:NO]; |
|
128 } |
106 } |
129 } |
107 } |
130 } |
108 |
131 |
109 |
132 |
110 #pragma mark - |
133 #pragma mark - |
123 schemeSettingsViewController = nil; |
146 schemeSettingsViewController = nil; |
124 MSG_MEMCLEAN(); |
147 MSG_MEMCLEAN(); |
125 } |
148 } |
126 |
149 |
127 -(void) viewDidUnload { |
150 -(void) viewDidUnload { |
128 self.detailViewController = nil; |
151 self.targetController = nil; |
129 self.controllerNames = nil; |
152 self.controllerNames = nil; |
130 self.lastIndexPath = nil; |
153 self.lastIndexPath = nil; |
131 generalSettingsViewController = nil; |
154 generalSettingsViewController = nil; |
132 teamSettingsViewController = nil; |
155 teamSettingsViewController = nil; |
133 weaponSettingsViewController = nil; |
156 weaponSettingsViewController = nil; |
135 MSG_DIDUNLOAD(); |
158 MSG_DIDUNLOAD(); |
136 [super viewDidUnload]; |
159 [super viewDidUnload]; |
137 } |
160 } |
138 |
161 |
139 -(void) dealloc { |
162 -(void) dealloc { |
|
163 targetController = nil; |
140 [controllerNames release]; |
164 [controllerNames release]; |
141 [detailViewController release]; |
|
142 [lastIndexPath release]; |
165 [lastIndexPath release]; |
143 [generalSettingsViewController release]; |
166 [generalSettingsViewController release]; |
144 [teamSettingsViewController release]; |
167 [teamSettingsViewController release]; |
145 [weaponSettingsViewController release]; |
168 [weaponSettingsViewController release]; |
146 [schemeSettingsViewController release]; |
169 [schemeSettingsViewController release]; |