// // ChangelistViewController.m // Perforce // // Created by Adam Czubernat on 13/05/14. // Copyright (c) 2014 Perforce Software, Inc. All rights reserved. // #import "ChangelistViewController.h" #import "P4Workspace.h" @interface ChangelistViewController () { NSNumber *changelist; NSString *path; NSMutableArray *items; __weak IBOutlet NSTableView *tableView; __weak IBOutlet NSProgressIndicator *tableIndicator; } - (void)reload; @end @implementation ChangelistViewController - (id)initWithChangelist:(NSNumber *)number { return [self initWithChangelist:number path:nil]; } - (id)initWithChangelist:(NSNumber *)number path:(NSString *)filepath { if (self = [self initWithNibName:NSStringFromClass([self class]) bundle:nil]) { changelist = number; path = filepath; } return self; } - (void)loadView { [super loadView]; [tableView setSortDescriptors:@[ [NSSortDescriptor sortDescriptorWithKey: @"depotFile.stringByDeletingLastPathComponent" ascending:YES] ]]; [self reload]; } #pragma mark - Private - (void)reload { items = nil; [tableView reloadData]; [tableIndicator startAnimation:nil]; if (path) { [[P4Workspace sharedInstance] listChangelist:changelist path:path response:^(P4Operation *operation, NSArray *response) { items = [response mutableCopy]; [tableView reloadData]; [tableIndicator stopAnimation:nil]; }]; } else { [[P4Workspace sharedInstance] listChangelist:changelist response:^(P4Operation *operation, NSArray *response) { NSDictionary *changelistDict = [response firstObject]; NSArray *files = [changelistDict objectForKey:@"files"]; items = [files mutableCopy]; [tableView reloadData]; [tableIndicator stopAnimation:nil]; }]; } } #pragma mark - NSTableView datasource - (NSInteger)numberOfRowsInTableView:(NSTableView *)tableView { return items.count; } - (NSView *)tableView:(NSTableView *)table viewForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)row { NSString *identifier = tableColumn.identifier; NSDictionary *item = [items objectAtIndex:row]; NSTableCellView *cell = [tableView makeViewWithIdentifier:identifier owner:self]; NSString *depotPath = [item objectForKey:@"depotFile"]; if ([identifier isEqualToString:@"filename"]) { cell.textField.stringValue = [depotPath lastPathComponent]; // cell.imageView.image = item.icon; } else if ([identifier isEqualToString:@"path"]) { cell.textField.stringValue = [depotPath stringByDeletingLastPathComponent]; } else if ([identifier isEqualToString:@"action"]) { cell.textField.stringValue = [item objectForKey:@"action"]; } return cell; } - (void)tableView:(NSTableView *)aTableView sortDescriptorsDidChange:(NSArray *)oldDescriptors { [items sortUsingDescriptors:[tableView sortDescriptors]]; [tableView reloadData]; } @end