diff -r 443cce9e060f -r 485cfecadc9a project_files/HedgewarsMobile/Classes/TeamConfigViewController.m --- a/project_files/HedgewarsMobile/Classes/TeamConfigViewController.m Sun Oct 09 20:03:04 2011 -0400 +++ b/project_files/HedgewarsMobile/Classes/TeamConfigViewController.m Mon Oct 10 02:50:01 2011 +0200 @@ -25,41 +25,51 @@ @implementation TeamConfigViewController -@synthesize listOfTeams, listOfSelectedTeams, cachedContentsOfDir; +@synthesize tableView, selectedTeamsCount, allTeamsCount, listOfAllTeams, listOfSelectedTeams, cachedContentsOfDir; + +-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { + return rotationManager(interfaceOrientation); +} #pragma mark - #pragma mark View lifecycle -(void) viewDidLoad { - [super viewDidLoad]; - +/* CGSize screenSize = [[UIScreen mainScreen] bounds].size; self.view.frame = CGRectMake(0, 0, screenSize.height, screenSize.width - 44); - +*/ + UITableView *aTableView = [[UITableView alloc] initWithFrame:CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height) + style:UITableViewStyleGrouped]; + aTableView.delegate = self; + aTableView.dataSource = self; if (IS_IPAD()) { - [self.tableView setBackgroundColorForAnyTable:[UIColor darkBlueColorTransparent]]; - self.tableView.layer.borderColor = [[UIColor darkYellowColor] CGColor]; - self.tableView.layer.borderWidth = 2.7f; - self.tableView.layer.cornerRadius = 8; - self.tableView.contentInset = UIEdgeInsetsMake(10, 0, 10, 0); + [aTableView setBackgroundColorForAnyTable:[UIColor darkBlueColorTransparent]]; + aTableView.layer.borderColor = [[UIColor darkYellowColor] CGColor]; + aTableView.layer.borderWidth = 2.7f; + aTableView.layer.cornerRadius = 8; + aTableView.contentInset = UIEdgeInsetsMake(10, 0, 10, 0); } else { UIImage *backgroundImage = [[UIImage alloc] initWithContentsOfFile:@"background~iphone.png"]; UIImageView *background = [[UIImageView alloc] initWithImage:backgroundImage]; [backgroundImage release]; - [self.tableView setBackgroundView:background]; + [aTableView setBackgroundView:background]; [background release]; } - self.tableView.indicatorStyle = UIScrollViewIndicatorStyleWhite; - self.tableView.separatorColor = [UIColor whiteColor]; - self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone; + aTableView.indicatorStyle = UIScrollViewIndicatorStyleWhite; + aTableView.separatorColor = [UIColor whiteColor]; + aTableView.separatorStyle = UITableViewCellSeparatorStyleNone; + self.tableView = aTableView; + [aTableView release]; + + [self.view addSubview:self.tableView]; + [super viewDidLoad]; } -(void) viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - NSArray *contentsOfDir = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:TEAMS_DIRECTORY() error:NULL]; - // avoid overwriting selected teams when returning on this view if ([self.cachedContentsOfDir isEqualToArray:contentsOfDir] == NO) { + self.cachedContentsOfDir = contentsOfDir; NSArray *colors = [HWUtils teamColors]; NSMutableArray *array = [[NSMutableArray alloc] initWithCapacity:[contentsOfDir count]]; for (int i = 0; i < [contentsOfDir count]; i++) { @@ -70,25 +80,19 @@ [array addObject:dict]; [dict release]; } - self.listOfTeams = array; + self.listOfAllTeams = array; [array release]; NSMutableArray *emptyArray = [[NSMutableArray alloc] initWithObjects:nil]; self.listOfSelectedTeams = emptyArray; [emptyArray release]; - selectedTeamsCount = [self.listOfSelectedTeams count]; - allTeamsCount = [self.listOfTeams count]; + self.selectedTeamsCount = [self.listOfSelectedTeams count]; + self.allTeamsCount = [self.listOfAllTeams count]; + [self.tableView reloadData]; + } - NSArray *contents = [[NSArray alloc] initWithArray:contentsOfDir copyItems:YES]; - self.cachedContentsOfDir = contents; - [contents release]; - } - [self.tableView reloadData]; -} - --(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation { - return rotationManager(interfaceOrientation); + [super viewWillAppear:animated]; } -(NSInteger) filterNumberOfHogs:(NSInteger) hogs { @@ -140,7 +144,7 @@ } -(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - return (section == 0 ? selectedTeamsCount : allTeamsCount); + return (section == 0 ? self.selectedTeamsCount : self.allTeamsCount); } // Customize the appearance of table view cells. @@ -177,7 +181,7 @@ if (cell == nil) cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier1] autorelease]; - cell.textLabel.text = [[[self.listOfTeams objectAtIndex:[indexPath row]] objectForKey:@"team"] stringByDeletingPathExtension]; + cell.textLabel.text = [[[self.listOfAllTeams objectAtIndex:[indexPath row]] objectForKey:@"team"] stringByDeletingPathExtension]; cell.textLabel.backgroundColor = [UIColor clearColor]; NSString *teamPath = [NSString stringWithFormat:@"%@/%@.plist",TEAMS_DIRECTORY(),cell.textLabel.text]; @@ -222,13 +226,13 @@ return IS_IPAD() ? 40 : 20; } --(UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger) section { +-(UIView *)tableView:(UITableView *)aTableView viewForFooterInSection:(NSInteger) section { NSInteger height = IS_IPAD() ? 40 : 20; - UIView *footer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width, height)]; + UIView *footer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, aTableView.frame.size.width, height)]; footer.backgroundColor = [UIColor clearColor]; - UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, self.tableView.frame.size.width*80/100, height)]; - label.center = CGPointMake(self.tableView.frame.size.width/2, height/2); + UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, aTableView.frame.size.width*80/100, height)]; + label.center = CGPointMake(aTableView.frame.size.width/2, height/2); label.textAlignment = UITextAlignmentCenter; label.font = [UIFont italicSystemFontOfSize:12]; label.textColor = [UIColor whiteColor]; @@ -251,9 +255,9 @@ NSInteger row = [indexPath row]; NSInteger section = [indexPath section]; - if (section == 1 && [self.listOfTeams count] > row) { - [self.listOfSelectedTeams addObject:[self.listOfTeams objectAtIndex:row]]; - [self.listOfTeams removeObjectAtIndex:row]; + if (section == 1 && [self.listOfAllTeams count] > row) { + [self.listOfSelectedTeams addObject:[self.listOfAllTeams objectAtIndex:row]]; + [self.listOfAllTeams removeObjectAtIndex:row]; NSIndexPath *newIndexPath = [NSIndexPath indexPathForRow:selectedTeamsCount inSection:0]; allTeamsCount--; @@ -277,7 +281,7 @@ } } --(void) holdAction:(NSString *)content { +-(void) holdAction:(NSString *)content onTable:(UITableView *)aTableView { NSInteger row; for (row = 0; row < [self.listOfSelectedTeams count]; row++) { NSDictionary *dict = [self.listOfSelectedTeams objectAtIndex:row]; @@ -285,15 +289,15 @@ break; } - [self.listOfTeams addObject:[self.listOfSelectedTeams objectAtIndex:row]]; + [self.listOfAllTeams addObject:[self.listOfSelectedTeams objectAtIndex:row]]; [self.listOfSelectedTeams removeObjectAtIndex:row]; - [self.tableView beginUpdates]; - [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:row inSection:0]] withRowAnimation:UITableViewRowAnimationLeft]; - [self.tableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:allTeamsCount inSection:1]] withRowAnimation:UITableViewRowAnimationLeft]; - allTeamsCount++; - selectedTeamsCount--; - [self.tableView endUpdates]; + [aTableView beginUpdates]; + [aTableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:row inSection:0]] withRowAnimation:UITableViewRowAnimationLeft]; + [aTableView insertRowsAtIndexPaths:[NSArray arrayWithObject:[NSIndexPath indexPathForRow:allTeamsCount inSection:1]] withRowAnimation:UITableViewRowAnimationLeft]; + self.allTeamsCount++; + self.selectedTeamsCount--; + [aTableView endUpdates]; } #pragma mark - @@ -301,7 +305,8 @@ -(void) didReceiveMemoryWarning { if ([[HedgewarsAppDelegate sharedAppDelegate] isInGame]) { self.listOfSelectedTeams = nil; - self.listOfTeams = nil; + self.listOfAllTeams = nil; + self.tableView = nil; } self.cachedContentsOfDir = nil; MSG_MEMCLEAN(); @@ -309,7 +314,8 @@ } -(void) viewDidUnload { - self.listOfTeams = nil; + self.tableView = nil; + self.listOfAllTeams = nil; self.listOfSelectedTeams = nil; self.cachedContentsOfDir = nil; MSG_DIDUNLOAD(); @@ -318,7 +324,8 @@ -(void) dealloc { - releaseAndNil(listOfTeams); + releaseAndNil(tableView); + releaseAndNil(listOfAllTeams); releaseAndNil(listOfSelectedTeams); releaseAndNil(cachedContentsOfDir); [super dealloc];