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