130 lines
4.2 KiB
Objective-C
130 lines
4.2 KiB
Objective-C
//
|
|
// RootViewController.m
|
|
// CuteAnimals
|
|
//
|
|
// Copyright 2012 Google, Inc. All rights reserved.
|
|
//
|
|
|
|
#import "AppDelegate.h"
|
|
#import "RootViewController.h"
|
|
#import "CategoryViewController.h"
|
|
#import "ImageViewController.h"
|
|
|
|
#import "GAI.h"
|
|
#import "GAIDictionaryBuilder.h"
|
|
|
|
@interface RootViewController ()
|
|
|
|
@property(nonatomic, strong) NSArray *items;
|
|
@property(nonatomic, weak) AppDelegate *delegate;
|
|
|
|
@end
|
|
|
|
@implementation RootViewController
|
|
|
|
- (id)initWithNibName:(NSString *)nibName
|
|
bundle:(NSBundle *)nibBundle {
|
|
self = [super initWithNibName:nibName
|
|
bundle:nibBundle];
|
|
if (self) {
|
|
_delegate = [UIApplication sharedApplication].delegate;
|
|
self.title = @"Cute Animals";
|
|
self.screenName = @"root";
|
|
}
|
|
return self;
|
|
}
|
|
|
|
|
|
- (void)dispatch {
|
|
NSMutableDictionary *event =
|
|
[[GAIDictionaryBuilder createEventWithCategory:@"UI"
|
|
action:@"buttonPress"
|
|
label:@"dispatch"
|
|
value:nil] build];
|
|
[[GAI sharedInstance].defaultTracker send:event];
|
|
[[GAI sharedInstance] dispatch];
|
|
}
|
|
|
|
- (void)crash {
|
|
[NSException raise:@"There is no spoon."
|
|
format:@"Abort, retry, fail?"];
|
|
}
|
|
|
|
- (void)viewDidLoad {
|
|
[super viewDidLoad];
|
|
self.navigationItem.leftBarButtonItem =
|
|
[[UIBarButtonItem alloc] initWithTitle:@"Dispatch"
|
|
style:UIBarButtonItemStyleBordered
|
|
target:self
|
|
action:@selector(dispatch)];
|
|
self.navigationItem.rightBarButtonItem =
|
|
[[UIBarButtonItem alloc] initWithTitle:@"Crash"
|
|
style:UIBarButtonItemStyleBordered
|
|
target:self
|
|
action:@selector(crash)];
|
|
self.items =
|
|
[[self.delegate.images allKeys]
|
|
sortedArrayUsingSelector:@selector(localizedCaseInsensitiveCompare:)];
|
|
[self.tableView reloadData];
|
|
}
|
|
|
|
- (BOOL)shouldAutorotateToInterfaceOrientation:
|
|
(UIInterfaceOrientation)interfaceOrientation {
|
|
return NO;
|
|
}
|
|
|
|
#pragma mark UITableViewDelegate methods
|
|
|
|
- (void)tableView:(UITableView *)tableView
|
|
didSelectRowAtIndexPath:(NSIndexPath *)indexPath {
|
|
[tableView deselectRowAtIndexPath:indexPath animated:NO];
|
|
if (indexPath.row < 0 || indexPath.row >= self.items.count) {
|
|
NSLog(@"IndexPath %d out of bounds!", indexPath.row);
|
|
return;
|
|
}
|
|
|
|
NSString *category = (self.items)[indexPath.row];
|
|
NSString *nib = ([[UIDevice currentDevice] userInterfaceIdiom] ==
|
|
UIUserInterfaceIdiomPhone) ? @"CategoryViewController_iPhone" :
|
|
@"CategoryViewController_iPad";
|
|
CategoryViewController *categoryController =
|
|
[[CategoryViewController alloc] initWithNibName:nib
|
|
bundle:nil
|
|
category:category];
|
|
[self.delegate.navController pushViewController:categoryController
|
|
animated:YES];
|
|
}
|
|
|
|
#pragma mark UITableViewDataSource methods
|
|
|
|
- (NSInteger)tableView:(UITableView *)tableView
|
|
numberOfRowsInSection:(NSInteger)section {
|
|
return self.items.count;
|
|
}
|
|
|
|
- (UITableViewCell *)tableView:(UITableView *)tableView
|
|
cellForRowAtIndexPath:(NSIndexPath *)indexPath {
|
|
if (indexPath.row < 0 || indexPath.row >= self.items.count) {
|
|
NSLog(@"IndexPath %d out of bounds!", indexPath.row);
|
|
return nil;
|
|
}
|
|
NSString *category = (self.items)[indexPath.row];
|
|
|
|
static NSString *CellId = @"Cell";
|
|
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellId];
|
|
if (!cell) {
|
|
cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
|
|
reuseIdentifier:CellId];
|
|
cell.textLabel.font = [UIFont systemFontOfSize:14];
|
|
cell.detailTextLabel.font = [UIFont systemFontOfSize:12];
|
|
}
|
|
|
|
NSString *label = [NSString stringWithFormat:@"Cute %@ Pictures!", category];
|
|
cell.textLabel.text = label;
|
|
NSUInteger imageCount = [(self.delegate.images)[category] count];
|
|
cell.detailTextLabel.text = [NSString stringWithFormat:@"%u image(s).",
|
|
imageCount];
|
|
return cell;
|
|
}
|
|
|
|
@end
|