Changeset 4792

Show
Ignore:
Timestamp:
05/27/07 14:29:37 (2 years ago)
Author:
morris
Message:

Key messages/conversation per unique server connection to prevent confusion when reconnecting

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • WiredClient/trunk/WCApplicationController.m

    r4752 r4792  
    2929#import "WCAboutWindow.h" 
    3030#import "WCApplicationController.h" 
     31#import "WCChat.h" 
    3132#import "WCConsole.h" 
    3233#import "WCDock.h" 
     
    587588                case WCEventsMessageReceived: 
    588589                        [GrowlApplicationBridge notifyWithTitle:NSLS(@"Message received", @"Growl event message received title") 
    589                                                                                 description:[NSSWF:@"%@: %@", [[(WCMessage *) info1 user] nick], [info1 message]] 
     590                                                                                description:[NSSWF:@"%@: %@", [info1 userNick], [info1 message]] 
    590591                                                                   notificationName:WCGrowlMessageReceived 
    591                                                                                    iconData:[[[(WCMessage *) info1 user] icon] TIFFRepresentation] 
     592                                                                                   iconData:[[[[connection chat] userWithUserID:[info1 userID]] icon] TIFFRepresentation] 
    592593                                                                                   priority:0.0 
    593594                                                                                   isSticky:NO 
     
    607608                case WCEventsBroadcastReceived: 
    608609                        [GrowlApplicationBridge notifyWithTitle:NSLS(@"Broadcast received", @"Growl event broadcast received title") 
    609                                                                                 description:[NSSWF:@"%@: %@", [[(WCMessage *) info1 user] nick], [info1 message]] 
     610                                                                                description:[NSSWF:@"%@: %@", [info1 userNick], [info1 message]] 
    610611                                                                   notificationName:WCGrowlBroadcastReceived 
    611                                                                                    iconData:[[[(WCMessage *) info1 user] icon] TIFFRepresentation] 
     612                                                                                   iconData:[[[[connection chat] userWithUserID:[info1 userID]] icon] TIFFRepresentation] 
    612613                                                                                   priority:0.0 
    613614                                                                                   isSticky:NO 
  • WiredClient/trunk/WCConversation.h

    r4439 r4792  
    3333@interface WCConversation : WIObject <NSCoding> { 
    3434        WCMessageType                           _type; 
    35         WCUser                                          *_user; 
     35        NSString                                        *_key; 
     36        NSString                                        *_userNick; 
    3637} 
    3738 
    3839 
    39 + (id)messageConversationWithUser:(WCUser *)user; 
    40 + (id)broadcastConversationWithUser:(WCUser *)user; 
     40+ (NSString *)keyForType:(WCMessageType)type user:(WCUser *)user connection:(WCServerConnection *)connection; 
     41 
     42+ (id)messageConversationWithUser:(WCUser *)user connection:(WCServerConnection *)connection; 
     43+ (id)broadcastConversationWithUser:(WCUser *)user connection:(WCServerConnection *)connection; 
    4144 
    4245- (WCMessageType)type; 
    43 - (WCUser *)user; 
     46- (NSString *)key; 
     47- (NSString *)userNick; 
    4448 
    4549@end 
  • WiredClient/trunk/WCConversation.m

    r4439 r4792  
    3232@interface WCConversation(Private) 
    3333 
    34 - (id)_initWithType:(WCMessageType)type user:(WCUser *)user
     34- (id)_initWithType:(WCMessageType)type user:(WCUser *)user connection:(WCServerConnection *)connection
    3535 
    3636@end 
     
    3939@implementation WCConversation(Private) 
    4040 
    41 - (id)_initWithType:(WCMessageType)type user:(WCUser *)user
     41- (id)_initWithType:(WCMessageType)type user:(WCUser *)user connection:(WCServerConnection *)connection
    4242        self = [super init]; 
    4343         
    4444        _type = type; 
    45         _user = [user retain]; 
     45        _key = [[self class] keyForType:type user:user connection:connection]; 
     46        _userNick = [[user nick] retain]; 
    4647         
    4748        return self; 
     
    5354@implementation WCConversation 
    5455 
    55 + (id)messageConversationWithUser:(WCUser *)user
    56         return [[[self alloc] _initWithType:WCMessagePrivateMessage user:user] autorelease]; 
     56+ (NSString *)keyForType:(WCMessageType)type user:(WCUser *)user connection:(WCServerConnection *)connection
     57        return [NSSWF:@"%u_%u_%u", type, [user userID], [connection connectionID]]; 
    5758} 
    5859 
    5960 
    6061 
    61 + (id)broadcastConversationWithUser:(WCUser *)user { 
    62         return [[[self alloc] _initWithType:WCMessageBroadcast user:user] autorelease]; 
     62#pragma mark - 
     63 
     64+ (id)messageConversationWithUser:(WCUser *)user connection:(WCServerConnection *)connection { 
     65        return [[[self alloc] _initWithType:WCMessagePrivateMessage user:user connection:connection] autorelease]; 
     66
     67 
     68 
     69 
     70+ (id)broadcastConversationWithUser:(WCUser *)user connection:(WCServerConnection *)connection { 
     71        return [[[self alloc] _initWithType:WCMessageBroadcast user:user connection:connection] autorelease]; 
    6372} 
    6473 
     
    7180         
    7281        WIDecode(coder, _type); 
    73         WIDecode(coder, _user); 
     82        WIDecode(coder, _key); 
     83        WIDecode(coder, _userNick); 
    7484         
    7585        return self; 
     
    8090- (void)encodeWithCoder:(NSCoder *)coder { 
    8191        WIEncode(coder, _type); 
    82         WIEncode(coder, _user); 
     92        WIEncode(coder, _key); 
     93        WIEncode(coder, _userNick); 
    8394} 
    8495 
     
    104115                self, 
    105116                type, 
    106                 [self user]]; 
     117                [self userNick]]; 
    107118} 
    108119 
     
    113124                return NO; 
    114125         
    115         return ([self type] == [(WCConversation *) object type]) && 
    116                    ([[self user] isEqual:[(WCConversation *) object user]]); 
     126        return [[self key] isEqualToString:[object key]]; 
    117127} 
    118128 
     
    120130 
    121131- (unsigned int)hash { 
    122         return [[self user] hash]; 
     132        return [[self key] hash]; 
    123133} 
    124134 
     
    133143 
    134144 
    135 - (WCUser *)user { 
    136         return _user; 
     145- (NSString *)key { 
     146        return _key; 
     147
     148 
     149 
     150 
     151- (NSString *)userNick { 
     152        return _userNick; 
    137153} 
    138154 
  • WiredClient/trunk/WCMessage.h

    r4439 r4792  
    4040 
    4141 
    42 @class WCUser; 
     42@class WCConversation, WCUser; 
    4343 
    4444@interface WCMessage : WIObject <NSCoding> { 
     
    4747        unsigned int                                    _userID; 
    4848        BOOL                                                    _read; 
    49         WCUser                                                 *_user
     49        NSString                                               *_userNick
    5050        NSString                                                *_message; 
    5151        NSDate                                                  *_date; 
     52        WCConversation                                  *_conversation; 
    5253} 
    5354 
    5455 
    55 + (id)messageWithArguments:(NSArray *)arguments
    56 + (id)broadcastWithArguments:(NSArray *)arguments
    57 + (id)messageToUser:(WCUser *)user string:(NSString *)string
     56+ (id)messageWithArguments:(NSArray *)arguments user:(WCUser *)user conversation:(WCConversation *)conversation
     57+ (id)broadcastWithArguments:(NSArray *)arguments user:(WCUser *)user conversation:(WCConversation *)conversation
     58+ (id)messageToUser:(WCUser *)user string:(NSString *)string conversation:(WCConversation *)conversation
    5859 
    5960- (WCMessageType)type; 
    6061- (WCMessageDirection)direction; 
    6162- (unsigned int)userID; 
     63- (NSString *)userNick; 
    6264- (NSString *)message; 
    6365- (NSDate *)date; 
     66- (WCConversation *)conversation; 
    6467 
    65 - (void)setUser:(WCUser *)user; 
    66 - (WCUser *)user; 
    6768- (void)setRead:(BOOL)read; 
    6869- (BOOL)isRead; 
  • WiredClient/trunk/WCMessage.m

    r4439 r4792  
    3535 
    3636- (void)_setUserID:(unsigned int)userID; 
     37- (void)_setUserNick:(NSString *)userNick; 
    3738- (void)_setMessage:(NSString *)message; 
    3839- (void)_setDate:(NSDate *)date; 
     40- (void)_setConversation:(WCConversation *)conversation; 
    3941 
    4042@end 
     
    5860- (void)_setUserID:(unsigned int)userID { 
    5961        _userID = userID; 
     62} 
     63 
     64 
     65 
     66- (void)_setUserNick:(NSString *)userNick { 
     67        [userNick retain]; 
     68        [_userNick release]; 
     69 
     70        _userNick = userNick; 
    6071} 
    6172 
     
    7889} 
    7990 
     91 
     92 
     93- (void)_setConversation:(WCConversation *)conversation { 
     94        [conversation retain]; 
     95        [_conversation release]; 
     96 
     97        _conversation = conversation; 
     98} 
     99 
    80100@end 
    81101 
     
    83103@implementation WCMessage 
    84104 
    85 + (id)messageWithArguments:(NSArray *)arguments
     105+ (id)messageWithArguments:(NSArray *)arguments user:(WCUser *)user conversation:(WCConversation *)conversation
    86106        WCMessage       *message; 
    87107 
    88108        message = [[self alloc] _initWithType:WCMessagePrivateMessage direction:WCMessageFrom]; 
    89109        [message _setUserID:[[arguments safeObjectAtIndex:0] unsignedIntValue]]; 
     110        [message _setUserNick:[user nick]]; 
    90111        [message _setMessage:[arguments safeObjectAtIndex:1]]; 
    91112        [message _setDate:[NSDate date]]; 
     113        [message _setConversation:conversation]; 
    92114         
    93115        return [message autorelease]; 
     
    96118 
    97119 
    98 + (id)broadcastWithArguments:(NSArray *)arguments
     120+ (id)broadcastWithArguments:(NSArray *)arguments user:(WCUser *)user conversation:(WCConversation *)conversation
    99121        WCMessage       *message; 
    100122 
    101123        message = [[self alloc] _initWithType:WCMessageBroadcast direction:WCMessageFrom]; 
    102124        [message _setUserID:[[arguments safeObjectAtIndex:0] unsignedIntValue]]; 
     125        [message _setUserNick:[user nick]]; 
    103126        [message _setMessage:[arguments safeObjectAtIndex:1]]; 
    104127        [message _setDate:[NSDate date]]; 
     128        [message _setConversation:conversation]; 
    105129         
    106130        return [message autorelease]; 
     
    109133 
    110134 
    111 + (id)messageToUser:(WCUser *)user string:(NSString *)string
     135+ (id)messageToUser:(WCUser *)user string:(NSString *)string conversation:(WCConversation *)conversation
    112136        WCMessage       *message; 
    113137         
    114138        message = [[self alloc] _initWithType:WCMessagePrivateMessage direction:WCMessageTo]; 
    115139        [message _setUserID:[user userID]]; 
     140        [message _setUserNick:[user nick]]; 
    116141        [message _setDate:[NSDate date]]; 
    117142        [message _setMessage:string]; 
    118          
    119         [message setUser:user]; 
     143        [message _setConversation:conversation]; 
     144         
    120145        [message setRead:YES]; 
    121146 
     
    126151 
    127152- (void)dealloc { 
    128         [_user release]; 
     153        [_userNick release]; 
    129154        [_message release]; 
    130155        [_date release]; 
     156        [_conversation release]; 
    131157 
    132158        [super dealloc]; 
     
    144170        WIDecode(coder, _userID); 
    145171        WIDecode(coder, _read); 
    146         WIDecode(coder, _user); 
     172        WIDecode(coder, _userNick); 
    147173        WIDecode(coder, _message); 
    148174        WIDecode(coder, _date); 
     175        WIDecode(coder, _conversation); 
    149176 
    150177        return self; 
     
    158185        WIEncode(coder, _userID); 
    159186        WIEncode(coder, _read); 
    160         WIEncode(coder, _user); 
     187        WIEncode(coder, _userNick); 
    161188        WIEncode(coder, _message); 
    162189        WIEncode(coder, _date); 
     190        WIEncode(coder, _conversation); 
    163191} 
    164192 
     
    184212                self, 
    185213                type, 
    186                 [self user], 
     214                [self userNick], 
    187215                [self date]]; 
    188216} 
     
    210238 
    211239 
     240- (NSString *)userNick { 
     241        return _userNick; 
     242} 
     243 
     244 
     245 
    212246- (NSString *)message { 
    213247        return _message; 
     
    222256 
    223257 
    224 - (void)setUser:(WCUser *)user { 
    225         [user retain]; 
    226         [_user release]; 
    227          
    228         _user = user; 
    229 
    230  
    231  
    232  
    233 - (WCUser *)user { 
    234         return _user; 
     258- (WCConversation *)conversation { 
     259        return _conversation; 
    235260} 
    236261 
     
    263288        NSComparisonResult      result; 
    264289         
    265         result = [[self user] compareNick:[message user]]; 
     290        result = [[self userNick] compare:[message userNick] options:NSCaseInsensitiveSearch]; 
    266291         
    267292        if(result != NSOrderedSame) 
  • WiredClient/trunk/WCMessages.h

    r4775 r4792  
    5757 
    5858        NSMutableArray                                          *_titles; 
    59         NSMutableArray                                          *_conversations; 
     59        NSMutableArray                                          *_allConversations; 
     60        NSMutableDictionary                                     *_conversations; 
    6061        NSMutableArray                                          *_allMessages; 
    6162        NSMutableArray                                          *_shownMessages; 
  • WiredClient/trunk/WCMessages.m

    r4781 r4792  
    6262 
    6363- (NSArray *)_conversationsForType:(WCMessageType)type; 
    64 - (WCConversation *)_conversationForType:(WCMessageType)type user:(WCUser *)user; 
    6564- (NSArray *)_messagesForType:(WCMessageType)type; 
    6665- (NSArray *)_unreadMessagesForType:(WCMessageType)type; 
    67 - (NSArray *)_messagesForType:(WCMessageType)type fromUser:(WCUser *)user unreadOnly:(BOOL)unreadOnly; 
     66- (NSArray *)_messagesForConversation:(WCConversation *)conversation unreadOnly:(BOOL)unreadOnly; 
    6867- (NSArray *)_messagesSortedForView; 
    6968- (id)_selectedConversation; 
     
    9190        [_titles addObject:NSLS(@"Broadcasts", @"Messages item")]; 
    9291 
    93         _conversations          = [[NSMutableArray alloc] init]; 
     92        _allConversations       = [[NSMutableArray alloc] init]; 
     93        _conversations          = [[NSMutableDictionary alloc] init]; 
    9494        _allMessages            = [[NSMutableArray alloc] init]; 
    9595        _shownMessages          = [[NSMutableArray alloc] init]; 
     
    127127        NSString        *title, *nick, *server, *time; 
    128128         
    129         nick    = [[message user] nick]; 
     129        nick    = [message userNick]; 
    130130        server  = [[self connection] name]; 
    131131        time    = [_dialogDateFormatter stringFromDate:[message date]]; 
     
    198198         
    199199        array = [NSMutableArray array]; 
    200         enumerator = [_conversations objectEnumerator]; 
     200        enumerator = [_allConversations objectEnumerator]; 
    201201         
    202202        while((conversation = [enumerator nextObject])) { 
     
    208208         
    209209        return array; 
    210 } 
    211  
    212  
    213  
    214 - (WCConversation *)_conversationForType:(WCMessageType)type user:(WCUser *)user { 
    215         NSEnumerator    *enumerator; 
    216         WCConversation  *conversation; 
    217          
    218         enumerator = [_conversations objectEnumerator]; 
    219          
    220         while((conversation = [enumerator nextObject])) { 
    221                 if([conversation type] == type && [conversation user] == user) 
    222                         return conversation; 
    223         } 
    224          
    225         return NULL; 
    226210} 
    227211 
     
    264248 
    265249 
    266 - (NSArray *)_messagesForType:(WCMessageType)type fromUser:(WCUser *)user unreadOnly:(BOOL)unreadOnly { 
     250- (NSArray *)_messagesForConversation:(WCConversation *)conversation unreadOnly:(BOOL)unreadOnly { 
    267251        NSEnumerator    *enumerator; 
    268252        NSMutableArray  *array; 
     
    270254         
    271255        array = [NSMutableArray array]; 
    272         enumerator = [unreadOnly ? [self _unreadMessagesForType:type] : [self _messagesForType:type] objectEnumerator]; 
     256        enumerator = [unreadOnly ? [self _unreadMessagesForType:[conversation type]] : [self _messagesForType:[conversation type]] objectEnumerator]; 
    273257         
    274258        while((message = [enumerator nextObject])) { 
    275                 if([[message user] isEqual:user]) 
     259                if([[message conversation] isEqual:conversation]) 
    276260                        [array addObject:message]; 
    277261        } 
     
    397381        NSInteger                       row; 
    398382         
    399         conversation = [self _conversationForType:[message type] user:[message user]]; 
     383        conversation = [message conversation]; 
    400384        row = [_conversationsOutlineView rowForItem:conversation]; 
    401385         
     
    469453 
    470454- (void)_removeAllConversations { 
     455        [_allConversations removeAllObjects]; 
    471456        [_conversations removeAllObjects]; 
    472457        [_conversationsOutlineView reloadData]; 
     
    489474         
    490475        [_titles release]; 
     476        [_allConversations release]; 
    491477        [_conversations release]; 
    492478        [_allMessages release]; 
     
    627613- (void)messagesReceivedMessage:(NSNotification *)notification { 
    628614        NSArray                 *arguments; 
     615        NSString                *key; 
    629616        WCUser                  *user; 
    630617        WCMessage               *message; 
    631618        WCConversation  *conversation; 
    632619 
    633         arguments       = [[notification userInfo] objectForKey:WCArgumentsKey]; 
    634         message         = [WCMessage messageWithArguments:arguments]; 
    635         user            = [[[self connection] chat] userWithUserID:[message userID]]; 
     620        arguments               = [[notification userInfo] objectForKey:WCArgumentsKey]; 
     621        user                    = [[[self connection] chat] userWithUserID:[[arguments safeObjectAtIndex:0] unsignedIntValue]]; 
    636622         
    637623        if(!user || [user isIgnored]) 
    638624                return; 
    639  
    640         [message setUser:user]; 
    641          
     625         
     626        key                             = [WCConversation keyForType:WCMessagePrivateMessage user:user connection:[self connection]]; 
     627        conversation    = [_conversations objectForKey:key]; 
     628         
     629        if(!conversation) { 
     630                conversation = [WCConversation messageConversationWithUser:user connection:[self connection]]; 
     631                [_allConversations addObject:conversation]; 
     632                [_conversations setObject:conversation forKey:[conversation key]]; 
     633 
     634        } 
     635 
     636        message                 = [WCMessage messageWithArguments:arguments user:user conversation:conversation]; 
     637 
    642638        [_allMessages addObject:message]; 
    643          
    644         conversation = [WCConversation messageConversationWithUser:user]; 
    645  
    646         if(![_conversations containsObject:conversation]) 
    647                 [_conversations addObject:conversation]; 
    648639         
    649640        [_conversationsOutlineView reloadData]; 
     
    666657- (void)messagesReceivedBroadcast:(NSNotification *)notification { 
    667658        NSArray                 *arguments; 
     659        NSString                *key; 
    668660        WCUser                  *user; 
    669661        WCMessage               *message; 
    670662        WCConversation  *conversation; 
    671663 
    672         arguments       = [[notification userInfo] objectForKey:WCArgumentsKey]; 
    673         message         = [WCMessage broadcastWithArguments:arguments]; 
    674         user            = [[[self connection] chat] userWithUserID:[message userID]]; 
    675          
     664        arguments               = [[notification userInfo] objectForKey:WCArgumentsKey]; 
     665        user                    = [[[self connection] chat] userWithUserID:[[arguments safeObjectAtIndex:0] unsignedIntValue]]; 
    676666        if(!user || [user isIgnored]) 
    677667                return; 
    678668 
    679         [message setUser:user]; 
     669        key                             = [WCConversation keyForType:WCMessagePrivateMessage user:user connection:[self connection]]; 
     670        conversation    = [_conversations objectForKey:key]; 
     671         
     672        if(!conversation) { 
     673                conversation = [WCConversation messageConversationWithUser:user connection:[self connection]]; 
     674                [_allConversations addObject:conversation]; 
     675                [_conversations setObject:conversation forKey:[conversation key]]; 
     676        } 
     677 
     678        message                 = [WCMessage broadcastWithArguments:arguments user:user conversation:conversation]; 
    680679         
    681680        [_allMessages addObject:message]; 
    682681 
    683         conversation = [WCConversation broadcastConversationWithUser:user]; 
    684  
    685         if(![_conversations containsObject:conversation]) 
    686                 [_conversations addObject:conversation]; 
    687          
    688682        [_conversationsOutlineView reloadData]; 
    689683        [[_conversationsOutlineView delegate] outlineViewSelectionDidChange:NULL]; 
     
    907901- (IBAction)reply:(id)sender { 
    908902        WCMessage   *message; 
     903        WCUser          *user; 
    909904         
    910905        message = [self _selectedMessage]; 
     
    913908                return; 
    914909         
    915         [self showPrivateMessageToUser:[message user]]; 
     910        user = [[[self connection] chat] userWithUserID:[message userID]]; 
     911         
     912        if(user) 
     913                [self showPrivateMessageToUser:user]; 
    916914} 
    917915 
     
    919917 
    920918- (void)replySheetDidEnd:(NSWindow *)sheet returnCode:(int)returnCode contextInfo:(void *)contextInfo { 
     919        NSString                *key; 
    921920        WCMessage               *message; 
    922921        WCConversation  *conversation; 
    923922         
    924923        if(returnCode == NSAlertDefaultReturn) { 
    925                 message = [WCMessage messageToUser:_messageUser string:[[[_replyTextView string] copy] autorelease]]; 
     924                key                             = [WCConversation keyForType:WCMessagePrivateMessage user:_messageUser connection:[self connection]]; 
     925                conversation    = [_conversations objectForKey:key]; 
     926                 
     927                if(!conversation) { 
     928                        conversation = [WCConversation messageConversationWithUser:_messageUser connection:[self connection]]; 
     929                        [_allConversations addObject:conversation]; 
     930                        [_conversations setObject:conversation forKey:[conversation key]]; 
     931                } 
     932                 
     933                message                 = [WCMessage messageToUser:_messageUser string:[[[_replyTextView string] copy] autorelease] conversation:conversation]; 
     934 
    926935                [_allMessages addObject:message]; 
    927936                 
    928                 conversation = [WCConversation messageConversationWithUser:_messageUser]; 
    929  
    930                 if(![_conversations containsObject:conversation]) 
    931                         [_conversations addObject:conversation]; 
    932                  
    933937                [[self connection] sendCommand:WCMessageCommand 
    934                                                   withArgument:[NSSWF:@"%u", [[message user] userID]] 
     938                                                  withArgument:[NSSWF:@"%u", [message userID]] 
    935939                                                  withArgument:[message message]]; 
    936940 
     
    10081012        NSString                        *name = NULL; 
    10091013        NSImage                         *image = NULL; 
    1010         WCUser                          *user; 
    10111014        WCConversation          *conversation; 
    10121015        unsigned int            count = 0; 
     
    10231026        else if([item isKindOfClass:[WCConversation class]]) { 
    10241027                conversation = item; 
    1025                 user = [conversation user]; 
    1026                 name = [user nick]; 
     1028                name = [conversation userNick]; 
    10271029                image = NULL; 
    1028                 count = [[self _messagesForType:[conversation type] fromUser:user unreadOnly:YES] count]; 
     1030                count = [[self _messagesForConversation:conversation unreadOnly:YES] count]; 
    10291031        } 
    10301032         
     
    10431045 
    10441046- (void)outlineView:(NSOutlineView *)outlineView willDisplayCell:(id)cell forTableColumn:(NSTableColumn *)tableColumn item:(id)item { 
    1045         WCUser                          *user; 
    1046         WCConversation          *conversation; 
    1047         unsigned int            count = 0; 
     1047        unsigned int    count = 0; 
    10481048         
    10491049        if([item isKindOfClass:[NSString class]]) { 
     
    10541054        } 
    10551055        else if([item isKindOfClass:[WCConversation class]]) { 
    1056                 conversation = item; 
    1057                 user = [conversation user]; 
    1058                 count = [[self _messagesForType:[conversation type] fromUser:user unreadOnly:YES] count]; 
     1056                count = [[self _messagesForConversation:item unreadOnly:YES] count]; 
    10591057        }        
    10601058 
     
    10781076- (void)outlineViewSelectionDidChange:(NSNotification *)notification { 
    10791077        NSArray                 *messages = NULL; 
    1080         WCUser                  *user; 
    1081         WCConversation  *conversation; 
    10821078        id                              item; 
    10831079 
     
    10911087        } 
    10921088        else if([item isKindOfClass:[WCConversation class]]) { 
    1093                 conversation = item; 
    1094                 user = [conversation user]; 
    1095                 messages = [self _messagesForType:[conversation type] fromUser:user unreadOnly:NO]; 
     1089                messages = [self _messagesForConversation:item unreadOnly:NO]; 
    10961090        } 
    10971091         
     
    11211115        if(column == _userTableColumn) { 
    11221116                if([message direction] == WCMessageTo) 
    1123                         string = [NSSWF:NSLS(@"To: %@", @"Message to (nick)"), [[message user] nick]]; 
     1117                        string = [NSSWF:NSLS(@"To: %@", @"Message to (nick)"), [message userNick]]; 
    11241118                else 
    1125                         string = [NSSWF:NSLS(@"From: %@", @"Message from (nick)"), [[message user] nick]]; 
     1119                        string = [NSSWF:NSLS(@"From: %@", @"Message from (nick)"), [message userNick]]; 
    11261120 
    11271121                return [[NSAttributedString attributedStringWithString:string] attributedStringByApplyingFilter:_userFilter]; 
  • WiredClient/trunk/WCServerConnection.h

    r4751 r4792  
    4242        IBOutlet NSButton                                                               *_connectButton; 
    4343 
     44        NSUInteger                                                                              _connectionID; 
     45         
    4446        NSDictionary                                                                    *_bookmark; 
    4547         
     
    158160- (BOOL)isHidden; 
    159161- (void)setBookmark:(NSDictionary *)bookmark; 
     162- (NSUInteger)connectionID; 
    160163- (NSDictionary *)bookmark; 
    161164- (NSString *)name; 
  • WiredClient/trunk/WCServerConnection.m

    r4775 r4792  
    4747@interface WCServerConnection(Private) 
    4848 
     49+ (NSUInteger)_connectionID; 
     50 
    4951- (id)_initServerConnectionWithURL:(WIURL *)url bookmark:(NSDictionary *)bookmark; 
    5052 
     
    5658 
    5759@implementation WCServerConnection(Private) 
     60 
     61+ (NSUInteger)_connectionID { 
     62        static NSUInteger       connectionID; 
     63         
     64        return ++connectionID; 
     65} 
     66 
     67 
     68 
     69#pragma mark - 
    5870 
    5971- (id)_initServerConnectionWithURL:(WIURL *)url bookmark:(NSDictionary *)bookmark { 
     
    867879        [_progressIndicator startAnimation:self]; 
    868880         
     881        _connectionID   = [[self class] _connectionID]; 
     882         
    869883        _sentLogin              = NO; 
    870884        _loginFailed    = NO; 
     
    9901004 
    9911005 
     1006- (NSUInteger)connectionID { 
     1007        return _connectionID; 
     1008} 
     1009 
     1010 
     1011 
    9921012- (void)setBookmark:(NSDictionary *)bookmark { 
    9931013        [bookmark retain];