Source/AIMentionAdvancedPreferences.m
author Zachary West <zacw@adium.im>
Fri Oct 30 21:35:07 2009 -0400 (2009-10-30)
changeset 2695 4b83d8a50824
parent 2681 594253d97431
child 2899 9360ad095234
permissions -rw-r--r--
Set the Mention Advn Pref's text using -setStringValue: on its normal NSTextField, since we don't want it resizing itself. Fixes #13275.
zacw@1445
     1
//
zacw@1445
     2
//  AIMentionAdvancedPreferences.m
zacw@1445
     3
//  Adium
zacw@1445
     4
//
zacw@1445
     5
//  Created by Zachary West on 2009-03-31.
zacw@1445
     6
//
zacw@1445
     7
zacw@1445
     8
#import "AIMentionAdvancedPreferences.h"
zacw@1445
     9
#import "AIPreferenceWindowController.h"
zacw@1445
    10
zacw@1445
    11
#import <AIUtilities/AIImageAdditions.h>
zacw@1445
    12
#import <AIUtilities/AIArrayAdditions.h>
zacw@1445
    13
zacw@1445
    14
#define PREF_KEY_MENTIONS		@"Saved Mentions"
zacw@1445
    15
zacw@1445
    16
@interface AIMentionAdvancedPreferences()
zacw@1445
    17
- (void)saveTerms;
zacw@1445
    18
@end
zacw@1445
    19
zacw@1445
    20
@implementation AIMentionAdvancedPreferences
zacw@1445
    21
zacw@1445
    22
#pragma mark Preference pane settings
zacw@1445
    23
- (AIPreferenceCategory)category
zacw@1445
    24
{
zacw@1445
    25
    return AIPref_Advanced;
zacw@1445
    26
}
zacw@1445
    27
- (NSString *)label{
zacw@1445
    28
    return AILocalizedString(@"Mention",nil);
zacw@1445
    29
}
zacw@1445
    30
- (NSString *)nibName{
zacw@1445
    31
    return @"AIMentionAdvancedPreferences";
zacw@1445
    32
}
zacw@1445
    33
- (NSImage *)image{
zacw@2681
    34
	return [NSImage imageNamed:@"pref-mention" forClass:[AIPreferenceWindowController class]];
zacw@1445
    35
}
zacw@1445
    36
zacw@1445
    37
- (void)saveTerms
zacw@1445
    38
{
zacw@1445
    39
	NSMutableArray *termsCopy = [[mentionTerms mutableCopy] autorelease];
zacw@1445
    40
	
zacw@1445
    41
	// Never save a blank term.
zacw@1445
    42
	[termsCopy removeObject:@""];
zacw@1445
    43
	
zacw@1445
    44
	[adium.preferenceController setPreference:termsCopy
zacw@1445
    45
									   forKey:PREF_KEY_MENTIONS
zacw@1445
    46
										group:PREF_GROUP_GENERAL];
zacw@1445
    47
}
zacw@1445
    48
zacw@1445
    49
/*!
zacw@1445
    50
 * @brief Add a new row, select it for editing
zacw@1445
    51
 */
zacw@1445
    52
- (IBAction)add:(id)sender
zacw@1445
    53
{
zacw@1445
    54
	[mentionTerms addObject:@""];
zacw@1445
    55
	
zacw@1445
    56
	[tableView reloadData];
zacw@1445
    57
	
zacw@1445
    58
	NSInteger index = mentionTerms.count-1;
zacw@1445
    59
	[tableView selectRowIndexes:[NSIndexSet indexSetWithIndex:index] byExtendingSelection:NO];
zacw@1445
    60
	[tableView editColumn:0 row:index withEvent:nil select:YES];
zacw@1445
    61
}
zacw@1445
    62
zacw@1445
    63
/*!
zacw@1445
    64
 * @brief Remove the selected rows
zacw@1445
    65
 */
zacw@1445
    66
- (IBAction)remove:(id)sender
zacw@1445
    67
{
zacw@1445
    68
	NSIndexSet *indexes = [tableView selectedRowIndexes];
zacw@1445
    69
	
zacw@1445
    70
	[mentionTerms removeObjectsAtIndexes:indexes];
zacw@1445
    71
	[self saveTerms];
zacw@1445
    72
	
zacw@1445
    73
	[tableView reloadData];
zacw@1445
    74
	[tableView deselectAll:nil];
zacw@1445
    75
}
zacw@1445
    76
zacw@1445
    77
/*!
zacw@1445
    78
 * @brief The view loaded
zacw@1445
    79
 */
zacw@1445
    80
- (void)viewDidLoad
zacw@1445
    81
{
zacw@2695
    82
	[label_explanation setStringValue:AILocalizedString(@"Messages are highlighted when the following terms are spoken. Your username is always highlighted.", nil)];
zacw@1445
    83
	
zacw@1445
    84
	mentionTerms = [[NSMutableArray alloc] initWithArray:[adium.preferenceController preferenceForKey:PREF_KEY_MENTIONS group:PREF_GROUP_GENERAL]];
zacw@1445
    85
	
zacw@1445
    86
	[super viewDidLoad];
zacw@1445
    87
}
zacw@1445
    88
zacw@1445
    89
- (void)viewWillClose
zacw@1445
    90
{
zacw@1445
    91
	[mentionTerms release]; mentionTerms = nil;
zacw@1447
    92
	
zacw@1447
    93
	[super viewWillClose];
zacw@1445
    94
}
zacw@1445
    95
zacw@1445
    96
#pragma mark Table view Delegate
zacw@1445
    97
- (NSInteger)numberOfRowsInTableView:(NSTableView *)aTableView
zacw@1445
    98
{
zacw@1445
    99
	return mentionTerms.count;
zacw@1445
   100
}
zacw@1445
   101
zacw@1445
   102
- (id)tableView:(NSTableView *)aTableView objectValueForTableColumn:(NSTableColumn *)tableColumn row:(NSInteger)rowIndex
zacw@1445
   103
{
zacw@1445
   104
	NSString *identifier = tableColumn.identifier;
zacw@1445
   105
	
zacw@1445
   106
	if ([identifier isEqualToString:@"text"]) {
zacw@1445
   107
		return [mentionTerms objectAtIndex:rowIndex];
zacw@1445
   108
	}
zacw@1445
   109
	
zacw@1445
   110
	return nil;
zacw@1445
   111
}
zacw@1445
   112
zacw@1447
   113
- (void)tableView:(NSTableView *)aTableView setObjectValue:(id)object forTableColumn:(NSTableColumn *)tableColumn row:(int)row
zacw@1447
   114
{
zacw@1447
   115
	NSString *identifier = tableColumn.identifier;
zacw@1447
   116
	
zacw@1447
   117
	if ([identifier isEqualToString:@"text"]) {
zacw@1447
   118
		[mentionTerms setObject:object atIndex:row];
zacw@1447
   119
		[self saveTerms];
zacw@1447
   120
	}
zacw@1447
   121
}
zacw@1447
   122
zacw@1445
   123
- (void)tableViewDeleteSelectedRows:(NSTableView *)tableView
zacw@1445
   124
{
zacw@1445
   125
	[self remove:nil];
zacw@1445
   126
}
zacw@1445
   127
zacw@1445
   128
@end