43 NSLocalizedString(@"Support",@""), |
43 NSLocalizedString(@"Support",@""), |
44 nil]; |
44 nil]; |
45 self.controllerNames = array; |
45 self.controllerNames = array; |
46 [array release]; |
46 [array release]; |
47 |
47 |
48 if (IS_IPAD()) { |
48 if (IS_IPAD()) |
|
49 { |
49 // this class gets loaded twice, we tell the difference by looking at targetController |
50 // this class gets loaded twice, we tell the difference by looking at targetController |
50 if (self.targetController != nil) { |
51 if (self.targetController != nil) |
|
52 { |
51 UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain]; |
53 UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain]; |
|
54 tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; |
52 tableView.delegate = self; |
55 tableView.delegate = self; |
53 tableView.dataSource = self; |
56 tableView.dataSource = self; |
54 [tableView reloadData]; |
57 [tableView reloadData]; |
55 [self.view addSubview:tableView]; |
58 [self.view addSubview:tableView]; |
56 [self tableView:tableView didSelectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; |
59 [self tableView:tableView didSelectRowAtIndexPath:[NSIndexPath indexPathForRow:0 inSection:0]]; |
57 [tableView release]; |
60 [tableView release]; |
58 self.navigationItem.leftBarButtonItem = [self doneButton]; |
61 self.navigationItem.leftBarButtonItem = [self doneButton]; |
59 } |
62 } |
60 } else { |
63 } |
61 // this class just loads all controllers and set up tabbar and navigation controllers |
64 else |
62 NSMutableArray *tabBarNavigationControllers = [[NSMutableArray alloc] initWithCapacity:5]; |
65 { |
63 UINavigationController *navController = nil; |
66 //iPhone part moved to MainMenuViewController |
64 |
|
65 if (nil == generalSettingsViewController) { |
|
66 generalSettingsViewController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
|
67 generalSettingsViewController.tabBarItem = [self tabBarItemWithTitle:[self.controllerNames objectAtIndex:0] imageName:@"flower" selectedImageName:@"flower_filled"]; |
|
68 navController = [[UINavigationController alloc] initWithRootViewController:generalSettingsViewController]; |
|
69 UIBarButtonItem *generalSettingsDoneButton = [self doneButton]; |
|
70 generalSettingsViewController.navigationItem.backBarButtonItem = generalSettingsDoneButton; |
|
71 generalSettingsViewController.navigationItem.leftBarButtonItem = generalSettingsDoneButton; |
|
72 [generalSettingsViewController release]; |
|
73 [tabBarNavigationControllers addObject:navController]; |
|
74 releaseAndNil(navController); |
|
75 } |
|
76 if (nil == teamSettingsViewController) { |
|
77 teamSettingsViewController = [[TeamSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
|
78 teamSettingsViewController.tabBarItem = [self tabBarItemWithTitle:[self.controllerNames objectAtIndex:1] imageName:@"teams" selectedImageName:@"teams_filled"]; |
|
79 navController = [[UINavigationController alloc] initWithRootViewController:teamSettingsViewController]; |
|
80 UIBarButtonItem *teamSettingsDoneButton = [self doneButton]; |
|
81 teamSettingsViewController.navigationItem.backBarButtonItem = teamSettingsDoneButton; |
|
82 teamSettingsViewController.navigationItem.leftBarButtonItem = teamSettingsDoneButton; |
|
83 [tabBarNavigationControllers addObject:navController]; |
|
84 releaseAndNil(navController); |
|
85 } |
|
86 if (nil == weaponSettingsViewController) { |
|
87 weaponSettingsViewController = [[WeaponSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
|
88 weaponSettingsViewController.tabBarItem = [self tabBarItemWithTitle:[self.controllerNames objectAtIndex:2] imageName:@"bullet" selectedImageName:@"bullet_filled"]; |
|
89 navController = [[UINavigationController alloc] initWithRootViewController:weaponSettingsViewController]; |
|
90 UIBarButtonItem *weaponSettingsDoneButton = [self doneButton]; |
|
91 weaponSettingsViewController.navigationItem.backBarButtonItem = weaponSettingsDoneButton; |
|
92 weaponSettingsViewController.navigationItem.leftBarButtonItem = weaponSettingsDoneButton; |
|
93 [tabBarNavigationControllers addObject:navController]; |
|
94 releaseAndNil(navController); |
|
95 } |
|
96 if (nil == schemeSettingsViewController) { |
|
97 schemeSettingsViewController = [[SchemeSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
|
98 schemeSettingsViewController.tabBarItem = [self tabBarItemWithTitle:[self.controllerNames objectAtIndex:3] imageName:@"target" selectedImageName:@"target_filled"]; |
|
99 navController = [[UINavigationController alloc] initWithRootViewController:schemeSettingsViewController]; |
|
100 UIBarButtonItem *schemeSettingsDoneButton = [self doneButton]; |
|
101 schemeSettingsViewController.navigationItem.backBarButtonItem = schemeSettingsDoneButton; |
|
102 schemeSettingsViewController.navigationItem.leftBarButtonItem = schemeSettingsDoneButton; |
|
103 [tabBarNavigationControllers addObject:navController]; |
|
104 releaseAndNil(navController); |
|
105 } |
|
106 if (nil == supportViewController) { |
|
107 supportViewController = [[SupportViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
|
108 supportViewController.tabBarItem = [self tabBarItemWithTitle:[self.controllerNames objectAtIndex:4] imageName:@"heart" selectedImageName:@"heart_filled"]; |
|
109 navController = [[UINavigationController alloc] initWithRootViewController:supportViewController]; |
|
110 UIBarButtonItem *supportViewDoneButton = [self doneButton]; |
|
111 supportViewController.navigationItem.backBarButtonItem = supportViewDoneButton; |
|
112 supportViewController.navigationItem.leftBarButtonItem = supportViewDoneButton; |
|
113 [tabBarNavigationControllers addObject:navController]; |
|
114 releaseAndNil(navController); |
|
115 } |
|
116 |
|
117 self.tabController = [[UITabBarController alloc] init]; |
|
118 self.tabController.viewControllers = tabBarNavigationControllers; |
|
119 self.tabController.delegate = self; |
|
120 |
|
121 [self.view addSubview:self.tabController.view]; |
|
122 } |
67 } |
123 |
68 |
124 [super viewDidLoad]; |
69 [super viewDidLoad]; |
125 } |
70 } |
126 |
71 |
129 return [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone |
74 return [[[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemItemDone |
130 target:self |
75 target:self |
131 action:@selector(dismissSplitView)] autorelease]; |
76 action:@selector(dismissSplitView)] autorelease]; |
132 } |
77 } |
133 |
78 |
134 - (UITabBarItem *)tabBarItemWithTitle: (NSString *)title |
|
135 imageName: (NSString *)imageName |
|
136 selectedImageName: (NSString *)selectedImageName |
|
137 { |
|
138 return [[[UITabBarItem alloc] initWithTitle:title |
|
139 image:[UIImage imageNamed:imageName] |
|
140 selectedImage:[UIImage imageNamed:selectedImageName]] autorelease]; |
|
141 } |
|
142 |
|
143 -(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { |
|
144 [viewController viewWillAppear:NO]; |
|
145 } |
|
146 |
|
147 -(void) dismissSplitView { |
79 -(void) dismissSplitView { |
148 [[AudioManagerController mainManager] playBackSound]; |
80 [[AudioManagerController mainManager] playBackSound]; |
149 [[[HedgewarsAppDelegate sharedAppDelegate] mainViewController] dismissViewControllerAnimated:YES completion:nil]; |
81 [[[HedgewarsAppDelegate sharedAppDelegate] mainViewController] dismissViewControllerAnimated:YES completion:nil]; |
150 } |
|
151 |
|
152 -(void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { |
|
153 if (IS_IPAD() == NO) |
|
154 return; |
|
155 |
|
156 if (self.targetController != nil) { |
|
157 CGRect screenRect = [[UIScreen mainScreen] safeBounds]; |
|
158 self.view.frame = CGRectMake(0, 0, 320, screenRect.size.height); |
|
159 } |
|
160 } |
82 } |
161 |
83 |
162 #pragma mark - |
84 #pragma mark - |
163 #pragma mark Table view data source |
85 #pragma mark Table view data source |
164 -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { |
86 -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { |
208 return cell; |
130 return cell; |
209 } |
131 } |
210 |
132 |
211 #pragma mark - |
133 #pragma mark - |
212 #pragma mark Table view delegate |
134 #pragma mark Table view delegate |
213 -(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { |
135 -(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath |
|
136 { |
214 NSInteger newRow = [indexPath row]; |
137 NSInteger newRow = [indexPath row]; |
215 NSInteger oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1; |
138 NSInteger oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1; |
216 UIViewController *nextController = nil; |
139 UIViewController *nextController = nil; |
217 |
140 |
218 if (newRow != oldRow) { |
141 if (newRow != oldRow) |
|
142 { |
219 [tableView deselectRowAtIndexPath:lastIndexPath animated:YES]; |
143 [tableView deselectRowAtIndexPath:lastIndexPath animated:YES]; |
220 [targetController.navigationController popToRootViewControllerAnimated:NO]; |
144 [targetController.navigationController popToRootViewControllerAnimated:NO]; |
221 |
145 |
222 switch (newRow) { |
146 switch (newRow) |
|
147 { |
223 case 0: |
148 case 0: |
224 if (nil == generalSettingsViewController) |
149 nextController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];; |
225 generalSettingsViewController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
|
226 nextController = generalSettingsViewController; |
|
227 break; |
150 break; |
228 case 1: |
151 case 1: |
229 if (nil == teamSettingsViewController) |
152 nextController = [[TeamSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
230 teamSettingsViewController = [[TeamSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
|
231 nextController = teamSettingsViewController; |
|
232 break; |
153 break; |
233 case 2: |
154 case 2: |
234 if (nil == weaponSettingsViewController) |
155 nextController = [[WeaponSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
235 weaponSettingsViewController = [[WeaponSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
|
236 nextController = weaponSettingsViewController; |
|
237 break; |
156 break; |
238 case 3: |
157 case 3: |
239 if (nil == schemeSettingsViewController) |
158 nextController = [[SchemeSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
240 schemeSettingsViewController = [[SchemeSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
|
241 nextController = schemeSettingsViewController; |
|
242 break; |
159 break; |
243 case 4: |
160 case 4: |
244 if (nil == supportViewController) |
161 nextController = [[SupportViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
245 supportViewController = [[SupportViewController alloc] initWithStyle:UITableViewStyleGrouped]; |
|
246 nextController = supportViewController; |
|
247 break; |
162 break; |
248 } |
163 } |
249 |
164 |
250 self.lastIndexPath = indexPath; |
165 self.lastIndexPath = indexPath; |
251 [tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone]; |
166 [tableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone]; |
252 |
167 |
253 nextController.navigationItem.hidesBackButton = YES; |
168 nextController.navigationItem.hidesBackButton = YES; |
254 [nextController viewWillAppear:NO]; |
169 [nextController viewWillAppear:NO]; |
255 [targetController.navigationController pushViewController:nextController animated:NO]; |
170 [targetController.navigationController pushViewController:nextController animated:NO]; |
|
171 [nextController release]; |
|
172 |
256 [[AudioManagerController mainManager] playClickSound]; |
173 [[AudioManagerController mainManager] playClickSound]; |
257 } |
174 } |
258 } |
175 } |
259 |
176 |
260 |
177 |
261 #pragma mark - |
178 #pragma mark - |
262 #pragma mark Memory management |
179 #pragma mark Memory management |
263 -(void) didReceiveMemoryWarning { |
180 -(void) didReceiveMemoryWarning |
264 if (generalSettingsViewController.view.superview == nil) |
181 { |
265 generalSettingsViewController = nil; |
|
266 if (teamSettingsViewController.view.superview == nil) |
|
267 teamSettingsViewController = nil; |
|
268 if (weaponSettingsViewController.view.superview == nil) |
|
269 weaponSettingsViewController = nil; |
|
270 if (schemeSettingsViewController.view.superview == nil) |
|
271 schemeSettingsViewController = nil; |
|
272 if (supportViewController.view.superview == nil) |
|
273 supportViewController = nil; |
|
274 if (tabController.view.superview == nil) |
|
275 tabController = nil; |
|
276 MSG_MEMCLEAN(); |
182 MSG_MEMCLEAN(); |
277 [super didReceiveMemoryWarning]; |
183 [super didReceiveMemoryWarning]; |
278 } |
184 } |
279 |
185 |
280 -(void) viewDidUnload { |
186 -(void) viewDidUnload |
|
187 { |
281 self.controllerNames = nil; |
188 self.controllerNames = nil; |
282 self.lastIndexPath = nil; |
189 self.lastIndexPath = nil; |
283 self.targetController = nil; |
190 self.targetController = nil; |
284 self.tabController = nil; |
|
285 generalSettingsViewController = nil; |
|
286 teamSettingsViewController = nil; |
|
287 weaponSettingsViewController = nil; |
|
288 schemeSettingsViewController = nil; |
|
289 supportViewController = nil; |
|
290 MSG_DIDUNLOAD(); |
191 MSG_DIDUNLOAD(); |
291 [super viewDidUnload]; |
192 [super viewDidUnload]; |
292 } |
193 } |
293 |
194 |
294 -(void) dealloc { |
195 -(void) dealloc |
|
196 { |
295 releaseAndNil(targetController); |
197 releaseAndNil(targetController); |
296 releaseAndNil(controllerNames); |
198 releaseAndNil(controllerNames); |
297 releaseAndNil(lastIndexPath); |
199 releaseAndNil(lastIndexPath); |
298 releaseAndNil(tabController); |
|
299 releaseAndNil(generalSettingsViewController); |
|
300 releaseAndNil(teamSettingsViewController); |
|
301 releaseAndNil(weaponSettingsViewController); |
|
302 releaseAndNil(schemeSettingsViewController); |
|
303 releaseAndNil(supportViewController); |
|
304 [super dealloc]; |
200 [super dealloc]; |
305 } |
201 } |
306 |
202 |
307 |
|
308 -(void) viewWillDisappear:(BOOL)animated { |
|
309 // this will send -viewWillDisappear: only the active view |
|
310 [self.tabController viewWillDisappear:animated]; |
|
311 // let's send that to every page, even though only GeneralSettingsViewController needs it |
|
312 [generalSettingsViewController viewWillDisappear:animated]; |
|
313 [teamSettingsViewController viewWillDisappear:animated]; |
|
314 [weaponSettingsViewController viewWillDisappear:animated]; |
|
315 [schemeSettingsViewController viewWillDisappear:animated]; |
|
316 [supportViewController viewWillDisappear:animated]; |
|
317 [super viewWillDisappear:animated]; |
|
318 } |
|
319 |
|
320 @end |
203 @end |
321 |
204 |