adium/adium

1.5.10.3b1
adium-1.5.10.3
2017-03-23, Evan D. Schoenberg, M.D.
6d760b7b1d69
1.5.10.3b1
/*
* Adium is the legal property of its developers, whose names are listed in the copyright file included
* with this source distribution.
*
* This program is free software; you can redistribute it and/or modify it under the terms of the GNU
* General Public License as published by the Free Software Foundation; either version 2 of the License,
* or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even
* the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General
* Public License for more details.
*
* You should have received a copy of the GNU General Public License along with this program; if not,
* write to the Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
#import "ESPurpleZephyrAccountViewController.h"
#import "ESPurpleZephyrAccount.h"
#import <Adium/AIAccount.h>
@implementation ESPurpleZephyrAccountViewController
- (NSString *)nibName{
return @"ESPurpleZephyrAccountView";
}
/*!
* @brief Update control enabledness based on current state.
*/
- (void)updateControlAvailability
{
BOOL selection = ([tableView_servers selectedRow] != -1);
[button_addOrRemoveServer setEnabled:selection forSegment:1];
}
//Configure our controls
- (void)configureForAccount:(AIAccount *)inAccount
{
[super configureForAccount:inAccount];
[checkBox_exportAnyone setState:[[account preferenceForKey:KEY_ZEPHYR_EXPORT_ANYONE group:GROUP_ACCOUNT_STATUS] boolValue]];
[checkBox_exportSubs setState:[[account preferenceForKey:KEY_ZEPHYR_EXPORT_SUBS group:GROUP_ACCOUNT_STATUS] boolValue]];
[checkBox_launchZhm setState:[[account preferenceForKey:KEY_ZEPHYR_LAUNCH_ZHM group:GROUP_ACCOUNT_STATUS] boolValue]];
[textField_exposure setStringValue:[account preferenceForKey:KEY_ZEPHYR_EXPOSURE group:GROUP_ACCOUNT_STATUS]];
[textField_encoding setStringValue:[account preferenceForKey:KEY_ZEPHYR_ENCODING group:GROUP_ACCOUNT_STATUS]];
[self updateControlAvailability];
}
- (IBAction)changedPreference:(id)sender
{
if (sender == checkBox_exportAnyone) {
[account setPreference:[NSNumber numberWithBool:[sender state]]
forKey:KEY_ZEPHYR_EXPORT_ANYONE
group:GROUP_ACCOUNT_STATUS];
} else if (sender == checkBox_exportSubs) {
[account setPreference:[NSNumber numberWithBool:[sender state]]
forKey:KEY_ZEPHYR_EXPORT_SUBS
group:GROUP_ACCOUNT_STATUS];
} else if (sender == checkBox_launchZhm) {
[account setPreference:[NSNumber numberWithBool:[sender state]]
forKey:KEY_ZEPHYR_LAUNCH_ZHM
group:GROUP_ACCOUNT_STATUS];
} else if (sender == textField_exposure) {
NSString *exposure = [sender stringValue];
[account setPreference:([exposure length] ? exposure : nil)
forKey:KEY_ZEPHYR_EXPOSURE
group:GROUP_ACCOUNT_STATUS];
} else if (sender == textField_encoding) {
NSString *encoding = [sender stringValue];
[account setPreference:([encoding length] ? encoding : nil)
forKey:KEY_ZEPHYR_ENCODING
group:GROUP_ACCOUNT_STATUS];
} else {
[super changedPreference:sender];
}
}
// We are the data source for the table we use to show server names
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
NSArray *ray = [account preferenceForKey:KEY_ZEPHYR_SERVERS group:GROUP_ACCOUNT_STATUS];
NSParameterAssert(rowIndex >= 0 && rowIndex < [ray count]);
return [ray objectAtIndex:rowIndex];
}
- (void)tableView:(NSTableView *)aTableView setObjectValue:anObject forTableColumn:(NSTableColumn *)aTableColumn row:(NSInteger)rowIndex
{
NSMutableArray *ray = [[account preferenceForKey:KEY_ZEPHYR_SERVERS group:GROUP_ACCOUNT_STATUS] mutableCopy];
NSParameterAssert(rowIndex >= 0 && rowIndex < [ray count]);
[ray replaceObjectAtIndex:rowIndex withObject:anObject];
[account setPreference:ray
forKey:KEY_ZEPHYR_SERVERS
group:GROUP_ACCOUNT_STATUS];
[ray release];
}
- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
{
return [[account preferenceForKey:KEY_ZEPHYR_SERVERS group:GROUP_ACCOUNT_STATUS] count];
}
- (IBAction)addOrRemoveRowToServerList:(id)sender {
NSInteger selectedSegment = [sender selectedSegment];
switch (selectedSegment) {
case 0:
[self addRowToServerList];
break;
case 1:
[self removeSelectedRowFromServerList];
break;
}
}
/*!
* @brief Add a new server to the list of servers.
*/
- (void)addRowToServerList {
NSArray *ray = [[account preferenceForKey:KEY_ZEPHYR_SERVERS group:GROUP_ACCOUNT_STATUS] retain];
[account setPreference:[ray arrayByAddingObject:@""]
forKey:KEY_ZEPHYR_SERVERS
group:GROUP_ACCOUNT_STATUS];
[tableView_servers reloadData];
[tableView_servers selectRowIndexes:[NSIndexSet indexSetWithIndex:[ray count]] byExtendingSelection:NO];
[tableView_servers editColumn:0 row:[ray count] withEvent:nil select:YES];
[ray release];
}
/*!
* @brief Remove the selected row from the list of servers.
*/
- (void)removeSelectedRowFromServerList {
NSInteger idx = [tableView_servers selectedRow];
if (idx != -1) {
NSMutableArray *ray = [[account preferenceForKey:KEY_ZEPHYR_SERVERS group:GROUP_ACCOUNT_STATUS] mutableCopy];
[ray removeObjectAtIndex:idx];
[account setPreference:ray
forKey:KEY_ZEPHYR_SERVERS
group:GROUP_ACCOUNT_STATUS];
[ray release];
[tableView_servers reloadData];
}
}
/*!
* @brief Selection change
*/
- (void)tableViewSelectionDidChange:(NSNotification *)notification
{
[self updateControlAvailability];
}
@end