# HG changeset patch # User koda # Date 1329041126 -3600 # Node ID 4f728ccdd06be51cb2fbb85c2c6425db81b18b15 # Parent 5532d5f6285c7bf29515d027acc9ff628a8399c4 fixed a little event propagation problem, added rotation support to the scheme setting page diff -r 5532d5f6285c -r 4f728ccdd06b project_files/HedgewarsMobile/Classes/SettingsBaseViewController.m --- a/project_files/HedgewarsMobile/Classes/SettingsBaseViewController.m Sun Feb 12 10:08:58 2012 +0100 +++ b/project_files/HedgewarsMobile/Classes/SettingsBaseViewController.m Sun Feb 12 11:05:26 2012 +0100 @@ -139,6 +139,16 @@ [[[HedgewarsAppDelegate sharedAppDelegate] mainViewController] dismissModalViewControllerAnimated:YES]; } +-(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 { diff -r 5532d5f6285c -r 4f728ccdd06b project_files/HedgewarsMobile/Classes/SettingsContainerViewController.m --- a/project_files/HedgewarsMobile/Classes/SettingsContainerViewController.m Sun Feb 12 10:08:58 2012 +0100 +++ b/project_files/HedgewarsMobile/Classes/SettingsContainerViewController.m Sun Feb 12 11:05:26 2012 +0100 @@ -118,21 +118,28 @@ -(void) viewDidAppear:(BOOL)animated { [self.splitViewRootController.detailViewController viewDidAppear:animated]; [self.baseController viewDidAppear:animated]; - [super viewDidLoad]; + [super viewDidAppear:animated]; } -(void) viewDidDisappear:(BOOL)animated { [self.splitViewRootController.detailViewController viewDidDisappear:animated]; [self.baseController viewDidDisappear:animated]; - [super viewDidUnload]; + [super viewDidDisappear:animated]; +} + +-(void) willRotateToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + [self.splitViewRootController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [self.baseController willRotateToInterfaceOrientation:toInterfaceOrientation duration:duration]; } -(void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { - if (IS_IPAD() == NO) - return; + [self.splitViewRootController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; + [self.baseController willAnimateRotationToInterfaceOrientation:toInterfaceOrientation duration:duration]; +} - CGRect screenRect = [[UIScreen mainScreen] safeBounds]; - self.splitViewRootController.masterViewController.view.frame = CGRectMake(0, 0, 320, screenRect.size.height); +-(void) didRotateFromInterfaceOrientation:(UIInterfaceOrientation)fromInterfaceOrientation { + [self.splitViewRootController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; + [self.baseController didRotateFromInterfaceOrientation:fromInterfaceOrientation]; } @end diff -r 5532d5f6285c -r 4f728ccdd06b project_files/HedgewarsMobile/Classes/SingleSchemeViewController.m --- a/project_files/HedgewarsMobile/Classes/SingleSchemeViewController.m Sun Feb 12 10:08:58 2012 +0100 +++ b/project_files/HedgewarsMobile/Classes/SingleSchemeViewController.m Sun Feb 12 11:05:26 2012 +0100 @@ -87,6 +87,13 @@ [schemeFile release]; } +// force a redraw of the game mod section to reposition the slider +-(void) willAnimateRotationToInterfaceOrientation:(UIInterfaceOrientation)toInterfaceOrientation duration:(NSTimeInterval)duration { + if (IS_IPAD() == NO) + return; + [self.tableView reloadSections:[NSIndexSet indexSetWithIndex:1] withRowAnimation:UITableViewRowAnimationFade]; +} + #pragma mark - #pragma mark editableCellView delegate // set the new value @@ -166,11 +173,7 @@ cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleValue1 reuseIdentifier:CellIdentifier1] autorelease]; - int offset = 0; - if (IS_IPAD()) - offset = 50; - - UISlider *slider = [[UISlider alloc] initWithFrame:CGRectMake(offset+260, 12, offset+150, 23)]; + UISlider *slider = [[UISlider alloc] init]; [slider addTarget:self action:@selector(sliderChanged:) forControlEvents:UIControlEventValueChanged]; [cell.contentView addSubview:slider]; [slider release]; @@ -204,6 +207,20 @@ cellSlider.maximumValue = [[detail objectForKey:@"max"] floatValue]; cellSlider.minimumValue = [[detail objectForKey:@"min"] floatValue]; cellSlider.value = [[[self.schemeDictionary objectForKey:@"basic"] objectAtIndex:row] floatValue]; + // redraw the slider here + NSInteger hOffset = 260; + NSInteger vOffset = 12; + NSInteger sliderLength = 150; + if (IS_IPAD()) { + hOffset = 310; + sliderLength = 230; + if (IS_ON_PORTRAIT()) { + hOffset = 50; + vOffset = 40; + sliderLength = 285; + } + } + cellSlider.frame = CGRectMake(hOffset, vOffset, sliderLength, 23); NSString *prestring = nil; checkValueString(prestring,cellLabel.text,cellSlider); @@ -321,11 +338,13 @@ return sectionTitle; } --(CGFloat) tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - if ([indexPath section] == 2) +-(CGFloat) tableView:(UITableView *)aTableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + if ([indexPath section] == 0) + return aTableView.rowHeight; + else if ([indexPath section] == 1) + return IS_ON_PORTRAIT() ? 72 : aTableView.rowHeight; + else return 56; - else - return self.tableView.rowHeight; } #pragma mark -