project_files/HedgewarsMobile/Classes/TeamSettingsViewController.m
author nemo
Sun, 20 Jun 2010 22:35:10 -0400
changeset 3526 a1d2180fef42
parent 3514 59dbd31e9953
child 3546 ccf4854df294
permissions -rw-r--r--
Replace SHA1 with adler32. For simple purposes of checking to see if players are playing the same map, this should be quite adequate and runs 15 times faster.
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
     1
//
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
     2
//  TeamSettingsViewController.m
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
     3
//  HedgewarsMobile
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
     4
//
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
     5
//  Created by Vittorio on 02/04/10.
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
     6
//  Copyright 2010 __MyCompanyName__. All rights reserved.
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
     7
//
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
     8
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
     9
#import "TeamSettingsViewController.h"
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    10
#import "SingleTeamViewController.h"
3325
652a8ebdf667 moved around team creation
koda
parents: 3323
diff changeset
    11
#import "CommodityFunctions.h"
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    12
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    13
@implementation TeamSettingsViewController
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    14
@synthesize listOfTeams;
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    15
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    16
3335
2520ee7a5484 new manager for handling (future) rotations
koda
parents: 3330
diff changeset
    17
-(BOOL) shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation) interfaceOrientation {
2520ee7a5484 new manager for handling (future) rotations
koda
parents: 3330
diff changeset
    18
	return rotationManager(interfaceOrientation);
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    19
}
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    20
3335
2520ee7a5484 new manager for handling (future) rotations
koda
parents: 3330
diff changeset
    21
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    22
#pragma mark -
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    23
#pragma mark View lifecycle
3330
987ec27b6042 add support for modifying the name of the team
koda
parents: 3328
diff changeset
    24
// add an edit button
987ec27b6042 add support for modifying the name of the team
koda
parents: 3328
diff changeset
    25
-(void) viewDidLoad {
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    26
    [super viewDidLoad];
3308
b6dcae4b6d2c make the tables work also on iphone
koda
parents: 3305
diff changeset
    27
3479
972ae3ec178a initial support for game modifiers (schemes)
koda
parents: 3373
diff changeset
    28
    UIBarButtonItem *editButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Edit",@"from the team panel")
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    29
                                                                   style:UIBarButtonItemStyleBordered
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    30
                                                                  target:self
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    31
                                                                  action:@selector(toggleEdit:)];
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    32
    self.navigationItem.rightBarButtonItem = editButton;
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    33
    [editButton release];
3330
987ec27b6042 add support for modifying the name of the team
koda
parents: 3328
diff changeset
    34
}
987ec27b6042 add support for modifying the name of the team
koda
parents: 3328
diff changeset
    35
987ec27b6042 add support for modifying the name of the team
koda
parents: 3328
diff changeset
    36
// load the list of teams in the teams directory
987ec27b6042 add support for modifying the name of the team
koda
parents: 3328
diff changeset
    37
-(void) viewWillAppear:(BOOL)animated {
987ec27b6042 add support for modifying the name of the team
koda
parents: 3328
diff changeset
    38
    [super viewWillAppear:animated];
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    39
    
3330
987ec27b6042 add support for modifying the name of the team
koda
parents: 3328
diff changeset
    40
    NSArray *contentsOfDir = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:TEAMS_DIRECTORY() error:NULL];
3361
cfc6cd502f85 buttons for number of hogs in game config
koda
parents: 3352
diff changeset
    41
    NSMutableArray *array = [[NSMutableArray alloc] initWithArray:contentsOfDir copyItems:YES];
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    42
    self.listOfTeams = array;
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    43
    [array release];
3330
987ec27b6042 add support for modifying the name of the team
koda
parents: 3328
diff changeset
    44
    
987ec27b6042 add support for modifying the name of the team
koda
parents: 3328
diff changeset
    45
    [self.tableView reloadData];
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    46
}
3308
b6dcae4b6d2c make the tables work also on iphone
koda
parents: 3305
diff changeset
    47
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    48
// modifies the navigation bar to add the "Add" and "Done" buttons
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    49
-(void) toggleEdit:(id) sender {
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    50
    BOOL isEditing = self.tableView.editing;
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    51
    [self.tableView setEditing:!isEditing animated:YES];
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    52
    
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    53
    if (isEditing) {
3479
972ae3ec178a initial support for game modifiers (schemes)
koda
parents: 3373
diff changeset
    54
        [self.navigationItem.rightBarButtonItem setTitle:NSLocalizedString(@"Edit",@"from the team panel")];
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    55
        [self.navigationItem.rightBarButtonItem setStyle: UIBarButtonItemStyleBordered];
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    56
        self.navigationItem.leftBarButtonItem = self.navigationItem.backBarButtonItem;
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    57
    } else {
3479
972ae3ec178a initial support for game modifiers (schemes)
koda
parents: 3373
diff changeset
    58
        [self.navigationItem.rightBarButtonItem setTitle:NSLocalizedString(@"Done",@"from the team panel")];
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    59
        [self.navigationItem.rightBarButtonItem setStyle:UIBarButtonItemStyleDone];
3479
972ae3ec178a initial support for game modifiers (schemes)
koda
parents: 3373
diff changeset
    60
        UIBarButtonItem *addButton = [[UIBarButtonItem alloc] initWithTitle:NSLocalizedString(@"Add",@"from the team panel")
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    61
                                                                      style:UIBarButtonItemStyleBordered
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    62
                                                                     target:self
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    63
                                                                     action:@selector(addTeam:)];
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    64
        self.navigationItem.leftBarButtonItem = addButton;
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    65
        [addButton release];
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    66
    }
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    67
}
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    68
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    69
// add a team file with default values and updates the table
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    70
-(void) addTeam:(id) sender {
3325
652a8ebdf667 moved around team creation
koda
parents: 3323
diff changeset
    71
    NSString *fileName = [[NSString alloc] initWithFormat:@"Default Team %u.plist", [self.listOfTeams count]];
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    72
    
3325
652a8ebdf667 moved around team creation
koda
parents: 3323
diff changeset
    73
    createTeamNamed([fileName stringByDeletingPathExtension]);
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    74
    
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    75
    [self.listOfTeams addObject:fileName];
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    76
    [fileName release];
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    77
    
3352
ac5d14a35482 complete previews on the team settings
koda
parents: 3335
diff changeset
    78
    // order the array alphabetically, so teams will keep their position
ac5d14a35482 complete previews on the team settings
koda
parents: 3335
diff changeset
    79
    [self.listOfTeams sortUsingSelector:@selector(compare:)];
ac5d14a35482 complete previews on the team settings
koda
parents: 3335
diff changeset
    80
    
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    81
    [self.tableView reloadData];
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    82
}
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    83
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    84
#pragma mark -
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    85
#pragma mark Table view data source
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    86
-(NSInteger) numberOfSectionsInTableView:(UITableView *)tableView {
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    87
    return 1;
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    88
}
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    89
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    90
-(NSInteger) tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
3479
972ae3ec178a initial support for game modifiers (schemes)
koda
parents: 3373
diff changeset
    91
    return [self.listOfTeams count];
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    92
}
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    93
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    94
// Customize the appearance of table view cells.
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
    95
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    96
    static NSString *CellIdentifier = @"Cell";
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    97
    
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    98
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
    99
    if (cell == nil) {
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   100
        cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   101
    }
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   102
    
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   103
    NSUInteger row = [indexPath row]; 
3479
972ae3ec178a initial support for game modifiers (schemes)
koda
parents: 3373
diff changeset
   104
    NSString *rowString = [[self.listOfTeams objectAtIndex:row] stringByDeletingPathExtension]; 
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   105
    cell.textLabel.text = rowString; 
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   106
    cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator;
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   107
    
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   108
    return cell;
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   109
}
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   110
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
   111
// delete the row and the file
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
   112
-(void) tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath {
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
   113
    NSUInteger row = [indexPath row];
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
   114
    
3330
987ec27b6042 add support for modifying the name of the team
koda
parents: 3328
diff changeset
   115
    NSString *teamFile = [[NSString alloc] initWithFormat:@"%@/%@",TEAMS_DIRECTORY(),[self.listOfTeams objectAtIndex:row]];
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
   116
    [[NSFileManager defaultManager] removeItemAtPath:teamFile error:NULL];
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
   117
    [teamFile release];
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
   118
    
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
   119
    [self.listOfTeams removeObjectAtIndex:row];
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
   120
    [self.tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade];
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   121
}
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   122
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   123
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   124
#pragma mark -
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   125
#pragma mark Table view delegate
3330
987ec27b6042 add support for modifying the name of the team
koda
parents: 3328
diff changeset
   126
-(void) tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   127
    if (childController == nil) {
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   128
        childController = [[SingleTeamViewController alloc] initWithStyle:UITableViewStyleGrouped];
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   129
    }
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   130
    
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   131
    NSInteger row = [indexPath row];
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
   132
    NSString *selectedTeamFile = [listOfTeams objectAtIndex:row];
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   133
    
3330
987ec27b6042 add support for modifying the name of the team
koda
parents: 3328
diff changeset
   134
    // this must be set so childController can load the correct plist
3328
fe87c2242984 fix the save of the team and rearrange hat/name modification
koda
parents: 3325
diff changeset
   135
    childController.title = [selectedTeamFile stringByDeletingPathExtension];
3325
652a8ebdf667 moved around team creation
koda
parents: 3323
diff changeset
   136
    [childController.tableView setContentOffset:CGPointMake(0,0) animated:NO];
652a8ebdf667 moved around team creation
koda
parents: 3323
diff changeset
   137
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   138
    [self.navigationController pushViewController:childController animated:YES];
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   139
}
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   140
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   141
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   142
#pragma mark -
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   143
#pragma mark Memory management
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
   144
-(void) didReceiveMemoryWarning {
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   145
    // Releases the view if it doesn't have a superview.
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   146
    [super didReceiveMemoryWarning];
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   147
    // Relinquish ownership any cached data, images, etc that aren't in use.
3490
016b3172b645 a bunch of minor stuff
koda
parents: 3479
diff changeset
   148
    if (childController.view.superview == nil )
016b3172b645 a bunch of minor stuff
koda
parents: 3479
diff changeset
   149
        childController = nil;
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   150
}
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   151
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
   152
-(void) viewDidUnload {
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
   153
    self.listOfTeams = nil;
3330
987ec27b6042 add support for modifying the name of the team
koda
parents: 3328
diff changeset
   154
    childController = nil;
987ec27b6042 add support for modifying the name of the team
koda
parents: 3328
diff changeset
   155
    [super viewDidUnload];
3490
016b3172b645 a bunch of minor stuff
koda
parents: 3479
diff changeset
   156
    MSG_DIDUNLOAD();
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   157
}
3315
4e2813713358 usa a cached dictionary and write only when needed
koda
parents: 3308
diff changeset
   158
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
   159
-(void) dealloc {
3479
972ae3ec178a initial support for game modifiers (schemes)
koda
parents: 3373
diff changeset
   160
    [self.listOfTeams release];
3323
091cf214bdd5 implement an add/remove team in the ifrontend
koda
parents: 3315
diff changeset
   161
    [childController release];
3305
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   162
    [super dealloc];
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   163
}
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   164
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   165
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   166
@end
91074496d5c9 merged code from ipad and iphone frontends
koda
parents:
diff changeset
   167