diff -r 76fd61a88c1e -r e68b3e392091 project_files/HedgewarsMobile/Classes/SettingsBaseViewController.m --- a/project_files/HedgewarsMobile/Classes/SettingsBaseViewController.m Sat Oct 17 20:07:10 2015 +0200 +++ b/project_files/HedgewarsMobile/Classes/SettingsBaseViewController.m Mon Oct 19 03:39:47 2015 +0200 @@ -26,7 +26,7 @@ @implementation SettingsBaseViewController -@synthesize tabController, targetController, controllerNames, lastIndexPath; +@synthesize targetController, controllerNames, lastIndexPath; -(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation { return rotationManager(interfaceOrientation); @@ -45,10 +45,13 @@ self.controllerNames = array; [array release]; - if (IS_IPAD()) { + if (IS_IPAD()) + { // this class gets loaded twice, we tell the difference by looking at targetController - if (self.targetController != nil) { + if (self.targetController != nil) + { UITableView *tableView = [[UITableView alloc] initWithFrame:self.view.frame style:UITableViewStylePlain]; + tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; tableView.delegate = self; tableView.dataSource = self; [tableView reloadData]; @@ -57,68 +60,10 @@ [tableView release]; self.navigationItem.leftBarButtonItem = [self doneButton]; } - } else { - // this class just loads all controllers and set up tabbar and navigation controllers - NSMutableArray *tabBarNavigationControllers = [[NSMutableArray alloc] initWithCapacity:5]; - UINavigationController *navController = nil; - - if (nil == generalSettingsViewController) { - generalSettingsViewController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; - generalSettingsViewController.tabBarItem = [self tabBarItemWithTitle:[self.controllerNames objectAtIndex:0] imageName:@"flower" selectedImageName:@"flower_filled"]; - navController = [[UINavigationController alloc] initWithRootViewController:generalSettingsViewController]; - UIBarButtonItem *generalSettingsDoneButton = [self doneButton]; - generalSettingsViewController.navigationItem.backBarButtonItem = generalSettingsDoneButton; - generalSettingsViewController.navigationItem.leftBarButtonItem = generalSettingsDoneButton; - [generalSettingsViewController release]; - [tabBarNavigationControllers addObject:navController]; - releaseAndNil(navController); - } - if (nil == teamSettingsViewController) { - teamSettingsViewController = [[TeamSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; - teamSettingsViewController.tabBarItem = [self tabBarItemWithTitle:[self.controllerNames objectAtIndex:1] imageName:@"teams" selectedImageName:@"teams_filled"]; - navController = [[UINavigationController alloc] initWithRootViewController:teamSettingsViewController]; - UIBarButtonItem *teamSettingsDoneButton = [self doneButton]; - teamSettingsViewController.navigationItem.backBarButtonItem = teamSettingsDoneButton; - teamSettingsViewController.navigationItem.leftBarButtonItem = teamSettingsDoneButton; - [tabBarNavigationControllers addObject:navController]; - releaseAndNil(navController); - } - if (nil == weaponSettingsViewController) { - weaponSettingsViewController = [[WeaponSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; - weaponSettingsViewController.tabBarItem = [self tabBarItemWithTitle:[self.controllerNames objectAtIndex:2] imageName:@"bullet" selectedImageName:@"bullet_filled"]; - navController = [[UINavigationController alloc] initWithRootViewController:weaponSettingsViewController]; - UIBarButtonItem *weaponSettingsDoneButton = [self doneButton]; - weaponSettingsViewController.navigationItem.backBarButtonItem = weaponSettingsDoneButton; - weaponSettingsViewController.navigationItem.leftBarButtonItem = weaponSettingsDoneButton; - [tabBarNavigationControllers addObject:navController]; - releaseAndNil(navController); - } - if (nil == schemeSettingsViewController) { - schemeSettingsViewController = [[SchemeSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; - schemeSettingsViewController.tabBarItem = [self tabBarItemWithTitle:[self.controllerNames objectAtIndex:3] imageName:@"target" selectedImageName:@"target_filled"]; - navController = [[UINavigationController alloc] initWithRootViewController:schemeSettingsViewController]; - UIBarButtonItem *schemeSettingsDoneButton = [self doneButton]; - schemeSettingsViewController.navigationItem.backBarButtonItem = schemeSettingsDoneButton; - schemeSettingsViewController.navigationItem.leftBarButtonItem = schemeSettingsDoneButton; - [tabBarNavigationControllers addObject:navController]; - releaseAndNil(navController); - } - if (nil == supportViewController) { - supportViewController = [[SupportViewController alloc] initWithStyle:UITableViewStyleGrouped]; - supportViewController.tabBarItem = [self tabBarItemWithTitle:[self.controllerNames objectAtIndex:4] imageName:@"heart" selectedImageName:@"heart_filled"]; - navController = [[UINavigationController alloc] initWithRootViewController:supportViewController]; - UIBarButtonItem *supportViewDoneButton = [self doneButton]; - supportViewController.navigationItem.backBarButtonItem = supportViewDoneButton; - supportViewController.navigationItem.leftBarButtonItem = supportViewDoneButton; - [tabBarNavigationControllers addObject:navController]; - releaseAndNil(navController); - } - - self.tabController = [[UITabBarController alloc] init]; - self.tabController.viewControllers = tabBarNavigationControllers; - self.tabController.delegate = self; - - [self.view addSubview:self.tabController.view]; + } + else + { + //iPhone part moved to MainMenuViewController } [super viewDidLoad]; @@ -131,34 +76,11 @@ action:@selector(dismissSplitView)] autorelease]; } -- (UITabBarItem *)tabBarItemWithTitle: (NSString *)title - imageName: (NSString *)imageName - selectedImageName: (NSString *)selectedImageName -{ - return [[[UITabBarItem alloc] initWithTitle:title - image:[UIImage imageNamed:imageName] - selectedImage:[UIImage imageNamed:selectedImageName]] autorelease]; -} - --(void) tabBarController:(UITabBarController *)tabBarController didSelectViewController:(UIViewController *)viewController { - [viewController viewWillAppear:NO]; -} - -(void) dismissSplitView { [[AudioManagerController mainManager] playBackSound]; [[[HedgewarsAppDelegate sharedAppDelegate] mainViewController] dismissViewControllerAnimated:YES completion:nil]; } --(void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - if (IS_IPAD() == NO) - return; - - if (self.targetController != nil) { - CGRect screenRect = [[UIScreen mainScreen] safeBounds]; - self.view.frame = CGRectMake(0, 0, 320, screenRect.size.height); - } -} - #pragma mark - #pragma mark Table view data source -(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView { @@ -210,40 +132,33 @@ #pragma mark - #pragma mark Table view delegate --(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath +{ NSInteger newRow = [indexPath row]; NSInteger oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1; UIViewController *nextController = nil; - if (newRow != oldRow) { + if (newRow != oldRow) + { [tableView deselectRowAtIndexPath:lastIndexPath animated:YES]; [targetController.navigationController popToRootViewControllerAnimated:NO]; - switch (newRow) { + switch (newRow) + { case 0: - if (nil == generalSettingsViewController) - generalSettingsViewController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; - nextController = generalSettingsViewController; + nextController = [[GeneralSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped];; break; case 1: - if (nil == teamSettingsViewController) - teamSettingsViewController = [[TeamSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; - nextController = teamSettingsViewController; + nextController = [[TeamSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; break; case 2: - if (nil == weaponSettingsViewController) - weaponSettingsViewController = [[WeaponSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; - nextController = weaponSettingsViewController; + nextController = [[WeaponSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; break; case 3: - if (nil == schemeSettingsViewController) - schemeSettingsViewController = [[SchemeSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; - nextController = schemeSettingsViewController; + nextController = [[SchemeSettingsViewController alloc] initWithStyle:UITableViewStyleGrouped]; break; case 4: - if (nil == supportViewController) - supportViewController = [[SupportViewController alloc] initWithStyle:UITableViewStyleGrouped]; - nextController = supportViewController; + nextController = [[SupportViewController alloc] initWithStyle:UITableViewStyleGrouped]; break; } @@ -253,6 +168,8 @@ nextController.navigationItem.hidesBackButton = YES; [nextController viewWillAppear:NO]; [targetController.navigationController pushViewController:nextController animated:NO]; + [nextController release]; + [[AudioManagerController mainManager] playClickSound]; } } @@ -260,62 +177,28 @@ #pragma mark - #pragma mark Memory management --(void) didReceiveMemoryWarning { - 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; - if (supportViewController.view.superview == nil) - supportViewController = nil; - if (tabController.view.superview == nil) - tabController = nil; +-(void) didReceiveMemoryWarning +{ MSG_MEMCLEAN(); [super didReceiveMemoryWarning]; } --(void) viewDidUnload { +-(void) viewDidUnload +{ self.controllerNames = nil; self.lastIndexPath = nil; self.targetController = nil; - self.tabController = nil; - generalSettingsViewController = nil; - teamSettingsViewController = nil; - weaponSettingsViewController = nil; - schemeSettingsViewController = nil; - supportViewController = nil; MSG_DIDUNLOAD(); [super viewDidUnload]; } --(void) dealloc { +-(void) dealloc +{ releaseAndNil(targetController); releaseAndNil(controllerNames); releaseAndNil(lastIndexPath); - releaseAndNil(tabController); - releaseAndNil(generalSettingsViewController); - releaseAndNil(teamSettingsViewController); - releaseAndNil(weaponSettingsViewController); - releaseAndNil(schemeSettingsViewController); - releaseAndNil(supportViewController); [super dealloc]; } - --(void) viewWillDisappear:(BOOL)animated { - // this will send -viewWillDisappear: only the active view - [self.tabController viewWillDisappear:animated]; - // let's send that to every page, even though only GeneralSettingsViewController needs it - [generalSettingsViewController viewWillDisappear:animated]; - [teamSettingsViewController viewWillDisappear:animated]; - [weaponSettingsViewController viewWillDisappear:animated]; - [schemeSettingsViewController viewWillDisappear:animated]; - [supportViewController viewWillDisappear:animated]; - [super viewWillDisappear:animated]; -} - @end