Changeset 4759

Show
Ignore:
Timestamp:
05/13/07 01:32:31 (1 year ago)
Author:
morris
Message:

Make preferences apply directly upon changing them

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • WiredClient/trunk/English.lproj/Preferences.nib/info.nib

    r4631 r4759  
    1616        </array> 
    1717        <key>IBSystem Version</key> 
    18         <string>8L2127</string> 
    19         <key>IBUserGuides</key> 
    20         <dict> 
    21                 <key>5</key> 
    22                 <dict> 
    23                         <key>guideLocations</key> 
    24                         <array> 
    25                                 <string>Horizontal:234.000000</string> 
    26                         </array> 
    27                         <key>guidesLocked</key> 
    28                         <false/> 
    29                 </dict> 
    30         </dict> 
     18        <string>8P2137</string> 
    3119</dict> 
    3220</plist> 
  • WiredClient/trunk/English.lproj/ReleaseNotes.rtf

    r4751 r4759  
    4040- Add function to overwrite existing file when starting a transfer\ 
    4141- Show ETA and path for transfers in user info\ 
     42- Make preferences apply directly upon changing them\ 
    4243- Localization updates 
    4344\f0\b \cf2 \ 
  • WiredClient/trunk/WCPreferences.m

    r4751 r4759  
    3636@interface WCPreferences(Private) 
    3737 
     38- (void)_addTouchActionsToSubviewsInView:(NSView *)view; 
     39 
    3840- (void)_validate; 
    3941 
     
    4648- (void)_loadSettings; 
    4749- (void)_saveSettings; 
     50 
    4851- (void)_selectBookmark; 
    4952- (void)_unselectBookmark; 
    50 - (void)_updateEvents
     53- (void)_selectEvent
    5154- (void)_touchEvents; 
    5255- (void)_selectTrackerBookmark; 
    5356- (void)_unselectTrackerBookmark; 
    5457 
    55 - (void)_setIcon:(NSImage *)icon; 
    56  
    5758@end 
    5859 
    5960 
    6061@implementation WCPreferences(Private) 
     62 
     63- (void)_addTouchActionsToSubviewsInView:(NSView *)view { 
     64        NSEnumerator    *enumerator, *tabViewEnumerator; 
     65        NSTabViewItem   *tabViewItem; 
     66        id                              subview; 
     67         
     68        enumerator = [[view subviews] objectEnumerator]; 
     69         
     70        while((subview = [enumerator nextObject])) { 
     71                if([subview isKindOfClass:[NSTabView class]]) { 
     72                        tabViewEnumerator = [[subview tabViewItems] objectEnumerator]; 
     73                         
     74                        while((tabViewItem = [tabViewEnumerator nextObject])) { 
     75                                [self _addTouchActionsToSubviewsInView:[tabViewItem view]]; 
     76                        } 
     77                } else { 
     78                        if([subview isKindOfClass:[NSControl class]]) { 
     79                                if(![subview target]) { 
     80                                        [subview setTarget:self]; 
     81                                        [subview setAction:@selector(touch:)]; 
     82                                } 
     83                        } 
     84                         
     85                        [self _addTouchActionsToSubviewsInView:subview]; 
     86                } 
     87        } 
     88} 
     89 
     90 
     91 
     92#pragma mark - 
    6193 
    6294- (void)_validate { 
     
    406438 
    407439        // --- events 
    408         [self _updateEvents]; 
     440        [self _selectEvent]; 
    409441         
    410442        // --- files 
     
    426458 
    427459- (void)_saveSettings { 
     460        NSMutableDictionary     *event; 
     461        NSImage                         *image; 
     462        NSString                        *string; 
     463        NSData                          *data; 
     464        int                                     tag; 
     465 
    428466        // --- general 
    429467        if(![[_nickTextField stringValue] isEqualToString:[WCSettings objectForKey:WCNick]]) { 
     
    435473                [WCSettings setObject:[_statusTextField stringValue] forKey:WCStatus]; 
    436474                [[NSNotificationCenter defaultCenter] postNotificationName:WCStatusDidChange]; 
     475        } 
     476         
     477        image = [_iconImageView image]; 
     478         
     479        if(image) { 
     480                data    = [[NSBitmapImageRep imageRepWithData:[image TIFFRepresentation]] representationUsingType:NSPNGFileType properties:NULL]; 
     481                string  = [data base64EncodedString]; 
     482        } else { 
     483                string  = @""; 
     484        } 
     485         
     486        if(![string isEqualToString:[WCSettings objectForKey:WCCustomIcon]]) { 
     487                [WCSettings setObject:string forKey:WCCustomIcon]; 
     488                [[NSNotificationCenter defaultCenter] postNotificationName:WCIconDidChange]; 
    437489        } 
    438490         
     
    476528        [WCSettings setObject:[_previewTextColorWell color] forKey:WCPreviewTextColor]; 
    477529        [WCSettings setObject:[_previewBackgroundColorWell color] forKey:WCPreviewBackgroundColor]; 
    478  
    479         // --- bookmarks 
    480         [self _unselectBookmark]; 
    481530 
    482531        // --- chat 
     
    494543         
    495544        // --- events 
    496         [self _updateEvents]; 
     545        tag = [_eventsPopUpButton tagOfSelectedItem]; 
     546        event = [[WCSettings eventForTag:tag] mutableCopy]; 
     547        [event setInt:tag forKey:WCEventsEvent]; 
     548        [event setBool:[_playSoundButton state] forKey:WCEventsPlaySound]; 
     549        [event setObject:[_soundsPopUpButton titleOfSelectedItem] forKey:WCEventsSound]; 
     550        [event setBool:[_bounceInDockButton state] forKey:WCEventsBounceInDock]; 
     551        [event setBool:[_postInChatButton state] forKey:WCEventsPostInChat]; 
     552        [event setBool:[_showDialogButton state] forKey:WCEventsShowDialog]; 
     553        [WCSettings setEvent:event forTag:tag]; 
     554        [event release]; 
    497555 
    498556        // --- files 
     
    504562        [WCSettings setBool:[_removeTransfersButton state] forKey:WCRemoveTransfers]; 
    505563 
    506         // --- trackers 
    507         [self _unselectTrackerBookmark]; 
    508  
    509564        [[NSNotificationCenter defaultCenter] postNotificationName:WCPreferencesDidChange object:self]; 
    510565} 
    511566 
    512567 
     568 
     569#pragma mark - 
    513570 
    514571- (void)_selectBookmark { 
     
    616673 
    617674 
    618 - (void)_updateEvents { 
    619         NSMutableDictionary     *newEvent; 
    620         NSDictionary            *event; 
    621         int                                     tag; 
    622         BOOL                            on; 
    623          
    624         if(_selectedEvent > 0) { 
    625                 newEvent = [[WCSettings eventForTag:_selectedEvent] mutableCopy]; 
    626                 [newEvent setInt:_selectedEvent forKey:WCEventsEvent]; 
    627                 [newEvent setBool:[_playSoundButton state] forKey:WCEventsPlaySound]; 
    628                 [newEvent setObject:[_soundsPopUpButton titleOfSelectedItem] forKey:WCEventsSound]; 
    629                 [newEvent setBool:[_bounceInDockButton state] forKey:WCEventsBounceInDock]; 
    630                 [newEvent setBool:[_postInChatButton state] forKey:WCEventsPostInChat]; 
    631                 [newEvent setBool:[_showDialogButton state] forKey:WCEventsShowDialog]; 
    632                 [WCSettings setEvent:newEvent forTag:_selectedEvent]; 
    633                 [newEvent release]; 
    634         } 
     675- (void)_selectEvent { 
     676        NSDictionary    *event; 
     677        int                             tag; 
     678        BOOL                    on; 
    635679         
    636680        tag = [_eventsPopUpButton tagOfSelectedItem]; 
     
    652696 
    653697        [self _touchEvents]; 
    654          
    655         _selectedEvent = tag; 
    656698} 
    657699 
     
    714756         
    715757        [trackerBookmark release]; 
    716 } 
    717  
    718  
    719  
    720 #pragma mark - 
    721  
    722 - (void)_setIcon:(NSImage *)icon { 
    723         NSData          *data; 
    724  
    725         icon = [icon scaledImageWithSize:NSMakeSize(32.0, 32.0)]; 
    726          
    727         data = [[NSBitmapImageRep imageRepWithData:[icon TIFFRepresentation]] representationUsingType:NSPNGFileType properties:NULL]; 
    728         [WCSettings setObject:[data base64EncodedString] forKey:WCCustomIcon]; 
    729          
    730         [[NSNotificationCenter defaultCenter] postNotificationName:WCIconDidChange]; 
    731  
    732         [_iconImageView setImage:icon]; 
    733758} 
    734759 
     
    803828        [[self window] center]; 
    804829 
     830        [self _addTouchActionsToSubviewsInView:[[self window] contentView]]; 
     831 
    805832        [self _loadSettings]; 
    806833        [self _selectTab:@"General"]; 
    807834         
    808         [_interfaceTabView selectFirstTabViewItem:NULL]; 
    809         [_chatTabView selectFirstTabViewItem:NULL]; 
     835        [_interfaceTabView selectFirstTabViewItem:self]; 
     836        [_chatTabView selectFirstTabViewItem:self]; 
    810837} 
    811838 
     
    813840 
    814841- (void)windowWillClose:(NSNotification *)notification { 
    815         [self _saveSettings]; 
     842        [self _unselectBookmark]; 
     843        [self _unselectTrackerBookmark]; 
    816844} 
    817845 
     
    908936#pragma mark - 
    909937 
     938- (IBAction)showWindow:(id)sender { 
     939        [[self window] setTitle:[[_preferencesTabView selectedTabViewItem] label]]; 
     940         
     941        [super showWindow:self]; 
     942} 
     943 
     944 
     945 
     946#pragma mark - 
     947 
    910948- (void)selectToolbarItem:(id)sender { 
    911949        NSTabViewItem   *item; 
     
    919957 
    920958 
    921 - (void)changeChatFont:(id)sender { 
    922         NSFont          *font; 
    923          
    924         font = [sender convertFont:[WCSettings objectForKey:WCChatFont]]; 
    925         [WCSettings setObject:font forKey:WCChatFont]; 
    926         [_chatFontTextField setStringValue:[font displayNameWithSize]]; 
    927 
    928  
    929  
    930  
    931 - (void)changeChatUserListFont:(id)sender { 
    932         NSFont          *font; 
    933          
    934         font = [sender convertFont:[WCSettings objectForKey:WCChatUserListFont]]; 
    935         [WCSettings setObject:font forKey:WCChatUserListFont]; 
    936         [_chatUserListFontTextField setStringValue:[font displayNameWithSize]]; 
    937 
    938  
    939  
    940  
    941 - (void)changeMessagesFont:(id)sender { 
    942         NSFont          *font; 
    943          
    944         font = [sender convertFont:[WCSettings objectForKey:WCMessagesFont]]; 
    945         [WCSettings setObject:font forKey:WCMessagesFont]; 
    946         [_messagesFontTextField setStringValue:[font displayNameWithSize]]; 
    947 
    948  
    949  
    950  
    951 - (void)changeMessagesListFont:(id)sender { 
    952         NSFont          *font; 
    953          
    954         font = [sender convertFont:[WCSettings objectForKey:WCMessagesListFont]]; 
    955         [WCSettings setObject:font forKey:WCMessagesListFont]; 
    956         [_messagesListFontTextField setStringValue:[font displayNameWithSize]]; 
    957 
    958  
    959  
    960  
    961 - (void)changeNewsFont:(id)sender { 
    962         NSFont          *font; 
    963          
    964         font = [sender convertFont:[WCSettings objectForKey:WCNewsFont]]; 
    965         [WCSettings setObject:font forKey:WCNewsFont]; 
    966         [_newsFontTextField setStringValue:[font displayNameWithSize]]; 
    967          
    968         font = [[NSFontManager sharedFontManager] convertFont:font toHaveTrait:NSBoldFontMask]; 
    969         [WCSettings setObject:font forKey:WCNewsTitlesFont]; 
    970 
    971  
    972  
    973  
    974 - (void)changeFilesFont:(id)sender { 
    975         NSFont          *font; 
    976          
    977         font = [sender convertFont:[WCSettings objectForKey:WCFilesFont]]; 
    978         [WCSettings setObject:font forKey:WCFilesFont]; 
    979         [_filesFontTextField setStringValue:[font displayNameWithSize]]; 
    980 
    981  
    982  
    983  
    984 - (void)changePreviewFont:(id)sender { 
    985         NSFont          *font; 
    986          
    987         font = [sender convertFont:[WCSettings objectForKey:WCPreviewFont]]; 
    988         [WCSettings setObject:font forKey:WCPreviewFont]; 
    989         [_previewFontTextField setStringValue:[font displayNameWithSize]]; 
    990 
    991  
    992  
    993  
    994 #pragma mark - 
    995  
    996 - (IBAction)showWindow:(id)sender { 
    997         [[self window] setTitle:[[_preferencesTabView selectedTabViewItem] label]]; 
    998          
    999         [super showWindow:self]; 
     959- (void)touch:(id)sender { 
     960        [self _saveSettings]; 
    1000961} 
    1001962 
     
    1003964 
    1004965- (IBAction)icon:(id)sender { 
    1005         [self _setIcon:[_iconImageView image]]; 
     966        [self _saveSettings]; 
    1006967} 
    1007968 
     
    1034995                image = [NSImage imageWithData:data]; 
    1035996                 
    1036                 if(image) 
    1037                         [self _setIcon:image]; 
     997                if(image) { 
     998                        [_iconImageView setImage:[image scaledImageWithSize:NSMakeSize(32.0, 32.0)]]; 
     999                         
     1000                        [self _saveSettings]; 
     1001                } 
    10381002        } 
    10391003} 
     
    10431007- (IBAction)clearIcon:(id)sender { 
    10441008        [_iconImageView setImage:NULL]; 
    1045  
    1046         [WCSettings setObject:@"" forKey:WCCustomIcon]; 
    1047         [[NSNotificationCenter defaultCenter] postNotificationName:WCIconDidChange]; 
     1009         
     1010        [self _saveSettings]; 
    10481011} 
    10491012 
     
    10931056 
    10941057 
     1058- (void)changeChatFont:(id)sender { 
     1059        NSFont          *font; 
     1060         
     1061        font = [sender convertFont:[WCSettings objectForKey:WCChatFont]]; 
     1062        [WCSettings setObject:font forKey:WCChatFont]; 
     1063        [_chatFontTextField setStringValue:[font displayNameWithSize]]; 
     1064         
     1065        [self _saveSettings]; 
     1066} 
     1067 
     1068 
     1069 
     1070- (void)changeChatUserListFont:(id)sender { 
     1071        NSFont          *font; 
     1072         
     1073        font = [sender convertFont:[WCSettings objectForKey:WCChatUserListFont]]; 
     1074        [WCSettings setObject:font forKey:WCChatUserListFont]; 
     1075        [_chatUserListFontTextField setStringValue:[font displayNameWithSize]]; 
     1076         
     1077        [self _saveSettings]; 
     1078} 
     1079 
     1080 
     1081 
     1082- (void)changeMessagesFont:(id)sender { 
     1083        NSFont          *font; 
     1084         
     1085        font = [sender convertFont:[WCSettings objectForKey:WCMessagesFont]]; 
     1086        [WCSettings setObject:font forKey:WCMessagesFont]; 
     1087        [_messagesFontTextField setStringValue:[font displayNameWithSize]]; 
     1088         
     1089        [self _saveSettings]; 
     1090} 
     1091 
     1092 
     1093 
     1094- (void)changeMessagesListFont:(id)sender { 
     1095        NSFont          *font; 
     1096         
     1097        font = [sender convertFont:[WCSettings objectForKey:WCMessagesListFont]]; 
     1098        [WCSettings setObject:font forKey:WCMessagesListFont]; 
     1099        [_messagesListFontTextField setStringValue:[font displayNameWithSize]]; 
     1100         
     1101        [self _saveSettings]; 
     1102} 
     1103 
     1104 
     1105 
     1106- (void)changeNewsFont:(id)sender { 
     1107        NSFont          *font; 
     1108         
     1109        font = [sender convertFont:[WCSettings objectForKey:WCNewsFont]]; 
     1110        [WCSettings setObject:font forKey:WCNewsFont]; 
     1111        [_newsFontTextField setStringValue:[font displayNameWithSize]]; 
     1112         
     1113        [WCSettings setObject:[font boldFont] forKey:WCNewsTitlesFont]; 
     1114         
     1115        [self _saveSettings]; 
     1116} 
     1117 
     1118 
     1119 
     1120- (void)changeFilesFont:(id)sender { 
     1121        NSFont          *font; 
     1122         
     1123        font = [sender convertFont:[WCSettings objectForKey:WCFilesFont]]; 
     1124        [WCSettings setObject:font forKey:WCFilesFont]; 
     1125        [_filesFontTextField setStringValue:[font displayNameWithSize]]; 
     1126         
     1127        [self _saveSettings]; 
     1128} 
     1129 
     1130 
     1131 
     1132- (void)changePreviewFont:(id)sender { 
     1133        NSFont          *font; 
     1134         
     1135        font = [sender convertFont:[WCSettings objectForKey:WCPreviewFont]]; 
     1136        [WCSettings setObject:font forKey:WCPreviewFont]; 
     1137        [_previewFontTextField setStringValue:[font displayNameWithSize]]; 
     1138         
     1139        [self _saveSettings]; 
     1140} 
     1141 
     1142 
     1143 
    10951144- (IBAction)showColorPanel:(id)sender { 
    10961145        NSColorPanel    *colorPanel; 
     
    11041153        colorPanel = [NSColorPanel sharedColorPanel]; 
    11051154        [colorPanel setTarget:self]; 
    1106         [colorPanel setAction:@selector(selectHighlightColor:)]; 
     1155        [colorPanel setAction:@selector(changeHighlightColor:)]; 
    11071156        [colorPanel setColor:NSColorFromString([[WCSettings highlightAtIndex:row] objectForKey:WCHighlightsColor])]; 
    11081157        [colorPanel makeKeyAndOrderFront:self]; 
     
    11111160 
    11121161 
    1113 - (IBAction)selectHighlightColor:(id)sender { 
     1162- (void)changeHighlightColor:(id)sender { 
    11141163        NSMutableDictionary             *highlight; 
    11151164        int                                             row; 
     
    11271176                 
    11281177                [_highlightsTableView reloadData]; 
     1178                 
     1179                [self _saveSettings]; 
    11291180        } 
    11301181} 
     
    11331184 
    11341185- (IBAction)selectEvent:(id)sender { 
    1135         [self _updateEvents]; 
     1186        [self _selectEvent]; 
    11361187} 
    11371188 
     
    11431194        if(sender == _playSoundButton && [_playSoundButton state]) 
    11441195                [NSSound playSoundNamed:[_soundsPopUpButton titleOfSelectedItem]]; 
     1196         
     1197        [self _saveSettings]; 
    11451198} 
    11461199 
     
    11491202- (IBAction)selectSound:(id)sender { 
    11501203        [NSSound playSoundNamed:[_soundsPopUpButton titleOfSelectedItem]]; 
     1204         
     1205        [self _saveSettings]; 
    11511206} 
    11521207 
     
    11721227 
    11731228- (void)downloadFolderPanelDidEnd:(NSOpenPanel *)openPanel returnCode:(int)returnCode contextInfo:(void *)contextInfo { 
    1174         if(returnCode == NSOKButton) 
     1229        if(returnCode == NSOKButton) { 
    11751230                [_downloadFolderTextField setStringValue:[[openPanel filename] stringByAbbreviatingWithTildeInPath]]; 
     1231         
     1232                [self _saveSettings]; 
     1233        } 
    11761234} 
    11771235