X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/80e2389990082500d76eb566d4946be3e786c3ef..d8f41ccd20de16f8ebe2ccc84d47bf1cb2b26bbb:/Keychain/DeviceTableViewController.m diff --git a/Keychain/DeviceTableViewController.m b/Keychain/DeviceTableViewController.m new file mode 100644 index 00000000..bca1ac09 --- /dev/null +++ b/Keychain/DeviceTableViewController.m @@ -0,0 +1,180 @@ +// +// DeviceTableViewController.m +// Security +// +// + + +#import "DeviceTableViewController.h" +#import "DeviceItemCell.h" + +static NSString *redCircle = @"🔴"; +static NSString *blueCircle = @"🔵"; + +enum +{ + KCA_ITEM_STATUS_ID = 300, + KCA_ITEM_NAME_ID = 301, + KCA_ITEM_ACCT_ID = 302, +}; + +@interface DeviceTableViewController () + +@end + +@implementation DeviceTableViewController + +- (id)initWithStyle:(UITableViewStyle)style +{ + NSLog(@"DeviceTableViewController: initWithStyle"); + if (self = [super initWithStyle:style]) + { + // Custom initialization + // [self.tableView registerClass:(Class)[KeychainItemCell class] forCellReuseIdentifier:(NSString *)@"kciCell"]; + + _kcItemStatuses = [[NSArray alloc] initWithObjects:@"",redCircle, blueCircle,@"",@"",blueCircle,nil]; + _kcItemNames = [[NSArray alloc] initWithObjects:@"Facebook",@"iCloud", @"WSJ",@"Twitter",@"NYTimes",@"Wells Fargo", nil]; + // self.navigationItem.rightBarButtonItem = self.editButtonItem; + } + return self; +} + +#if 0 +- (void)viewDidLoad +{ + NSLog(@"DeviceTableViewController: viewDidLoad"); + [super viewDidLoad]; + + // Uncomment the following line to preserve selection between presentations. + // self.clearsSelectionOnViewWillAppear = NO; + _kcItemStatuses = [[NSArray alloc] initWithObjects:@"",redCircle, blueCircle,@"",@"",nil]; + _kcItemNames = [[NSArray alloc] initWithObjects:@"Facebook",@"iCloud", @"WSJ",@"Twitter",@"NYTimes",nil]; + + // Uncomment the following line to display an Edit button in the navigation bar for this view controller. + self.navigationItem.rightBarButtonItem = self.editButtonItem; +} +#endif + +- (void)didReceiveMemoryWarning +{ + [super didReceiveMemoryWarning]; + // Dispose of any resources that can be recreated. +} + +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender +{ + if ([[segue identifier] isEqualToString:@"ItemDetail"]) + { +#if 0 + KCAItemDetailViewController *detailViewController = [segue destinationViewController]; + NSIndexPath *myIndexPath = [self.tableView indexPathForSelectedRow]; + int row = [myIndexPath row]; + //TODO - horribly inefficient ! + NSArray *items = [self getItems]; + detailViewController.itemDetailModel = [items objectAtIndex: row]; +#endif + } +} + +// MARK: - Table view data source + +- (NSArray *)getItems +{ + NSArray *allItems = NULL;//(NSArray *)[[MyKeychain sharedInstance] fetchDictionaryAll]; + return allItems; +} + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView +{ + // Return the number of sections. + NSLog(@"numberOfSectionsInTableView"); + return 1; //TODO +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section +{ + // Return the number of rows in the section. + + // SOSCircleCountPeers(circle) + SOSCircleCountApplicants(circle) + + static bool dumpedit = false; + + if (!dumpedit) + { + NSMutableDictionary *allItems = NULL;//[[MyKeychain sharedInstance] fetchDictionaryAll]; + NSLog(@"numberOfRowsInSection: items: %lu", (unsigned long)[allItems count]); + + dumpedit = true; + } + //TODO +#if _USE_TEST_DATA +return _kcItemStatuses.count; +#else + NSInteger count = [[self getItems] count]; + NSLog(@"numberOfRowsInSection: %ld", (long)count); + return count; +#endif + + return 1; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath +{ +#if 1 + NSLog(@"cellForRowAtIndexPath %@", indexPath); + +//- (id)dequeueReusableCellWithIdentifier:(NSString *)identifier forIndexPath:(NSIndexPath *)indexPath NS_AVAILABLE_IOS(6_0); // newer dequeue method guarantees a cell is returned and resized properly, assuming identifier is registered + +// KeychainItemCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; + +// UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:KCAItemCellIdentifier forIndexPath:(NSIndexPath *)indexPath]; + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"deviceTableCell" forIndexPath:(NSIndexPath *)indexPath]; + if (cell == nil) + { + NSLog(@"cellForRowAtIndexPath : cell was nil"); + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:@"deviceTableCell"]; + } + + // Configure the cell... + + NSUInteger row = [indexPath row]; + +#if _USE_TEST_DATA + UILabel *statusLabel = (UILabel *)[cell viewWithTag:KCA_ITEM_STATUS_ID]; + statusLabel.text = [_kcItemStatuses objectAtIndex: row]; + UILabel *nameLabel = (UILabel *)[cell viewWithTag:KCA_ITEM_NAME_ID]; + nameLabel.text = [_kcItemNames objectAtIndex: row]; +#else + NSArray *items = [self getItems]; + NSDictionary *theItem = [items objectAtIndex: row]; + UILabel *statusLabel = (UILabel *)[cell viewWithTag:KCA_ITEM_STATUS_ID]; + statusLabel.text = [_kcItemStatuses objectAtIndex: row]; + UILabel *nameLabel = (UILabel *)[cell viewWithTag:KCA_ITEM_NAME_ID]; + nameLabel.text = [theItem objectForKey: (__bridge id)(kSecAttrService)]; + UILabel *accountLabel = (UILabel *)[cell viewWithTag:KCA_ITEM_ACCT_ID]; + accountLabel.text = [theItem objectForKey: (__bridge id)(kSecAttrAccount)]; +#endif + +/* + WHY DOESNT THIS WORK !!! + cell.itemAccount.text = + cell.itemStatus.text = + cell.itemName.text = [_kcItemNames objectAtIndex: [indexPath row]]; +*/ + return cell; +#else + static NSString *CellIdentifier = @"DeviceCell"; + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier]; + if (cell == nil) { + cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier]; + } + + // Configure the cell... +// cell.textLabel.text = @"1234"; + cell.textLabel.text = self.objects[indexPath.row]; +#endif + return cell; +} + + +@end