#import "AccountListViewController.h" #import "AFNetworking.h" #import "utils.h" #import "UIImageView+AFNetworking.h" @interface ATableViewCell : UITableViewCell @end @implementation ATableViewCell @end @interface AccountListViewController() @property(nonatomic, strong) NSMutableArray *accountList; @end @implementation AccountListViewController - (void)viewDidLoad { [super viewDidLoad]; if (self.accountList == nil) { self.accountList = [NSMutableArray array]; } else { [self.accountList removeAllObjects]; } // List accounts NSString *listPath = [NSString stringWithFormat:@"%s/accounts", getenv("POJAV_HOME")]; NSFileManager *fm = [NSFileManager defaultManager]; NSArray *files = [fm contentsOfDirectoryAtPath:listPath error:nil]; for(NSString *file in files) { NSString *path = [listPath stringByAppendingPathComponent:file]; BOOL isDir = NO; [fm fileExistsAtPath:path isDirectory:(&isDir)]; if(!isDir && [file hasSuffix:@".json"]) { [self.accountList addObject:parseJSONFromFile(path)]; } } [self.tableView setSeparatorStyle:UITableViewCellSeparatorStyleSingleLine]; } - (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.accountList.count; } - (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell"]; if (cell == nil) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:@"cell"]; } NSDictionary *selected = self.accountList[indexPath.row]; cell.textLabel.text = selected[@"username"]; if ([selected[@"username"] hasPrefix:@"Demo."]) { cell.textLabel.text = [selected[@"username"] substringFromIndex:5]; cell.detailTextLabel.text = NSLocalizedString(@"login.option.demo", nil); } else if (selected[@"xboxGamertag"] == nil) { cell.detailTextLabel.text = NSLocalizedString(@"login.option.local", nil); } else { // Display the Xbox gamertag for online accounts cell.detailTextLabel.text = selected[@"xboxGamertag"]; } cell.imageView.contentMode = UIViewContentModeCenter; [cell.imageView setImageWithURL:[NSURL URLWithString:[selected[@"profilePicURL"] stringByReplacingOccurrencesOfString:@"\\/" withString:@"/"]] placeholderImage:[UIImage imageNamed:@"default_account_pfp"]]; return cell; } - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [self dismissViewControllerAnimated:YES completion:nil]; self.whenItemSelected(self.accountList[indexPath.row][@"username"]); } - (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { if (editingStyle == UITableViewCellEditingStyleDelete) { // TODO: invalidate token NSString *str = [self.accountList objectAtIndex:indexPath.row][@"username"]; NSFileManager *fm = [NSFileManager defaultManager]; NSString *path = [NSString stringWithFormat:@"%s/accounts/%@.json", getenv("POJAV_HOME"), str]; if (self.whenDelete != nil) { self.whenDelete(path); } [fm removeItemAtPath:path error:nil]; [self.accountList removeObjectAtIndex:indexPath.row]; [tableView deleteRowsAtIndexPaths:@[indexPath] withRowAnimation:UITableViewRowAnimationFade]; } } @end