photo-ios/Frameworks/Google Analytics SDK/Examples/CuteAnimals/RootViewController.m
2013-03-04 14:39:10 +01:00

154 lines
4.9 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"
@interface RootViewController ()
@property(nonatomic, retain) NSArray *items;
@property(nonatomic, assign) AppDelegate *delegate;
@end
@implementation RootViewController
@synthesize tableView = tableView_;
@synthesize navController = navController_;
@synthesize items = items_;
@synthesize delegate = delegate_;
- (id)initWithNibName:(NSString *)nibName
bundle:(NSBundle *)nibBundle {
self = [super initWithNibName:nibName
bundle:nibBundle];
if (self) {
self.trackedViewName = @"root";
self.title = @"Cute Animals";
self.delegate = [UIApplication sharedApplication].delegate;
[self updateSecureButton];
}
return self;
}
- (void)dealloc {
[tableView_ release];
[navController_ release];
[items_ release];
[super dealloc];
}
- (void)updateSecureButton {
if ([GAI sharedInstance].defaultTracker.useHttps) {
self.navigationItem.leftBarButtonItem.title = @"HTTPS";
self.navigationItem.leftBarButtonItem.style = UIBarButtonItemStyleDone;
} else {
self.navigationItem.leftBarButtonItem.title = @"HTTP";
self.navigationItem.leftBarButtonItem.style = UIBarButtonItemStyleBordered;
}
}
- (void)toggleSecure {
[GAI sharedInstance].defaultTracker.useHttps =
![GAI sharedInstance].defaultTracker.useHttps;
[self updateSecureButton];
[[GAI sharedInstance].defaultTracker sendEventWithCategory:@"secureDispatch"
withAction:@"toggle"
withLabel:nil
withValue:nil];
}
- (void)crash {
[NSException raise:@"There is no spoon."
format:@"Abort, retry, fail?"];
}
- (void)viewDidLoad {
[super viewDidLoad];
self.navigationItem.leftBarButtonItem =
[[[UIBarButtonItem alloc]
initWithTitle:@"HTTP"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(toggleSecure)] autorelease];
self.navigationItem.rightBarButtonItem =
[[[UIBarButtonItem alloc]
initWithTitle:@"Crash"
style:UIBarButtonItemStyleBordered
target:self
action:@selector(crash)] autorelease];
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 objectAtIndex:indexPath.row];
NSString *nib = ([[UIDevice currentDevice] userInterfaceIdiom] ==
UIUserInterfaceIdiomPhone) ? @"CategoryViewController_iPhone" :
@"CategoryViewController_iPad";
CategoryViewController *categoryController =
[[[CategoryViewController alloc] initWithNibName:nib
bundle:nil
category:category] autorelease];
categoryController.navController = self.navController;
[self.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 objectAtIndex:indexPath.row];
static NSString *CellId = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellId];
if (!cell) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle
reuseIdentifier:CellId] autorelease];
}
NSString *label = [NSString stringWithFormat:@"Cute %@ Pictures!", category];
cell.textLabel.text = label;
cell.textLabel.font = [UIFont systemFontOfSize:14];
NSUInteger imageCount =
[(NSArray *)[self.delegate.images objectForKey:category] count];
cell.detailTextLabel.text = [NSString stringWithFormat:@"%u image(s).",
imageCount];
cell.detailTextLabel.font = [UIFont systemFontOfSize:12];
return cell;
}
@end