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