Blame client/iOS/Controllers/BookmarkGatewaySettingsController.m

Packit Service fa4841
//
Packit Service fa4841
//  BookmarkGatewaySettingsController.m
Packit Service fa4841
//  FreeRDP
Packit Service fa4841
//
Packit Service fa4841
//  Created by a Thincast Developer on 4/30/13.
Packit Service fa4841
//
Packit Service fa4841
//
Packit Service fa4841
Packit Service fa4841
#import "BookmarkGatewaySettingsController.h"
Packit Service fa4841
#import "Bookmark.h"
Packit Service fa4841
#import "Utils.h"
Packit Service fa4841
#import "EditorSelectionController.h"
Packit Service fa4841
Packit Service fa4841
#define SECTION_TSGATEWAY_SETTINGS 0
Packit Service fa4841
#define SECTION_COUNT 1
Packit Service fa4841
Packit Service fa4841
@interface BookmarkGatewaySettingsController ()
Packit Service fa4841
Packit Service fa4841
@end
Packit Service fa4841
Packit Service fa4841
@implementation BookmarkGatewaySettingsController
Packit Service fa4841
Packit Service fa4841
- (id)initWithBookmark:(ComputerBookmark *)bookmark
Packit Service fa4841
{
Packit Service fa4841
	if ((self = [super initWithStyle:UITableViewStyleGrouped]))
Packit Service fa4841
	{
Packit Service fa4841
		// set additional settings state according to bookmark data
Packit Service fa4841
		_bookmark = [bookmark retain];
Packit Service fa4841
		_params = [bookmark params];
Packit Service fa4841
	}
Packit Service fa4841
	return self;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
- (void)viewDidLoad
Packit Service fa4841
{
Packit Service fa4841
	[super viewDidLoad];
Packit Service fa4841
	[self setTitle:NSLocalizedString(@"TS Gateway Settings", @"TS Gateway Settings title")];
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
- (void)viewWillAppear:(BOOL)animated
Packit Service fa4841
{
Packit Service fa4841
	[super viewWillAppear:animated];
Packit Service fa4841
Packit Service fa4841
	// we need to reload the table view data here to have up-to-date data for the
Packit Service fa4841
	// advanced settings accessory items (like for resolution/color mode settings)
Packit Service fa4841
	[[self tableView] reloadData];
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
Packit Service fa4841
{
Packit Service fa4841
	return YES;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
- (void)dealloc
Packit Service fa4841
{
Packit Service fa4841
	[super dealloc];
Packit Service fa4841
	[_bookmark release];
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
#pragma mark - Table view data source
Packit Service fa4841
Packit Service fa4841
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
Packit Service fa4841
{
Packit Service fa4841
	// Return the number of sections.
Packit Service fa4841
	return SECTION_COUNT;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
Packit Service fa4841
{
Packit Service fa4841
	// Return the number of rows in the section.
Packit Service fa4841
	switch (section)
Packit Service fa4841
	{
Packit Service fa4841
		case SECTION_TSGATEWAY_SETTINGS: // ts gateway settings
Packit Service fa4841
			return 5;
Packit Service fa4841
		default:
Packit Service fa4841
			break;
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	return 0;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
// set section headers
Packit Service fa4841
- (NSString *)tableView:(UITableView *)tableView titleForHeaderInSection:(NSInteger)section
Packit Service fa4841
{
Packit Service fa4841
	switch (section)
Packit Service fa4841
	{
Packit Service fa4841
		case SECTION_TSGATEWAY_SETTINGS:
Packit Service fa4841
			return NSLocalizedString(@"TS Gateway", @"'TS Gateway': ts gateway settings header");
Packit Service fa4841
	}
Packit Service fa4841
	return @"unknown";
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
- (UITableViewCell *)tableView:(UITableView *)tableView
Packit Service fa4841
         cellForRowAtIndexPath:(NSIndexPath *)indexPath
Packit Service fa4841
{
Packit Service fa4841
	// determine the required cell type
Packit Service fa4841
	NSString *cellType = nil;
Packit Service fa4841
	switch ([indexPath section])
Packit Service fa4841
	{
Packit Service fa4841
		case SECTION_TSGATEWAY_SETTINGS: // advanced settings
Packit Service fa4841
		{
Packit Service fa4841
			switch ([indexPath row])
Packit Service fa4841
			{
Packit Service fa4841
				case 0: // hostname
Packit Service fa4841
				case 1: // port
Packit Service fa4841
				case 2: // username
Packit Service fa4841
				case 4: // domain
Packit Service fa4841
					cellType = TableCellIdentifierText;
Packit Service fa4841
					break;
Packit Service fa4841
				case 3: // password
Packit Service fa4841
					cellType = TableCellIdentifierSecretText;
Packit Service fa4841
					break;
Packit Service fa4841
				default:
Packit Service fa4841
					break;
Packit Service fa4841
			}
Packit Service fa4841
			break;
Packit Service fa4841
		}
Packit Service fa4841
	}
Packit Service fa4841
	NSAssert(cellType != nil, @"Couldn't determine cell type");
Packit Service fa4841
Packit Service fa4841
	// get the table view cell
Packit Service fa4841
	UITableViewCell *cell = [self tableViewCellFromIdentifier:cellType];
Packit Service fa4841
	NSAssert(cell, @"Invalid cell");
Packit Service fa4841
Packit Service fa4841
	// set cell values
Packit Service fa4841
	switch ([indexPath section])
Packit Service fa4841
	{
Packit Service fa4841
			// advanced settings
Packit Service fa4841
		case SECTION_TSGATEWAY_SETTINGS:
Packit Service fa4841
			[self initGatewaySettings:indexPath cell:cell];
Packit Service fa4841
			break;
Packit Service fa4841
Packit Service fa4841
		default:
Packit Service fa4841
			break;
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	return cell;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
// updates server settings in the UI
Packit Service fa4841
- (void)initGatewaySettings:(NSIndexPath *)indexPath cell:(UITableViewCell *)cell
Packit Service fa4841
{
Packit Service fa4841
	EditTextTableViewCell *textCell = (EditTextTableViewCell *)cell;
Packit Service fa4841
	[[textCell textfield] setTag:GET_TAG_FROM_PATH(indexPath)];
Packit Service fa4841
	switch ([indexPath row])
Packit Service fa4841
	{
Packit Service fa4841
		case 0:
Packit Service fa4841
		{
Packit Service fa4841
			[[textCell label] setText:NSLocalizedString(@"Host", @"'Host': Bookmark hostname")];
Packit Service fa4841
			[[textCell textfield] setText:[_params StringForKey:@"tsg_hostname"]];
Packit Service fa4841
			[[textCell textfield]
Packit Service fa4841
			    setPlaceholder:NSLocalizedString(@"not set", @"not set placeholder")];
Packit Service fa4841
			break;
Packit Service fa4841
		}
Packit Service fa4841
		case 1:
Packit Service fa4841
		{
Packit Service fa4841
			int port = [_params intForKey:@"tsg_port"];
Packit Service fa4841
			if (port == 0)
Packit Service fa4841
				port = 443;
Packit Service fa4841
			[[textCell label] setText:NSLocalizedString(@"Port", @"'Port': Bookmark port")];
Packit Service fa4841
			[[textCell textfield] setText:[NSString stringWithFormat:@"%d", port]];
Packit Service fa4841
			[[textCell textfield] setKeyboardType:UIKeyboardTypeNumberPad];
Packit Service fa4841
			break;
Packit Service fa4841
		}
Packit Service fa4841
		case 2:
Packit Service fa4841
		{
Packit Service fa4841
			[[textCell textfield] setTag:GET_TAG_FROM_PATH(indexPath)];
Packit Service fa4841
			[[textCell label]
Packit Service fa4841
			    setText:NSLocalizedString(@"Username", @"'Username': Bookmark username")];
Packit Service fa4841
			[[textCell textfield] setText:[_params StringForKey:@"tsg_username"]];
Packit Service fa4841
			[[textCell textfield]
Packit Service fa4841
			    setPlaceholder:NSLocalizedString(@"not set", @"not set placeholder")];
Packit Service fa4841
			break;
Packit Service fa4841
		}
Packit Service fa4841
		case 3:
Packit Service fa4841
		{
Packit Service fa4841
			[[textCell textfield] setTag:GET_TAG_FROM_PATH(indexPath)];
Packit Service fa4841
			[[textCell label]
Packit Service fa4841
			    setText:NSLocalizedString(@"Password", @"'Password': Bookmark password")];
Packit Service fa4841
			[[textCell textfield] setText:[_params StringForKey:@"tsg_password"]];
Packit Service fa4841
			[[textCell textfield]
Packit Service fa4841
			    setPlaceholder:NSLocalizedString(@"not set", @"not set placeholder")];
Packit Service fa4841
			break;
Packit Service fa4841
		}
Packit Service fa4841
		case 4:
Packit Service fa4841
		{
Packit Service fa4841
			[[textCell textfield] setTag:GET_TAG_FROM_PATH(indexPath)];
Packit Service fa4841
			[[textCell label] setText:NSLocalizedString(@"Domain", @"'Domain': Bookmark domain")];
Packit Service fa4841
			[[textCell textfield] setText:[_params StringForKey:@"tsg_domain"]];
Packit Service fa4841
			[[textCell textfield]
Packit Service fa4841
			    setPlaceholder:NSLocalizedString(@"not set", @"not set placeholder")];
Packit Service fa4841
			break;
Packit Service fa4841
		}
Packit Service fa4841
		default:
Packit Service fa4841
			NSLog(@"Invalid row index in settings table!");
Packit Service fa4841
			break;
Packit Service fa4841
	}
Packit Service fa4841
Packit Service fa4841
	[self adjustEditTextTableViewCell:textCell];
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
#pragma mark -
Packit Service fa4841
#pragma mark Text Field delegate
Packit Service fa4841
Packit Service fa4841
- (BOOL)textFieldShouldReturn:(UITextField *)textField
Packit Service fa4841
{
Packit Service fa4841
	[textField resignFirstResponder];
Packit Service fa4841
	return NO;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
- (BOOL)textFieldShouldEndEditing:(UITextField *)textField
Packit Service fa4841
{
Packit Service fa4841
	switch (textField.tag)
Packit Service fa4841
	{
Packit Service fa4841
			// update server settings
Packit Service fa4841
		case GET_TAG(SECTION_TSGATEWAY_SETTINGS, 0):
Packit Service fa4841
			[_params setValue:[textField text] forKey:@"tsg_hostname"];
Packit Service fa4841
			break;
Packit Service fa4841
Packit Service fa4841
		case GET_TAG(SECTION_TSGATEWAY_SETTINGS, 1):
Packit Service fa4841
			[_params setInt:[[textField text] intValue] forKey:@"tsg_port"];
Packit Service fa4841
			break;
Packit Service fa4841
Packit Service fa4841
		case GET_TAG(SECTION_TSGATEWAY_SETTINGS, 2):
Packit Service fa4841
			[_params setValue:[textField text] forKey:@"tsg_username"];
Packit Service fa4841
			break;
Packit Service fa4841
Packit Service fa4841
		case GET_TAG(SECTION_TSGATEWAY_SETTINGS, 3):
Packit Service fa4841
			[_params setValue:[textField text] forKey:@"tsg_password"];
Packit Service fa4841
			break;
Packit Service fa4841
Packit Service fa4841
		case GET_TAG(SECTION_TSGATEWAY_SETTINGS, 4):
Packit Service fa4841
			[_params setValue:[textField text] forKey:@"tsg_domain"];
Packit Service fa4841
			break;
Packit Service fa4841
Packit Service fa4841
		default:
Packit Service fa4841
			break;
Packit Service fa4841
	}
Packit Service fa4841
	return YES;
Packit Service fa4841
}
Packit Service fa4841
Packit Service fa4841
@end