project_files/HedgewarsMobile/Classes/FlagsViewController.m
author alfadur
Sun, 12 Apr 2020 00:26:37 +0300
changeset 15554 36687bc9d5c1
parent 13166 ba5c794adae3
permissions -rw-r--r--
send team colors on round end
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3829
81db3c85784b headers ftw, also right project file
koda
parents: 3697
diff changeset
     1
/*
81db3c85784b headers ftw, also right project file
koda
parents: 3697
diff changeset
     2
 * Hedgewars-iOS, a Hedgewars port for iOS devices
6700
e04da46ee43c the most important commit of the year
koda
parents: 6104
diff changeset
     3
 * Copyright (c) 2009-2012 Vittorio Giovara <vittorio.giovara@gmail.com>
3829
81db3c85784b headers ftw, also right project file
koda
parents: 3697
diff changeset
     4
 *
81db3c85784b headers ftw, also right project file
koda
parents: 3697
diff changeset
     5
 * This program is free software; you can redistribute it and/or modify
81db3c85784b headers ftw, also right project file
koda
parents: 3697
diff changeset
     6
 * it under the terms of the GNU General Public License as published by
81db3c85784b headers ftw, also right project file
koda
parents: 3697
diff changeset
     7
 * the Free Software Foundation; version 2 of the License
81db3c85784b headers ftw, also right project file
koda
parents: 3697
diff changeset
     8
 *
81db3c85784b headers ftw, also right project file
koda
parents: 3697
diff changeset
     9
 * This program is distributed in the hope that it will be useful,
81db3c85784b headers ftw, also right project file
koda
parents: 3697
diff changeset
    10
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
81db3c85784b headers ftw, also right project file
koda
parents: 3697
diff changeset
    11
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
81db3c85784b headers ftw, also right project file
koda
parents: 3697
diff changeset
    12
 * GNU General Public License for more details.
81db3c85784b headers ftw, also right project file
koda
parents: 3697
diff changeset
    13
 *
81db3c85784b headers ftw, also right project file
koda
parents: 3697
diff changeset
    14
 * You should have received a copy of the GNU General Public License
81db3c85784b headers ftw, also right project file
koda
parents: 3697
diff changeset
    15
 * along with this program; if not, write to the Free Software
10108
c68cf030eded update FSF address. note: two sdl include files (by Sam Lantinga) still have the old FSF address in their copyright - but I ain't gonna touch their copyright headers
sheepluva
parents: 8441
diff changeset
    16
 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA.
3829
81db3c85784b headers ftw, also right project file
koda
parents: 3697
diff changeset
    17
 */
81db3c85784b headers ftw, also right project file
koda
parents: 3697
diff changeset
    18
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    19
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    20
#import "FlagsViewController.h"
4478
05029b4d8490 code cleanup
koda
parents: 3971
diff changeset
    21
#import <QuartzCore/QuartzCore.h>
6078
8c0cc07731e5 headers cleanup, converted some function-only sources into proper class method files, more use of OOP power, removed some 'respondsToSelector' calls, moved defines into their own header, more use of objc categories
koda
parents: 5208
diff changeset
    22
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    23
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    24
@implementation FlagsViewController
3950
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    25
@synthesize teamDictionary, flagArray, communityArray, lastIndexPath;
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    26
12872
00215a7ec5f5 - BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents: 11148
diff changeset
    27
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    28
    return rotationManager(interfaceOrientation);
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    29
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    30
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    31
#pragma mark -
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    32
#pragma mark View lifecycle
12872
00215a7ec5f5 - BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents: 11148
diff changeset
    33
- (void)viewDidLoad {
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    34
    [super viewDidLoad];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    35
3950
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    36
    NSMutableArray *array_na = [[NSMutableArray alloc] init];
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    37
    NSMutableArray *array_cm = [[NSMutableArray alloc] init];
8441
a00b0fa0dbd7 some whitespaces from ios files
koda
parents: 6832
diff changeset
    38
3950
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    39
    for (NSString *name in [[NSFileManager defaultManager] contentsOfDirectoryAtPath:FLAGS_DIRECTORY() error:NULL]) {
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    40
        if ([name hasPrefix:@"cm_"]) {
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    41
            NSString *processed = [name substringFromIndex:3];
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    42
            [array_cm addObject:processed];
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    43
        } else
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    44
             [array_na addObject:name];
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    45
    }
8441
a00b0fa0dbd7 some whitespaces from ios files
koda
parents: 6832
diff changeset
    46
3950
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    47
    self.flagArray = array_na;
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    48
    self.communityArray = array_cm;
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3662
diff changeset
    49
3662
a44406f4369b polish polish polish polish (also: panning horizontal fix, panning momentum, settings page reworked yet again, memory leaks, crashes, segfaults)
koda
parents: 3547
diff changeset
    50
    self.title = NSLocalizedString(@"Set team flag",@"");
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    51
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    52
12872
00215a7ec5f5 - BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents: 11148
diff changeset
    53
- (void)viewWillAppear:(BOOL)animated {
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    54
    [super viewWillAppear:animated];
3950
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    55
    // reloadData needed because team might change
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    56
    [self.tableView reloadData];
3950
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    57
    //[self.tableView setContentOffset:CGPointMake(0,0) animated:NO];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    58
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    59
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    60
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    61
#pragma mark -
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    62
#pragma mark Table view data source
12872
00215a7ec5f5 - BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents: 11148
diff changeset
    63
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView {
3950
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    64
    return 2;
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    65
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    66
12872
00215a7ec5f5 - BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents: 11148
diff changeset
    67
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section {
3950
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    68
    if (section == 0)
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    69
        return [self.flagArray count];
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    70
    else
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    71
        return [self.communityArray count];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    72
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    73
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    74
// Customize the appearance of table view cells.
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    75
-(UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    76
    static NSString *CellIdentifier = @"Cell";
3950
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    77
    NSInteger row = [indexPath row];
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3662
diff changeset
    78
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    79
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    80
    if (cell == nil) {
12872
00215a7ec5f5 - BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents: 11148
diff changeset
    81
        cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    82
    }
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3662
diff changeset
    83
3950
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    84
    NSString *flagName = nil;
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    85
    NSArray *source = nil;
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    86
    if ([indexPath section] == 0) {
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    87
        source = self.flagArray;
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    88
        flagName = [source objectAtIndex:row];
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    89
    } else {
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    90
        source = self.communityArray;
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    91
        flagName = [NSString stringWithFormat:@"cm_%@",[source objectAtIndex:row]];
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    92
    }
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    93
    NSString *flagFile = [[NSString alloc] initWithFormat:@"%@/%@", FLAGS_DIRECTORY(), flagName];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    94
    UIImage *flagSprite = [[UIImage alloc] initWithContentsOfFile:flagFile];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
    95
    cell.imageView.image = flagSprite;
6104
117bdf4e7af9 create teams programmatically
koda
parents: 6078
diff changeset
    96
    cell.imageView.layer.borderWidth = 1;
117bdf4e7af9 create teams programmatically
koda
parents: 6078
diff changeset
    97
    cell.imageView.layer.borderColor = [[UIColor blackColor] CGColor];
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3662
diff changeset
    98
3950
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
    99
    cell.textLabel.text = [[source objectAtIndex:row] stringByDeletingPathExtension];
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   100
    if ([[flagName stringByDeletingPathExtension] isEqualToString:[self.teamDictionary objectForKey:@"flag"]]) {
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   101
        cell.accessoryType = UITableViewCellAccessoryCheckmark;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   102
        self.lastIndexPath = indexPath;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   103
    } else {
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   104
        cell.accessoryType = UITableViewCellAccessoryNone;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   105
    }
3697
d5b30d6373fc remove trailing spaces from end of line
koda
parents: 3662
diff changeset
   106
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   107
    return cell;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   108
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   109
13166
ba5c794adae3 - Some not-so-important pretty formatting
antonc27 <antonc27@mail.ru>
parents: 12872
diff changeset
   110
- (NSString *)tableView:(UITableView *)aTableView titleForHeaderInSection:(NSInteger)section {
3950
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   111
    NSString *sectionTitle = nil;
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   112
    switch (section) {
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   113
        case 0:
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   114
            sectionTitle = NSLocalizedString(@"Worldwide", @"");
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   115
            break;
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   116
        case 1:
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   117
            sectionTitle = NSLocalizedString(@"Community", @"");
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   118
            break;
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   119
        default:
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   120
            DLog(@"nope");
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   121
            break;
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   122
    }
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   123
    return sectionTitle;
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   124
}
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   125
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   126
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   127
#pragma mark -
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   128
#pragma mark Table view delegate
12872
00215a7ec5f5 - BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents: 11148
diff changeset
   129
- (void)tableView:(UITableView *)aTableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
11148
064a53861759 - Refactoring in order to remove some warning related to using of int instead of NSInteger
antonc27 <antonc27@mail.ru>
parents: 10108
diff changeset
   130
    NSInteger newRow = [indexPath row];
064a53861759 - Refactoring in order to remove some warning related to using of int instead of NSInteger
antonc27 <antonc27@mail.ru>
parents: 10108
diff changeset
   131
    NSInteger oldRow = (lastIndexPath != nil) ? [lastIndexPath row] : -1;
064a53861759 - Refactoring in order to remove some warning related to using of int instead of NSInteger
antonc27 <antonc27@mail.ru>
parents: 10108
diff changeset
   132
    NSInteger newSection = [indexPath section];
064a53861759 - Refactoring in order to remove some warning related to using of int instead of NSInteger
antonc27 <antonc27@mail.ru>
parents: 10108
diff changeset
   133
    NSInteger oldSection = (lastIndexPath != nil) ? [lastIndexPath section] : -1;
8441
a00b0fa0dbd7 some whitespaces from ios files
koda
parents: 6832
diff changeset
   134
3950
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   135
    if (newRow != oldRow || newSection != oldSection) {
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   136
        NSString *flag = nil;
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   137
        if ([indexPath section] == 0)
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   138
            flag = [self.flagArray objectAtIndex:newRow];
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   139
        else
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   140
            flag = [NSString stringWithFormat:@"cm_%@",[self.communityArray objectAtIndex:newRow]];
8441
a00b0fa0dbd7 some whitespaces from ios files
koda
parents: 6832
diff changeset
   141
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   142
        // if the two selected rows differ update data on the hog dictionary and reload table content
3950
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   143
        [self.teamDictionary setValue:[flag stringByDeletingPathExtension] forKey:@"flag"];
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   144
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   145
        // tell our boss to write this new stuff on disk
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   146
        [[NSNotificationCenter defaultCenter] postNotificationName:@"setWriteNeedTeams" object:nil];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   147
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   148
        UITableViewCell *newCell = [aTableView cellForRowAtIndexPath:indexPath];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   149
        newCell.accessoryType = UITableViewCellAccessoryCheckmark;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   150
        UITableViewCell *oldCell = [aTableView cellForRowAtIndexPath:lastIndexPath];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   151
        oldCell.accessoryType = UITableViewCellAccessoryNone;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   152
        self.lastIndexPath = indexPath;
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   153
        [aTableView selectRowAtIndexPath:indexPath animated:YES scrollPosition:UITableViewScrollPositionNone];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   154
    }
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   155
    [aTableView deselectRowAtIndexPath:indexPath animated:YES];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   156
    [self.navigationController popViewControllerAnimated:YES];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   157
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   158
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   159
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   160
#pragma mark -
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   161
#pragma mark Memory management
12872
00215a7ec5f5 - BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents: 11148
diff changeset
   162
00215a7ec5f5 - BIG CHANGE: Convert iOS project to use ARC
antonc27 <antonc27@mail.ru>
parents: 11148
diff changeset
   163
- (void)didReceiveMemoryWarning {
3950
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   164
    self.lastIndexPath = nil;
296cbdd85e50 split the flag tableview in worldwide and community
koda
parents: 3829
diff changeset
   165
    MSG_MEMCLEAN();
3547
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   166
    [super didReceiveMemoryWarning];
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   167
}
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   168
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   169
@end
02875b1145b7 i <3 mercurial
koda
parents: 3546
diff changeset
   170