| 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-- |
| 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 |