Index: Classes/ArchiveController.m =================================================================== --- Classes/ArchiveController.m (revision 0) +++ Classes/ArchiveController.m (revision 0) @@ -0,0 +1,136 @@ +// +// ArchiveController.m +// UIShowcase +// +// Created by Christian Brunschen on 29/05/2008. +/* + * Copyright 2008 Google Inc. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +#import "ArchiveController.h" +#import "Database.h" +#import "Scan.h" +#import "ParsedResult.h" +#import "DecoderViewController.h" + +@implementation ArchiveController + +@synthesize scans; +@synthesize decoderViewController; + +- initWithDecoderViewController:(DecoderViewController *)dc { + if (self = [super initWithStyle:UITableViewStylePlain]) { + self.decoderViewController = dc; + self.scans = [NSMutableArray array]; + } + return self; +} + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { + return 1; +} + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return [scans count]; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + static NSString *ScanIdentifier = @"ScanIdentifier"; + + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:ScanIdentifier]; + if (cell == nil) { + cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:ScanIdentifier] autorelease]; + cell.font = [cell.font fontWithSize:10.0]; + cell.lineBreakMode = UILineBreakModeCharacterWrap; + } + // Configure the cell + Scan *scan = [scans objectAtIndex:[self scanIndexForRow:indexPath.row]]; + ParsedResult *result = [ParsedResult parsedResultForString:scan.text]; + cell.text = [result stringForDisplay]; + return cell; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [decoderViewController showScan:[scans objectAtIndex:[self scanIndexForRow:indexPath.row]]]; +} + +- (void)tableView:(UITableView *)tableView commitEditingStyle:(UITableViewCellEditingStyle)editingStyle forRowAtIndexPath:(NSIndexPath *)indexPath { + if (editingStyle == UITableViewCellEditingStyleDelete) { + int index = [self scanIndexForRow:indexPath.row]; + Scan *scan = [self.scans objectAtIndex:index]; + [[Database sharedDatabase] deleteScan:scan]; + [self.scans removeObjectAtIndex:index]; + [tableView deleteRowsAtIndexPaths:[NSArray arrayWithObject:indexPath] withRowAnimation:UITableViewRowAnimationFade]; + [tableView reloadData]; + } else if (editingStyle == UITableViewCellEditingStyleInsert) { + // no insertions! + } +} + +/* +- (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { + return YES; +} +*/ +/* +- (void)tableView:(UITableView *)tableView moveRowAtIndexPath:(NSIndexPath *)fromIndexPath toIndexPath:(NSIndexPath *)toIndexPath { +} +*/ +/* +- (BOOL)tableView:(UITableView *)tableView canMoveRowAtIndexPath:(NSIndexPath *)indexPath { + return YES; +} +*/ + + +- (void)dealloc { + [scans release]; + [decoderViewController release]; + [super dealloc]; +} + + +- (void)viewDidLoad { + [super viewDidLoad]; + self.title = @"Scan Archive"; + self.navigationItem.rightBarButtonItem = [self editButtonItem]; +} + + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + self.scans = [NSMutableArray arrayWithArray:[[Database sharedDatabase] scans]]; +} + +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; +} + +- (void)viewWillDisappear:(BOOL)animated { +} + +- (void)viewDidDisappear:(BOOL)animated { +} + +- (void)didReceiveMemoryWarning { + [super didReceiveMemoryWarning]; +} + +- (NSInteger)scanIndexForRow:(NSInteger)row { + return scans.count - 1 - row; +} + +@end +