Blame client/iOS/Controllers/PerformanceEditorController.m

Packit 1fb8d4
/*
Packit 1fb8d4
 controller for performance settings selection
Packit 1fb8d4
Packit 1fb8d4
 Copyright 2013 Thincast Technologies GmbH, Author: Martin Fleisz
Packit 1fb8d4
Packit 1fb8d4
 This Source Code Form is subject to the terms of the Mozilla Public License, v. 2.0.
Packit 1fb8d4
 If a copy of the MPL was not distributed with this file, You can obtain one at http://mozilla.org/MPL/2.0/.
Packit 1fb8d4
 */
Packit 1fb8d4
Packit 1fb8d4
#import "PerformanceEditorController.h"
Packit 1fb8d4
#import "ConnectionParams.h"
Packit 1fb8d4
#import "Utils.h"
Packit 1fb8d4
Packit 1fb8d4
@interface PerformanceEditorController(Private)
Packit 1fb8d4
-(NSString*)keyPathForKey:(NSString*)key;
Packit 1fb8d4
@end
Packit 1fb8d4
Packit 1fb8d4
@implementation PerformanceEditorController
Packit 1fb8d4
Packit 1fb8d4
- (id)initWithConnectionParams:(ConnectionParams*)params
Packit 1fb8d4
{
Packit 1fb8d4
	return [self initWithConnectionParams:params keyPath:nil];
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
- (id)initWithConnectionParams:(ConnectionParams*)params keyPath:
Packit 1fb8d4
    (NSString*)keyPath;
Packit 1fb8d4
{
Packit 1fb8d4
	self = [super initWithStyle:UITableViewStyleGrouped];
Packit 1fb8d4
Packit 1fb8d4
	if (self)
Packit 1fb8d4
	{
Packit 1fb8d4
		_params = [params retain];
Packit 1fb8d4
		_keyPath = (keyPath != nil ? [keyPath retain] : nil);
Packit 1fb8d4
	}
Packit 1fb8d4
Packit 1fb8d4
	return self;
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
- (void)viewDidLoad
Packit 1fb8d4
{
Packit 1fb8d4
	[super viewDidLoad];
Packit 1fb8d4
	// Do any additional setup after loading the view.
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
- (void)viewDidUnload
Packit 1fb8d4
{
Packit 1fb8d4
	[super viewDidUnload];
Packit 1fb8d4
	// Release any retained subviews of the main view.
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)
Packit 1fb8d4
    interfaceOrientation
Packit 1fb8d4
{
Packit 1fb8d4
	return YES;
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
-(NSString*)keyPathForKey:(NSString*)key
Packit 1fb8d4
{
Packit 1fb8d4
	if (_keyPath)
Packit 1fb8d4
		return [_keyPath stringByAppendingFormat:@".%@", key];
Packit 1fb8d4
Packit 1fb8d4
	return key;
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
- (void)dealloc
Packit 1fb8d4
{
Packit 1fb8d4
	[super dealloc];
Packit 1fb8d4
	[_params release];
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
#pragma mark -
Packit 1fb8d4
#pragma mark Table view data source
Packit 1fb8d4
Packit 1fb8d4
- (NSInteger)numberOfSectionsInTableView:(UITableView*)tableView
Packit 1fb8d4
{
Packit 1fb8d4
	// Return the number of sections.
Packit 1fb8d4
	return 1;
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
Packit 1fb8d4
- (NSInteger)tableView:(UITableView*)tableView numberOfRowsInSection:
Packit 1fb8d4
    (NSInteger)section
Packit 1fb8d4
{
Packit 1fb8d4
	return 7;
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
Packit 1fb8d4
// set section headers
Packit 1fb8d4
- (NSString*)tableView:(UITableView*)tableView titleForHeaderInSection:
Packit 1fb8d4
    (NSInteger)section
Packit 1fb8d4
{
Packit 1fb8d4
	return NSLocalizedString(@"Performance Settings",
Packit 1fb8d4
	                         @"'Performance Settings': performance settings header");
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
// Customize the appearance of table view cells.
Packit 1fb8d4
- (UITableViewCell*)tableView:(UITableView*)tableView cellForRowAtIndexPath:
Packit 1fb8d4
    (NSIndexPath*)indexPath
Packit 1fb8d4
{
Packit 1fb8d4
	// get the table view cell
Packit 1fb8d4
	EditFlagTableViewCell* cell = (EditFlagTableViewCell*)[self
Packit 1fb8d4
	                              tableViewCellFromIdentifier:TableCellIdentifierYesNo];
Packit 1fb8d4
	NSAssert(cell, @"Invalid cell");
Packit 1fb8d4
Packit 1fb8d4
	switch ([indexPath row])
Packit 1fb8d4
	{
Packit 1fb8d4
		case 0:
Packit 1fb8d4
			{
Packit 1fb8d4
				[[cell label] setText:NSLocalizedString(@"RemoteFX",
Packit 1fb8d4
				                                        @"RemoteFX performance setting")];
Packit 1fb8d4
				[[cell toggle] setOn:[_params boolForKeyPath:[self keyPathForKey:
Packit 1fb8d4
				                      @"perf_remotefx"]]];
Packit 1fb8d4
				break;
Packit 1fb8d4
			}
Packit 1fb8d4
Packit 1fb8d4
		case 1:
Packit 1fb8d4
			{
Packit 1fb8d4
				[[cell label] setText:NSLocalizedString(@"GFX", @"GFX performance setting")];
Packit 1fb8d4
				[[cell toggle] setOn:[_params boolForKeyPath:[self keyPathForKey:@"perf_gfx"]]];
Packit 1fb8d4
				break;
Packit 1fb8d4
			}
Packit 1fb8d4
Packit 1fb8d4
		case 2:
Packit 1fb8d4
			{
Packit 1fb8d4
				[[cell label] setText:NSLocalizedString(@"H264", @"H264 performance setting")];
Packit 1fb8d4
				[[cell toggle] setOn:[_params boolForKeyPath:[self keyPathForKey:
Packit 1fb8d4
				                      @"perf_h264"]]];
Packit 1fb8d4
				break;
Packit 1fb8d4
			}
Packit 1fb8d4
Packit 1fb8d4
		case 3:
Packit 1fb8d4
			{
Packit 1fb8d4
				[[cell label] setText:NSLocalizedString(@"Desktop Background",
Packit 1fb8d4
				                                        @"Desktop background performance setting")];
Packit 1fb8d4
				[[cell toggle] setOn:[_params boolForKeyPath:[self keyPathForKey:
Packit 1fb8d4
				                      @"perf_show_desktop"]]];
Packit 1fb8d4
				break;
Packit 1fb8d4
			}
Packit 1fb8d4
Packit 1fb8d4
		case 4:
Packit 1fb8d4
			{
Packit 1fb8d4
				[[cell label] setText:NSLocalizedString(@"Font Smoothing",
Packit 1fb8d4
				                                        @"Font smoothing performance setting")];
Packit 1fb8d4
				[[cell toggle] setOn:[_params boolForKeyPath:[self keyPathForKey:
Packit 1fb8d4
				                      @"perf_font_smoothing"]]];
Packit 1fb8d4
				break;
Packit 1fb8d4
			}
Packit 1fb8d4
Packit 1fb8d4
		case 5:
Packit 1fb8d4
			{
Packit 1fb8d4
				[[cell label] setText:NSLocalizedString(@"Desktop Composition",
Packit 1fb8d4
				                                        @"Desktop composition performance setting")];
Packit 1fb8d4
				[[cell toggle] setOn:[_params boolForKeyPath:[self keyPathForKey:
Packit 1fb8d4
				                      @"perf_desktop_composition"]]];
Packit 1fb8d4
				break;
Packit 1fb8d4
			}
Packit 1fb8d4
Packit 1fb8d4
		case 6:
Packit 1fb8d4
			{
Packit 1fb8d4
				[[cell label] setText:NSLocalizedString(@"Window contents while dragging",
Packit 1fb8d4
				                                        @"Window Dragging performance setting")];
Packit 1fb8d4
				[[cell toggle] setOn:[_params boolForKeyPath:[self keyPathForKey:
Packit 1fb8d4
				                      @"perf_window_dragging"]]];
Packit 1fb8d4
				break;
Packit 1fb8d4
			}
Packit 1fb8d4
Packit 1fb8d4
		case 7:
Packit 1fb8d4
			{
Packit 1fb8d4
				[[cell label] setText:NSLocalizedString(@"Menu Animation",
Packit 1fb8d4
				                                        @"Menu Animations performance setting")];
Packit 1fb8d4
				[[cell toggle] setOn:[_params boolForKeyPath:[self keyPathForKey:
Packit 1fb8d4
				                      @"perf_menu_animation"]]];
Packit 1fb8d4
				break;
Packit 1fb8d4
			}
Packit 1fb8d4
Packit 1fb8d4
		case 8:
Packit 1fb8d4
			{
Packit 1fb8d4
				[[cell label] setText:NSLocalizedString(@"Visual Styles",
Packit 1fb8d4
				                                        @"Use Themes performance setting")];
Packit 1fb8d4
				[[cell toggle] setOn:[_params boolForKeyPath:[self keyPathForKey:
Packit 1fb8d4
				                      @"perf_windows_themes"]]];
Packit 1fb8d4
				break;
Packit 1fb8d4
			}
Packit 1fb8d4
Packit 1fb8d4
		default:
Packit 1fb8d4
			break;
Packit 1fb8d4
	}
Packit 1fb8d4
Packit 1fb8d4
	[[cell toggle] setTag:GET_TAG_FROM_PATH(indexPath)];
Packit 1fb8d4
	[[cell toggle] addTarget:self action:@selector(togglePerformanceSetting:)
Packit 1fb8d4
	 forControlEvents:UIControlEventValueChanged];
Packit 1fb8d4
	return cell;
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
#pragma mark -
Packit 1fb8d4
#pragma mark Action Handlers
Packit 1fb8d4
Packit 1fb8d4
- (void)togglePerformanceSetting:(id)sender
Packit 1fb8d4
{
Packit 1fb8d4
	UISwitch* valueSwitch = (UISwitch*)sender;
Packit 1fb8d4
Packit 1fb8d4
	switch (valueSwitch.tag)
Packit 1fb8d4
	{
Packit 1fb8d4
		case GET_TAG(0, 0):
Packit 1fb8d4
			[_params setBool:[valueSwitch isOn] forKeyPath:[self keyPathForKey:
Packit 1fb8d4
			        @"perf_remotefx"]];
Packit 1fb8d4
			break;
Packit 1fb8d4
Packit 1fb8d4
		case GET_TAG(0, 1):
Packit 1fb8d4
			[_params setBool:[valueSwitch isOn] forKeyPath:[self keyPathForKey:
Packit 1fb8d4
			        @"perf_gfx"]];
Packit 1fb8d4
			break;
Packit 1fb8d4
Packit 1fb8d4
		case GET_TAG(0, 2):
Packit 1fb8d4
			[_params setBool:[valueSwitch isOn] forKeyPath:[self keyPathForKey:
Packit 1fb8d4
			        @"perf_h264"]];
Packit 1fb8d4
			break;
Packit 1fb8d4
Packit 1fb8d4
		case GET_TAG(0, 3):
Packit 1fb8d4
			[_params setBool:[valueSwitch isOn] forKeyPath:[self keyPathForKey:
Packit 1fb8d4
			        @"perf_show_desktop"]];
Packit 1fb8d4
			break;
Packit 1fb8d4
Packit 1fb8d4
		case GET_TAG(0, 4):
Packit 1fb8d4
			[_params setBool:[valueSwitch isOn] forKeyPath:[self keyPathForKey:
Packit 1fb8d4
			        @"perf_font_smoothing"]];
Packit 1fb8d4
			break;
Packit 1fb8d4
Packit 1fb8d4
		case GET_TAG(0, 5):
Packit 1fb8d4
			[_params setBool:[valueSwitch isOn] forKeyPath:[self keyPathForKey:
Packit 1fb8d4
			        @"perf_desktop_composition"]];
Packit 1fb8d4
			break;
Packit 1fb8d4
Packit 1fb8d4
		case GET_TAG(0, 6):
Packit 1fb8d4
			[_params setBool:[valueSwitch isOn] forKeyPath:[self keyPathForKey:
Packit 1fb8d4
			        @"perf_window_dragging"]];
Packit 1fb8d4
			break;
Packit 1fb8d4
Packit 1fb8d4
		case GET_TAG(0, 7):
Packit 1fb8d4
			[_params setBool:[valueSwitch isOn] forKeyPath:[self keyPathForKey:
Packit 1fb8d4
			        @"perf_menu_animation"]];
Packit 1fb8d4
			break;
Packit 1fb8d4
Packit 1fb8d4
		case GET_TAG(0, 8):
Packit 1fb8d4
			[_params setBool:[valueSwitch isOn] forKeyPath:[self keyPathForKey:
Packit 1fb8d4
			        @"perf_windows_themes"]];
Packit 1fb8d4
			break;
Packit 1fb8d4
Packit 1fb8d4
		default:
Packit 1fb8d4
			break;
Packit 1fb8d4
	}
Packit 1fb8d4
}
Packit 1fb8d4
Packit 1fb8d4
@end