Changeset 3907

Show
Ignore:
Timestamp:
03/17/06 08:29:25 (2 years ago)
Author:
morris
Message:

Add an event for user status change


To facilitate addition of a new event, set up events menu in code instead of nib

Files:

Legend:

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

    r3654 r3907  
    1414        </array> 
    1515        <key>IBSystem Version</key> 
    16         <string>8G32</string> 
     16        <string>8H14</string> 
    1717</dict> 
    1818</plist> 
  • WiredClient/trunk/WCChat.m

    r3903 r3907  
    5252- (void)_printUserLeave:(WCUser *)user; 
    5353- (void)_printUserChange:(WCUser *)user nick:(NSString *)nick; 
     54- (void)_printUserChange:(WCUser *)user status:(NSString *)status; 
    5455- (void)_printUserKick:(WCUser *)victim by:(WCUser *)killer message:(NSString *)message; 
    5556- (void)_printUserBan:(WCUser *)victim by:(WCUser *)killer message:(NSString *)message; 
     
    202203                [user nick], 
    203204                nick]]; 
     205} 
     206 
     207 
     208 
     209- (void)_printUserChange:(WCUser *)user status:(NSString *)status { 
     210        [self printEvent:[NSSWF: 
     211                NSLS(@"%@ changed status to %@", @"Client rename message (nick, status)"), 
     212                [user nick], 
     213                status]]; 
    204214} 
    205215 
     
    814824        } 
    815825 
     826        if(![status isEqualToString:[user status]]) { 
     827                if([[WCSettings eventForTag:WCEventsUserChangedStatus] boolForKey:WCEventsPostInChat]) 
     828                        [self _printUserChange:user status:status]; 
     829                 
     830                [[self connection] postNotificationName:WCServerConnectionTriggeredEvent eventTag:WCEventsUserChangedStatus]; 
     831        } 
     832         
    816833        [user setIdle:[idle intValue]]; 
    817834        [user setAdmin:[admin intValue]]; 
  • WiredClient/trunk/WCPreferences.m

    r3701 r3907  
    3636@interface WCPreferences(Private) 
    3737 
     38- (void)_validate; 
     39 
    3840- (NSToolbar *)_toolbar; 
    3941 
    40 - (void)_validate; 
    41  
     42- (void)_reloadEvents; 
    4243- (void)_selectTab:(NSString *)identifier; 
    4344- (void)_selectTabViewItem:(NSTabViewItem *)item; 
     
    154155#pragma mark - 
    155156 
     157- (void)_reloadEvents { 
     158        NSMutableDictionary             *events, *defaultEvents; 
     159        NSEnumerator                    *enumerator; 
     160        NSDictionary                    *event; 
     161        NSMenuItem                              *item; 
     162        NSNumber                                *tag; 
     163         
     164        [_eventsPopUpButton removeAllItems]; 
     165         
     166        enumerator = [[WCSettings objectForKey:WCEvents] objectEnumerator]; 
     167        events = [NSMutableDictionary dictionary]; 
     168         
     169        while((event = [enumerator nextObject])) 
     170                [events setObject:event forKey:[event objectForKey:WCEventsEvent]]; 
     171 
     172        enumerator = [[[WCSettings defaults] objectForKey:WCEvents] objectEnumerator]; 
     173        defaultEvents = [NSMutableDictionary dictionary]; 
     174         
     175        while((event = [enumerator nextObject])) 
     176                [defaultEvents setObject:event forKey:[event objectForKey:WCEventsEvent]]; 
     177 
     178        enumerator = [[NSArray arrayWithObjects: 
     179                [NSNumber numberWithInt:WCEventsServerConnected], 
     180                [NSNumber numberWithInt:WCEventsServerDisconnected], 
     181                [NSNumber numberWithInt:WCEventsError], 
     182                [NSNumber numberWithInt:0], 
     183                [NSNumber numberWithInt:WCEventsUserJoined], 
     184                [NSNumber numberWithInt:WCEventsUserChangedNick], 
     185                [NSNumber numberWithInt:WCEventsUserChangedStatus], 
     186                [NSNumber numberWithInt:WCEventsUserLeft], 
     187                [NSNumber numberWithInt:WCEventsChatReceived], 
     188                [NSNumber numberWithInt:WCEventsMessageReceived], 
     189                [NSNumber numberWithInt:WCEventsNewsPosted], 
     190                [NSNumber numberWithInt:WCEventsBroadcastReceived], 
     191                [NSNumber numberWithInt:0], 
     192                [NSNumber numberWithInt:WCEventsTransferStarted], 
     193                [NSNumber numberWithInt:WCEventsTransferFinished], 
     194                NULL] objectEnumerator]; 
     195         
     196        while((tag = [enumerator nextObject])) { 
     197                if([tag intValue] == 0) { 
     198                        [[_eventsPopUpButton menu] addItem:[NSMenuItem separatorItem]]; 
     199                } else { 
     200                        event = [events objectForKey:tag]; 
     201                         
     202                        if(!event) { 
     203                                event = [defaultEvents objectForKey:tag]; 
     204                                [events setObject:event forKey:tag]; 
     205                        } 
     206 
     207                        item = [[NSMenuItem alloc] initWithTitle:@"" action:NULL keyEquivalent:@""]; 
     208                        [item setTag:[tag intValue]]; 
     209                         
     210                        switch([item tag]) { 
     211                                case WCEventsServerConnected: 
     212                                        [item setTitle:NSLS(@"Server Connected", @"Event")]; 
     213                                        break; 
     214 
     215                                case WCEventsServerDisconnected: 
     216                                        [item setTitle:NSLS(@"Server Disconnected", @"Event")]; 
     217                                        break; 
     218 
     219                                case WCEventsError: 
     220                                        [item setTitle:NSLS(@"Error", @"Event")]; 
     221                                        break; 
     222 
     223                                case WCEventsUserJoined: 
     224                                        [item setTitle:NSLS(@"User Joined", @"Event")]; 
     225                                        break; 
     226 
     227                                case WCEventsUserChangedNick: 
     228                                        [item setTitle:NSLS(@"User Changed Nick", @"Event")]; 
     229                                        break; 
     230 
     231                                case WCEventsUserChangedStatus: 
     232                                        [item setTitle:NSLS(@"User Changed Status", @"Event")]; 
     233                                        break; 
     234 
     235                                case WCEventsUserLeft: 
     236                                        [item setTitle:NSLS(@"User Left", @"Event")]; 
     237                                        break; 
     238 
     239                                case WCEventsChatReceived: 
     240                                        [item setTitle:NSLS(@"Chat Received", @"Event")]; 
     241                                        break; 
     242 
     243                                case WCEventsMessageReceived: 
     244                                        [item setTitle:NSLS(@"Message Received", @"Event")]; 
     245                                        break; 
     246 
     247                                case WCEventsNewsPosted: 
     248                                        [item setTitle:NSLS(@"News Posted", @"Event")]; 
     249                                        break; 
     250 
     251                                case WCEventsBroadcastReceived: 
     252                                        [item setTitle:NSLS(@"Broadcast Received", @"Event")]; 
     253                                        break; 
     254 
     255                                case WCEventsTransferStarted: 
     256                                        [item setTitle:NSLS(@"Transfer Started", @"Event")]; 
     257                                        break; 
     258 
     259                                case WCEventsTransferFinished: 
     260                                        [item setTitle:NSLS(@"Transfer Finished", @"Event")]; 
     261                                        break; 
     262                        } 
     263                         
     264                        if([event boolForKey:WCEventsPlaySound] || [event boolForKey:WCEventsBounceInDock] || [event boolForKey:WCEventsPostInChat]) 
     265                                [item setImage:[NSImage imageNamed:@"EventOn"]]; 
     266                        else 
     267                                [item setImage:[NSImage imageNamed:@"EventOff"]]; 
     268                         
     269                        [[_eventsPopUpButton menu] addItem:item]; 
     270                } 
     271        } 
     272         
     273        [WCSettings setObject:[events allValues] forKey:WCEvents]; 
     274} 
     275 
     276 
     277 
    156278- (void)_selectTab:(NSString *)identifier { 
    157279        NSTabViewItem   *item; 
     
    203325 
    204326- (void)_loadSettings { 
    205         NSEnumerator            *enumerator; 
    206         NSDictionary            *event; 
    207         NSMenuItem                      *menuItem; 
    208         BOOL                            on; 
    209          
    210327        // --- general 
    211328        [_nickTextField setStringValue:[WCSettings objectForKey:WCNick]]; 
     
    280397 
    281398        // --- events 
    282         enumerator = [[WCSettings objectForKey:WCEvents] objectEnumerator]; 
    283          
    284         while((event = [enumerator nextObject])) { 
    285                 menuItem = [_eventsPopUpButton itemWithTag:[event intForKey:WCEventsEvent]]; 
    286                 on = [event boolForKey:WCEventsPlaySound] || 
    287                          [event boolForKey:WCEventsBounceInDock] || 
    288                          [event boolForKey:WCEventsPostInChat]; 
    289                 [menuItem setImage:[NSImage imageNamed:on ? @"EventOn" : @"EventOff"]]; 
    290         } 
    291          
    292399        [self _updateEvents]; 
    293400         
     
    504611        [_postInChatButton setState:[event boolForKey:WCEventsPostInChat]]; 
    505612         
    506         on = (tag == WCEventsUserJoined || tag == WCEventsUserChangedNick || tag == WCEventsUserLeft); 
     613        on = (tag == WCEventsUserJoined || tag == WCEventsUserChangedNick || tag == WCEventsUserLeft || tag == WCEventsUserChangedStatus); 
    507614        [_postInChatButton setEnabled:on]; 
    508615 
     
    678785        [_trackerBookmarksTableView registerForDraggedTypes:[NSArray arrayWithObject:WCTrackerBookmarkPboardType]]; 
    679786         
     787        [self _reloadEvents]; 
     788         
    680789        sounds = [[NSFileManager defaultManager] libraryResourcesForTypes:[NSSound soundUnfilteredFileTypes] 
    681790                                                                                                                  inDirectory:@"Sounds"]; 
  • WiredClient/trunk/WCSettings.h

    r3570 r3907  
    124124#define WCEventsTransferStarted                                                 11 
    125125#define WCEventsTransferFinished                                                12 
     126#define WCEventsUserChangedStatus                                               13 
    126127#define WCEventsPlaySound                                                       @"WCEventsPlaySound" 
    127128#define WCEventsSound                                                           @"WCEventsSound" 
  • WiredClient/trunk/WCSettings.m

    r3660 r3907  
    314314                                [NSNumber numberWithInt:WCEventsTransferFinished],              WCEventsEvent, 
    315315                                NULL], 
     316                        [NSDictionary dictionaryWithObjectsAndKeys: 
     317                                [NSNumber numberWithInt:WCEventsUserChangedStatus],             WCEventsEvent, 
     318                                [NSNumber numberWithBool:NO],                                                   WCEventsPostInChat, 
     319                                NULL], 
    316320                        NULL], 
    317321                        WCEvents,