All pastes #832913 Raw Edit

Unbenannt

public text v1 · immutable
#832913 ·published 2007-12-26 19:40 UTC
rendered paste body
//
//  LocationItemView.m
//  iWebCams
//
//  Created by Andreas Linde on 26.12.07.
//  Copyright 2007 __MyCompanyName__. All rights reserved.
//
#import <Foundation/Foundation.h>
#import <UIKit/UIKit.h>
#import <UIKit/UIApplication.h>
#import <UIKit/UITable.h>
#import "LocationsItemView.h"

@interface LocationsItemView (Private)

- (void)save;
- (void)reconfig;
- (NSString*)getTextField:(int)fieldIdx;
- (void)returnToListAndSave:(BOOL)saveOrNot;
- (int)fieldCountForType;

@end

@implementation LocationsItemView

- (void)dealloc
{
	[_navBar release];
	[_prefsTable release];
	[_editCell release];
	int i;
	for (i = 0; i < LBIV_MAXFIELDROWS; i++) {
		[_editField[i] release];
	}
	
	[super dealloc];
}

///////////// Constructor ////////////////
- (id)initWithFrame:(struct CGRect)frame app:(id)app;
{
	self = [super initWithFrame:frame];
	if (self)
	{
		_transDelegate = app;
		
		_navBar = [[UINavigationBar alloc] initWithFrame: CGRectMake(0.0f, 0.0f, 320.0f, LBIV_NAVBAR_HEIGHT)];
		[_navBar showButtonsWithLeftTitle: @"Back" rightTitle: @"Save" leftBack: TRUE];
		//[_navBar setPrompt: @"Details"];
		[_navBar setBarStyle: 1];
		[_navBar enableAnimation];
		[_navBar setDelegate: self];
		
		frame.origin.y = LBIV_NAVBAR_HEIGHT;
		frame.size.height -= LBIV_NAVBAR_HEIGHT;
		_prefsTable = [[UIPreferencesTable alloc] initWithFrame: frame];
		[_prefsTable setDataSource: self];
		[_prefsTable setDelegate: self];
		
		[self addSubview: _navBar];
		[self addSubview: _prefsTable];
		
		_editCell = [[UIPreferencesTableCell alloc] init];
		
		int i;
		for (i = 0; i < LBIV_MAXFIELDROWS; i++) {
			_editField[i] = [[UIPreferencesTextTableCell alloc] init];
		}
		[self reconfig];		
	}
	
	return self;
}

- (void)reconfig
{
	/* 
	 Keyboard Types:
	 0: Standard
	 1: Standard but numbers come up first
	 2: Phone number pad with +,*,#,"pause" (Modem mode i guess)
	 3: URL
	 4: lowercase only with dialpad numbers, no punct
	 5: Standard w/ alpha
	 6: Numberpad only
	 7: Numberpad only w/ alpha
	 8: email
	 9:
	 */
	NSLog(@"Row: %d", _row);
	[_editField[0] setTitle: @"Location"];
	if (_row == -1)
	{
		[[_editField[0] textField] setText: @""];
	} else {
		NSLog(@"Get Cell Value %@", [[_transDelegate getLocationList] objectAtIndex:_row]);
		[[_editField[0] textField] setText: [[_transDelegate getLocationList] objectAtIndex:_row]];
	}
	[[_editField[0] textField] setAutoCapsType: 0];
	[[_editField[2] textField] setPreferredKeyboardType: 0];
	[[_editField[0] textField] setAutoCorrectionType: 1];
	[_editField[1] setTitle: @"Website"];
	if (_row == -1)
	{
		[[_editField[1] textField] setText: @"http://"];
	} else {
		[[_editField[1] textField] setText: [[_transDelegate getURLList]objectAtIndex:_row]];
	}
	[[_editField[1] textField] setAutoCapsType: 0];
	[[_editField[1] textField] setPreferredKeyboardType: 3];
	[[_editField[1] textField] setAutoCorrectionType: 3];
	
	[_prefsTable reloadData];	
}

- (void)setItem:(int)row
{
	NSLog(@"Set item: %d", row);
	_row = row;
	[self reconfig];	
}

- (NSString*)getTextField:(int)fieldIdx
{
	if ([[_editField[fieldIdx] textField] text] != NULL) {
		// todo: chomp
		return [[NSString alloc] initWithString: [[_editField[fieldIdx] textField] text]];
	}
	else {
		return[[NSString alloc] init];
	}
}

- (void)navigationBar:(UINavigationBar*)navbar buttonClicked:(int)button
{
	NSLog(@"navBar buttonClicked: %d", button);
	switch (button) 
	{
		case 1: // Back
			[_prefsTable setKeyboardVisible:FALSE animated:TRUE];
			[_transDelegate transToLocationsView];
//			[self returnToListAndSave:TRUE];
			break;
			
		case 0: // right button
			[_transDelegate changeLocation:_row name:[[_editField[0] textField] text] url:[[_editField[1] textField] text]];
			[_transDelegate transToLocationsView];
			break;
	}
}

- (BOOL)canSelectRow:(int)row
{
	NSLog(@"canSelectRow: %d");
	return TRUE;
}

- (void)tableRowSelected:(NSNotification *)notification
{
	// Delete clicked (it's always the last row)
	int row = [_prefsTable selectedRow];
	NSLog(@"tableRowSelected: %d editingRow %d", [_prefsTable selectedRow], [_prefsTable editingRow]);
	if (row == [_prefsTable editingRow] ) {
		// user tapped the text of the field they are editing - stop editing that cell.
		[_prefsTable stopEditing];
	}
	else if (row > 0 && row <= LBIV_MAXFIELDROWS) {
		// user tapped a field different from the one they're editing. Switch focus.
		[[_editField[row - 1] textField] becomeFirstResponder];
		[_prefsTable _setEditingCell:_editField[row - 1]];
	}	
}

// Start of Preference required methods
- (int) numberOfGroupsInPreferencesTable: (UIPreferencesTable*)table 
{
	NSLog(@"numberOfGroupsInPreferencesTable");
	return 1;
}

- (int) preferencesTable: (UIPreferencesTable*)table numberOfRowsInGroup: (int)group 
{
	NSLog(@"numberOfRowsInGroup: %d", group);
	return 2;
}

- (UIPreferencesTableCell*) preferencesTable: (UIPreferencesTable*)table cellForGroup: (int)group 
{
	NSLog(@"cellForGroup: %d", group);
	NSLog(@"editCell: %@", _editCell);
	return _editCell;
}

- (UIPreferencesTableCell*) preferencesTable: (UIPreferencesTable*)table cellForRow: (int)row inGroup: (int)group 
{
	NSLog(@"cellForRow: %d inGroup: %d", row, group);
	if (row >= LBIV_MAXFIELDROWS) return NULL;
	return _editField[row];
}

- (float) preferencesTable: (UIPreferencesTable*)table heightForRow: (int)row inGroup: (int)group withProposedHeight: (float)proposed 
{
	//NSLog(@"heightForRow: %d group: %d withProposedHeight: %4.1f", row, group, proposed);
	return proposed;
}
// End of Preferences required modules

@end