Changeset 3344

Show
Ignore:
Timestamp:
08/27/06 17:40:40 (2 years ago)
Author:
timothy
Message:

Chat Core refactoring to use the new @property syntax if the minimum target OS is 10.5 or greater. Renamed many local variables to prevent conflicts with the property names.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Basic.pch

    r3233 r3344  
    22#import <Cocoa/Cocoa.h> 
    33#endif 
     4 
     5#ifndef MAC_OS_X_VERSION_10_4 
     6#define MAC_OS_X_VERSION_10_5 1050 
     7#endif 
  • trunk/Chat Core/MVChatConnection.h

    r3190 r3344  
    124124#pragma mark - 
    125125 
     126#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 
     127@property(readonly) MVChatConnectionType type; 
     128 
     129@property(readonly) NSSet *supportedFeatures; 
     130@property(readonly) const NSStringEncoding *supportedStringEncodings; 
     131 
     132@property(readonly) NSError *lastError; 
     133 
     134@property(readonly) NSString *urlScheme; 
     135@property(readonly) NSURL *url; 
     136 
     137@property NSStringEncoding encoding; 
     138 
     139@property(bycopy) NSString *realName; 
     140 
     141@property(bycopy) NSString *nickname; 
     142@property(readonly) NSString *preferredNickname; 
     143 
     144@property(bycopy) NSArray *alternateNicknames; 
     145@property(readonly) NSString *nextAlternateNickname; 
     146 
     147@property(bycopy) NSString *nicknamePassword; 
     148 
     149@property(readonly) NSString *certificateServiceName; 
     150@property(readonly) NSString *certificatePassword; 
     151 
     152@property(bycopy) NSString *password; 
     153 
     154@property(bycopy) NSString *username; 
     155 
     156@property(bycopy) NSString *server; 
     157 
     158@property unsigned short serverPort; 
     159 
     160@property MVChatMessageFormat outgoingChatFormat; 
     161 
     162@property(bycopy) NSString *proxyUsername; 
     163 
     164@property(bycopy) NSString *proxyPassword; 
     165 
     166@property BOOL secure; 
     167 
     168@property(bycopy) NSDictionary *persistentInformation; 
     169 
     170@property MVChatConnectionProxy proxyType; 
     171 
     172@property(bycopy) NSString *proxyServer; 
     173 
     174@property unsigned short proxyServerPort; 
     175 
     176@property(readonly) NSSet *joinedChatRooms; 
     177@property(readonly) NSCharacterSet *chatRoomNamePrefixes; 
     178 
     179@property(readonly) NSSet *knownChatUsers; 
     180@property(readonly) MVChatUser *localUser; 
     181 
     182@property(readonly) NSSet *chatUserWatchRules; 
     183 
     184@property(bycopy) NSAttributedString *awayStatusMessage; 
     185 
     186@property(readonly) BOOL connected; 
     187@property(readonly) BOOL waitingToReconnect; 
     188@property(readonly) MVChatConnectionStatus status; 
     189@property(readonly) unsigned int lag; 
     190 
     191#else 
     192 
    126193- (MVChatConnectionType) type; 
    127194 
     
    129196 
    130197- (NSSet *) supportedFeatures; 
     198- (const NSStringEncoding *) supportedStringEncodings; 
     199 
     200#pragma mark - 
     201 
     202- (NSError *) lastError; 
     203 
     204#pragma mark - 
     205 
     206- (NSString *) urlScheme; 
     207- (NSURL *) url; 
     208 
     209#pragma mark - 
     210 
     211- (void) setEncoding:(NSStringEncoding) encoding; 
     212- (NSStringEncoding) encoding; 
     213 
     214#pragma mark - 
     215 
     216- (void) setRealName:(NSString *) name; 
     217- (NSString *) realName; 
     218 
     219#pragma mark - 
     220 
     221- (void) setNickname:(NSString *) nickname; 
     222- (NSString *) nickname; 
     223- (NSString *) preferredNickname; 
     224 
     225#pragma mark - 
     226 
     227- (void) setAlternateNicknames:(NSArray *) nicknames; 
     228- (NSArray *) alternateNicknames; 
     229- (NSString *) nextAlternateNickname; 
     230 
     231#pragma mark - 
     232 
     233- (void) setNicknamePassword:(NSString *) password; 
     234- (NSString *) nicknamePassword; 
     235 
     236#pragma mark - 
     237 
     238- (NSString *) certificateServiceName; 
     239- (NSString *) certificatePassword; 
     240 
     241#pragma mark - 
     242 
     243- (void) setPassword:(NSString *) password; 
     244- (NSString *) password; 
     245 
     246#pragma mark - 
     247 
     248- (void) setUsername:(NSString *) username; 
     249- (NSString *) username; 
     250 
     251#pragma mark - 
     252 
     253- (void) setServer:(NSString *) server; 
     254- (NSString *) server; 
     255 
     256#pragma mark - 
     257 
     258- (void) setServerPort:(unsigned short) port; 
     259- (unsigned short) serverPort; 
     260 
     261#pragma mark - 
     262 
     263- (void) setOutgoingChatFormat:(MVChatMessageFormat) format; 
     264- (MVChatMessageFormat) outgoingChatFormat; 
     265 
     266#pragma mark - 
     267 
     268- (void) setProxyUsername:(NSString *) username; 
     269- (NSString *) proxyUsername; 
     270 
     271#pragma mark - 
     272 
     273- (void) setProxyPassword:(NSString *) password; 
     274- (NSString *) proxyPassword; 
     275 
     276#pragma mark - 
     277 
     278- (void) setSecure:(BOOL) ssl; 
     279 
     280#pragma mark - 
     281 
     282- (void) setPersistentInformation:(NSDictionary *) information; 
     283- (NSDictionary *) persistentInformation; 
     284 
     285#pragma mark - 
     286 
     287- (void) setProxyType:(MVChatConnectionProxy) type; 
     288- (MVChatConnectionProxy) proxyType; 
     289 
     290#pragma mark - 
     291 
     292- (void) setProxyServer:(NSString *) address; 
     293- (NSString *) proxyServer; 
     294 
     295#pragma mark - 
     296 
     297- (void) setProxyServerPort:(unsigned short) port; 
     298- (unsigned short) proxyServerPort; 
     299 
     300#pragma mark - 
     301 
     302- (NSSet *) joinedChatRooms; 
     303- (NSCharacterSet *) chatRoomNamePrefixes; 
     304 
     305#pragma mark - 
     306 
     307- (NSSet *) knownChatUsers; 
     308- (MVChatUser *) localUser; 
     309 
     310#pragma mark - 
     311 
     312- (NSSet *) chatUserWatchRules; 
     313 
     314#pragma mark - 
     315 
     316- (NSAttributedString *) awayStatusMessage; 
     317- (void) setAwayStatusMessage:(NSAttributedString *) message; 
     318 
     319#pragma mark - 
     320 
     321- (MVChatConnectionStatus) status; 
     322- (unsigned int) lag; 
     323#endif 
     324 
     325#pragma mark - 
     326 
     327- (BOOL) isSecure; 
     328- (BOOL) isConnected; 
     329- (BOOL) isWaitingToReconnect; 
     330 
     331#pragma mark - 
     332 
    131333- (BOOL) supportsFeature:(NSString *) key; 
    132  
    133 #pragma mark - 
    134  
    135 - (const NSStringEncoding *) supportedStringEncodings; 
    136334- (BOOL) supportsStringEncoding:(NSStringEncoding) encoding; 
    137335 
     
    145343#pragma mark - 
    146344 
    147 - (NSError *) lastError; 
    148  
    149 #pragma mark - 
    150  
    151 - (NSString *) urlScheme; 
    152 - (NSURL *) url; 
    153  
    154 #pragma mark - 
    155  
    156 - (void) setEncoding:(NSStringEncoding) encoding; 
    157 - (NSStringEncoding) encoding; 
    158  
    159 #pragma mark - 
    160  
    161 - (void) setRealName:(NSString *) name; 
    162 - (NSString *) realName; 
    163  
    164 - (void) setNickname:(NSString *) nickname; 
    165 - (NSString *) nickname; 
    166 - (NSString *) preferredNickname; 
    167  
    168 - (void) setAlternateNicknames:(NSArray *) nicknames; 
    169 - (NSArray *) alternateNicknames; 
    170 - (NSString *) nextAlternateNickname; 
    171  
    172 - (void) setNicknamePassword:(NSString *) password; 
    173 - (NSString *) nicknamePassword; 
    174  
    175 - (NSString *) certificateServiceName; 
    176345- (BOOL) setCertificatePassword:(NSString *) password; 
    177 - (NSString *) certificatePassword; 
    178  
    179 - (void) setPassword:(NSString *) password; 
    180 - (NSString *) password; 
    181  
    182 - (void) setUsername:(NSString *) username; 
    183 - (NSString *) username; 
    184  
    185 - (void) setServer:(NSString *) server; 
    186 - (NSString *) server; 
    187  
    188 - (void) setServerPort:(unsigned short) port; 
    189 - (unsigned short) serverPort; 
    190  
    191 - (void) setOutgoingChatFormat:(MVChatMessageFormat) format; 
    192 - (MVChatMessageFormat) outgoingChatFormat; 
    193  
    194 - (void) setProxyUsername:(NSString *) username; 
    195 - (NSString *) proxyUsername; 
    196  
    197 - (void) setProxyPassword:(NSString *) password; 
    198 - (NSString *) proxyPassword; 
    199  
    200 - (void) setSecure:(BOOL) ssl; 
    201 - (BOOL) isSecure; 
    202  
    203 - (void) setPersistentInformation:(NSDictionary *) information; 
    204 - (NSDictionary *) persistentInformation; 
    205  
    206346- (void) publicKeyVerified:(NSDictionary *) dictionary andAccepted:(BOOL) accepted andAlwaysAccept:(BOOL) alwaysAccept; 
    207  
    208 #pragma mark - 
    209  
    210 - (void) setProxyType:(MVChatConnectionProxy) type; 
    211 - (MVChatConnectionProxy) proxyType; 
    212  
    213 - (void) setProxyServer:(NSString *) address; 
    214 - (NSString *) proxyServer; 
    215  
    216 - (void) setProxyServerPort:(unsigned short) port; 
    217 - (unsigned short) proxyServerPort; 
    218347 
    219348#pragma mark - 
     
    234363#pragma mark - 
    235364 
    236 - (NSSet *) joinedChatRooms; 
    237365- (MVChatRoom *) joinedChatRoomWithName:(NSString *) room; 
    238366 
    239367#pragma mark - 
    240368 
    241 - (NSCharacterSet *) chatRoomNamePrefixes; 
    242369- (NSString *) properNameForChatRoomNamed:(NSString *) room; 
    243370 
    244371#pragma mark - 
    245372 
    246 - (NSSet *) knownChatUsers; 
    247373- (NSSet *) chatUsersWithNickname:(NSString *) nickname; 
    248374- (NSSet *) chatUsersWithFingerprint:(NSString *) fingerprint; 
    249375- (MVChatUser *) chatUserWithUniqueIdentifier:(id) identifier; 
    250 - (MVChatUser *) localUser; 
    251376 
    252377#pragma mark - 
     
    255380- (void) removeChatUserWatchRule:(MVChatUserWatchRule *) rule; 
    256381 
    257 - (NSSet *) chatUserWatchRules; 
    258  
    259 #pragma mark - 
     382#pragma mark - 
     383 
    260384- (void) fetchChatRoomList; 
    261385- (void) stopFetchingChatRoomList; 
     
    264388#pragma mark - 
    265389 
    266 - (NSAttributedString *) awayStatusMessage; 
    267 - (void) setAwayStatusWithMessage:(NSAttributedString *) message; 
    268 - (void) clearAwayStatus; 
    269  
    270 #pragma mark - 
    271  
    272 - (BOOL) isConnected; 
    273 - (MVChatConnectionStatus) status; 
    274 - (unsigned int) lag; 
    275  
    276 #pragma mark - 
    277  
    278390- (void) scheduleReconnectAttemptEvery:(NSTimeInterval) seconds; 
    279391- (void) cancelPendingReconnectAttempts; 
    280 - (BOOL) isWaitingToReconnect; 
    281392@end 
    282393 
     
    284395 
    285396@interface MVChatConnection (MVChatConnectionScripting) 
     397#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 
     398@property(readonly) NSNumber *uniqueIdentifier; 
     399#endif 
     400 
    286401- (NSNumber *) uniqueIdentifier; 
    287402@end 
  • trunk/Chat Core/MVChatConnection.m

    r3339 r3344  
    9191} 
    9292 
    93 - (id) initWithType:(MVChatConnectionType) type { 
     93- (id) initWithType:(MVChatConnectionType) connectionType { 
    9494        [self release]; 
    9595 
    96         if( type == MVChatConnectionIRCType ) { 
     96        if( connectionType == MVChatConnectionIRCType ) { 
    9797                self = [[MVIRCChatConnection allocWithZone:nil] init]; 
    98         } else if ( type == MVChatConnectionSILCType ) { 
     98        } else if ( connectionType == MVChatConnectionSILCType ) { 
    9999                self = [[MVSILCChatConnection allocWithZone:nil] init]; 
    100100        } else self = nil; 
     
    103103} 
    104104 
    105 - (id) initWithURL:(NSURL *) url
    106         NSParameterAssert( [MVChatConnection supportsURLScheme:[url scheme]] ); 
    107  
    108         int type = 0; 
    109         if( [[url scheme] isEqualToString:@"irc"] ) type = MVChatConnectionIRCType; 
    110         else if( [[url scheme] isEqualToString:@"silc"] ) type = MVChatConnectionSILCType; 
    111  
    112         if( ( self = [self initWithServer:[url host] type:type port:[[url port] unsignedShortValue] user:[url user]] ) ) { 
    113                 [self setNicknamePassword:[url password]]; 
    114  
    115                 if( [url fragment] && [[url fragment] length] > 0 ) { 
    116                         [self joinChatRoomNamed:[url fragment]]; 
    117                 } else if( [url path] && [[url path] length] > 1 ) { 
    118                         [self joinChatRoomNamed:[[url path] substringFromIndex:1]]; 
     105- (id) initWithURL:(NSURL *) serverURL
     106        NSParameterAssert( [MVChatConnection supportsURLScheme:[serverURL scheme]] ); 
     107 
     108        int connectionType = 0; 
     109        if( [[serverURL scheme] isEqualToString:@"irc"] ) connectionType = MVChatConnectionIRCType; 
     110        else if( [[serverURL scheme] isEqualToString:@"silc"] ) connectionType = MVChatConnectionSILCType; 
     111 
     112        if( ( self = [self initWithServer:[serverURL host] type:connectionType port:[[serverURL port] unsignedShortValue] user:[serverURL user]] ) ) { 
     113                [self setNicknamePassword:[serverURL password]]; 
     114 
     115                if( [serverURL fragment] && [[serverURL fragment] length] > 0 ) { 
     116                        [self joinChatRoomNamed:[serverURL fragment]]; 
     117                } else if( [serverURL path] && [[serverURL path] length] > 1 ) { 
     118                        [self joinChatRoomNamed:[[serverURL path] substringFromIndex:1]]; 
    119119                } 
    120120        } 
     
    123123} 
    124124 
    125 - (id) initWithServer:(NSString *) server type:(MVChatConnectionType) type port:(unsigned short) port user:(NSString *) nickname { 
    126         if( ( self = [self initWithType:type] ) ) { 
    127                 if( [nickname length] ) [self setNickname:nickname]; 
    128                 if( [server length] ) [self setServer:server]; 
     125- (id) initWithServer:(NSString *) serverAddress type:(MVChatConnectionType) serverType port:(unsigned short) port user:(NSString *) localNickname { 
     126        if( ( self = [self initWithType:serverType] ) ) { 
     127                if( [localNickname length] ) [self setNickname:localNickname]; 
     128                if( [serverAddress length] ) [self setServer:serverAddress]; 
    129129                [self setServerPort:port]; 
    130130        } 
     
    204204} 
    205205 
    206 - (BOOL) supportsStringEncoding:(NSStringEncoding) encoding { 
     206- (BOOL) supportsStringEncoding:(NSStringEncoding) supportedEncoding { 
    207207        const NSStringEncoding *encodings = [self supportedStringEncodings]; 
    208208        unsigned i = 0; 
    209209 
    210210        for( i = 0; encodings[i]; i++ ) 
    211                 if( encodings[i] == encoding ) return YES; 
     211                if( encodings[i] == supportedEncoding ) return YES; 
    212212 
    213213        return NO; 
     
    221221} 
    222222 
    223 - (void) connectToServer:(NSString *) server onPort:(unsigned short) port asUser:(NSString *) nickname
    224         if( [nickname length] ) [self setNickname:nickname]; 
    225         if( [server length] ) [self setServer:server]; 
     223- (void) connectToServer:(NSString *) address onPort:(unsigned short) port asUser:(NSString *) nick
     224        if( [nick length] ) [self setNickname:nick]; 
     225        if( [address length] ) [self setServer:address]; 
    226226        [self setServerPort:port]; 
    227227        [self disconnect]; 
     
    253253 
    254254- (NSURL *) url { 
    255         NSString *url = [NSString stringWithFormat:@"%@://%@@%@:%hu", [self urlScheme], [[self preferredNickname] stringByEncodingIllegalURLCharacters], [[self server] stringByEncodingIllegalURLCharacters], [self serverPort]]; 
    256         if( url ) return [NSURL URLWithString:url]; 
    257         return nil; 
    258 } 
    259  
    260 #pragma mark - 
    261  
    262 - (void) setEncoding:(NSStringEncoding) encoding { 
    263         if( [self supportsStringEncoding:encoding] ) 
    264                 _encoding = encoding; 
     255        NSString *urlString = [NSString stringWithFormat:@"%@://%@@%@:%hu", [self urlScheme], [[self preferredNickname] stringByEncodingIllegalURLCharacters], [[self server] stringByEncodingIllegalURLCharacters], [self serverPort]]; 
     256        if( urlString ) return [NSURL URLWithString:urlString]; 
     257        return nil; 
     258} 
     259 
     260#pragma mark - 
     261 
     262- (void) setEncoding:(NSStringEncoding) newEncoding { 
     263        if( [self supportsStringEncoding:newEncoding] ) 
     264                _encoding = newEncoding; 
    265265} 
    266266 
     
    323323#pragma mark - 
    324324 
    325 - (void) setNicknamePassword:(NSString *) password { 
     325- (void) setNicknamePassword:(NSString *) newPassword { 
    326326        id old = _npassword; 
    327         if( [password length] ) _npassword = [password copyWithZone:nil]; 
     327        if( [newPassword length] ) _npassword = [newPassword copyWithZone:nil]; 
    328328        else _npassword = nil; 
    329329        [old release]; 
     
    416416} 
    417417 
     418#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 
     419@property(getter=isSecure, setter=setSecure:) BOOL secure; 
     420#endif 
     421 
    418422- (BOOL) isSecure { 
    419423        return _secure; 
     
    422426#pragma mark - 
    423427 
    424 - (void) setProxyType:(MVChatConnectionProxy) type { 
    425         _proxy = type; 
     428- (void) setProxyType:(MVChatConnectionProxy) newType { 
     429        _proxy = newType; 
    426430} 
    427431 
     
    454458#pragma mark - 
    455459 
    456 - (void) setProxyUsername:(NSString *) username { 
     460- (void) setProxyUsername:(NSString *) newUsername { 
    457461        id old = _proxyUsername; 
    458         _proxyUsername = [username copyWithZone:nil]; 
     462        _proxyUsername = [newUsername copyWithZone:nil]; 
    459463        [old release]; 
    460464} 
     
    466470#pragma mark - 
    467471 
    468 - (void) setProxyPassword:(NSString *) password { 
     472- (void) setProxyPassword:(NSString *) newPassword { 
    469473        id old = _proxyPassword; 
    470         _proxyPassword = [password copyWithZone:nil]; 
     474        _proxyPassword = [newPassword copyWithZone:nil]; 
    471475        [old release]; 
    472476} 
     
    710714} 
    711715 
    712 - (void) setAwayStatusWithMessage:(NSAttributedString *) message { 
    713 // subclass this method 
    714         [self doesNotRecognizeSelector:_cmd]; 
    715 } 
    716  
    717 - (void) clearAwayStatus { 
    718         [self setAwayStatusWithMessage:nil]; 
    719 
    720  
    721 #pragma mark - 
     716- (void) setAwayStatusMessage:(NSAttributedString *) message { 
     717// subclass this method 
     718        [self doesNotRecognizeSelector:_cmd]; 
     719} 
     720 
     721#pragma mark - 
     722 
     723#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 
     724@property(readonly, getter=isConnected) BOOL connected; 
     725#endif 
    722726 
    723727- (BOOL) isConnected { 
    724         return (BOOL) ( _status == MVChatConnectionConnectedStatus ); 
     728        return ( _status == MVChatConnectionConnectedStatus ); 
    725729} 
    726730 
     
    750754} 
    751755 
     756#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 
     757@property(readonly, getter=isWaitingToReconnect) BOOL waitingToReconnect; 
     758#endif 
     759 
    752760- (BOOL) isWaitingToReconnect { 
    753761        return ( ! [self isConnected] && _reconnectTimer ? YES : NO ); 
     
    861869} 
    862870 
    863 - (void) _setStatus:(MVChatConnectionStatus) status { 
    864         _status = status; 
     871- (void) _setStatus:(MVChatConnectionStatus) newStatus { 
     872        _status = newStatus; 
    865873} 
    866874 
     
    10011009        if( [message isKindOfClass:[NSTextStorage class]] ) msg = [message string]; 
    10021010        NSAttributedString *attributeMsg = [NSAttributedString attributedStringWithHTMLFragment:msg baseURL:nil]; 
    1003         [self setAwayStatusWithMessage:attributeMsg]; 
     1011        [self setAwayStatusMessage:attributeMsg]; 
    10041012} 
    10051013 
     
    10101018} 
    10111019 
    1012 - (void) setScriptTypedEncoding:(unsigned long) encoding { 
    1013         [self setEncoding:[NSString stringEncodingFromScriptTypedEncoding:encoding]]; 
     1020- (void) setScriptTypedEncoding:(unsigned long) newEncoding { 
     1021        [self setEncoding:[NSString stringEncodingFromScriptTypedEncoding:newEncoding]]; 
    10141022} 
    10151023 
  • trunk/Chat Core/MVChatPluginManager.h

    r3072 r3344  
    99+ (NSArray *) pluginSearchPaths; 
    1010 
     11#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 
     12@property(readonly) NSArray *plugins; 
     13#else 
     14- (NSArray *) plugins; 
     15#endif 
     16 
    1117- (void) reloadPlugins; 
    1218- (void) addPlugin:(id) plugin; 
    1319- (void) removePlugin:(id) plugin; 
    1420 
    15 - (NSArray *) plugins; 
    1621- (NSArray *) pluginsThatRespondToSelector:(SEL) selector; 
    1722- (NSArray *) pluginsOfClass:(Class) class thatRespondToSelector:(SEL) selector; 
    18  
    19 - (NSEnumerator *) pluginEnumerator; 
    20 - (NSEnumerator *) enumeratorOfPluginsThatRespondToSelector:(SEL) selector; 
    21 - (NSEnumerator *) enumeratorOfPluginsOfClass:(Class) class thatRespondToSelector:(SEL) selector; 
    22  
    23 - (unsigned int) numberOfPlugins; 
    24 - (unsigned int) numberOfPluginsThatRespondToSelector:(SEL) selector; 
    25 - (unsigned int) numberOfPluginsOfClass:(Class) class thatRespondToSelector:(SEL) selector; 
    2623 
    2724- (NSArray *) makePluginsPerformInvocation:(NSInvocation *) invocation; 
  • trunk/Chat Core/MVChatPluginManager.m

    r3331 r3344  
    138138#pragma mark - 
    139139 
    140 - (NSEnumerator *) pluginEnumerator { 
    141         return [_plugins objectEnumerator]; 
    142 } 
    143  
    144 - (NSEnumerator *) enumeratorOfPluginsThatRespondToSelector:(SEL) selector { 
    145         return [self enumeratorOfPluginsOfClass:NULL thatRespondToSelector:selector]; 
    146 } 
    147  
    148 - (NSEnumerator *) enumeratorOfPluginsOfClass:(Class) class thatRespondToSelector:(SEL) selector { 
    149         return [[self pluginsOfClass:class thatRespondToSelector:selector] objectEnumerator]; 
    150 } 
    151  
    152 #pragma mark - 
    153  
    154 - (unsigned int) numberOfPlugins { 
    155         return [_plugins count]; 
    156 } 
    157  
    158 - (unsigned int) numberOfPluginsThatRespondToSelector:(SEL) selector { 
    159         return [self numberOfPluginsOfClass:NULL thatRespondToSelector:selector]; 
    160 } 
    161  
    162 - (unsigned int) numberOfPluginsOfClass:(Class) class thatRespondToSelector:(SEL) selector { 
    163         NSParameterAssert( selector != NULL ); 
    164  
    165         unsigned int ret = 0; 
    166         NSEnumerator *enumerator = [_plugins objectEnumerator]; 
    167         id plugin = nil; 
    168  
    169         while( ( plugin = [enumerator nextObject] ) ) 
    170                 if( ( ! class || ( class && [plugin isKindOfClass:class] ) ) && [plugin respondsToSelector:selector] ) 
    171                         ret++; 
    172  
    173         return ret; 
    174 } 
    175  
    176 #pragma mark - 
    177  
    178140- (NSArray *) makePluginsPerformInvocation:(NSInvocation *) invocation { 
    179141        return [self makePluginsPerformInvocation:invocation stoppingOnFirstSuccessfulReturn:NO]; 
     
    188150        NSParameterAssert( [invocation selector] != NULL ); 
    189151 
    190         NSEnumerator *enumerator = [self enumeratorOfPluginsOfClass:class thatRespondToSelector:[invocation selector]]; 
     152        NSEnumerator *enumerator = [[self pluginsOfClass:class thatRespondToSelector:[invocation selector]] objectEnumerator]; 
    191153        id plugin = nil; 
    192154 
  • trunk/Chat Core/MVChatRoom.h

    r3228 r3344  
    5959        NSDate *_dateJoined; 
    6060        NSDate *_dateParted; 
    61         NSData *_topicData
     61        NSData *_topic
    6262        MVChatUser *_topicAuthor; 
    6363        NSDate *_dateTopicChanged; 
     
    7272        BOOL _releasing; 
    7373} 
     74 
     75#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 
     76@property(readonly, ivar) MVChatConnection *connection; 
     77 
     78@property(readonly) NSURL *url; 
     79@property(readonly, ivar) NSString *name; 
     80@property(readonly) NSString *displayName; 
     81@property(readonly, ivar) id uniqueIdentifier; 
     82 
     83@property(readonly) BOOL joined; 
     84@property(readonly, ivar) NSDate *dateJoined; 
     85@property(readonly, ivar) NSDate *dateParted; 
     86 
     87@property(ivar) NSStringEncoding encoding; 
     88 
     89@property(readonly, ivar) NSData *topic; 
     90@property(readonly, ivar) MVChatUser *topicAuthor; 
     91@property(readonly, ivar) NSDate *dateTopicChanged; 
     92 
     93@property(readonly) NSSet *supportedAttributes; 
     94@property(readonly) NSDictionary *attributes; 
     95 
     96@property(readonly) unsigned long supportedModes; 
     97@property(readonly) unsigned long supportedMemberUserModes; 
     98@property(readonly, ivar) unsigned long modes; 
     99 
     100@property(readonly) NSSet *memberUsers; 
     101@property(readonly) NSSet *bannedUsers; 
     102 
     103#else 
     104 
    74105- (MVChatConnection *) connection; 
     106 
     107- (NSURL *) url; 
     108- (NSString *) name; 
     109- (NSString *) displayName; 
     110- (id) uniqueIdentifier; 
     111 
     112- (NSDate *) dateJoined; 
     113- (NSDate *) dateParted; 
     114 
     115- (NSStringEncoding) encoding; 
     116- (void) setEncoding:(NSStringEncoding) encoding; 
     117 
     118- (NSData *) topic; 
     119- (MVChatUser *) topicAuthor; 
     120- (NSDate *) dateTopicChanged; 
     121 
     122- (NSSet *) supportedAttributes; 
     123- (NSDictionary *) attributes; 
     124 
     125- (unsigned long) supportedModes; 
     126- (unsigned long) supportedMemberUserModes; 
     127- (unsigned long) modes; 
     128 
     129- (NSSet *) memberUsers; 
     130- (NSSet *) bannedUsers; 
     131#endif 
    75132 
    76133- (BOOL) isEqual:(id) object; 
     
    80137- (NSComparisonResult) compareByUserCount:(MVChatRoom *) otherRoom; 
    81138 
    82 - (NSURL *) url; 
    83 - (NSString *) name; 
    84 - (NSString *) displayName; 
    85 - (id) uniqueIdentifier; 
     139- (BOOL) isJoined; 
    86140 
    87141- (void) join; 
     
    89143- (void) partWithReason:(NSAttributedString *) reason; 
    90144 
    91 - (BOOL) isJoined; 
    92 - (NSDate *) dateJoined; 
    93 - (NSDate *) dateParted; 
    94  
    95 - (NSStringEncoding) encoding; 
    96 - (void) setEncoding:(NSStringEncoding) encoding; 
     145- (void) setTopic:(NSAttributedString *) topic; 
    97146 
    98147- (void) sendMessage:(NSAttributedString *) message asAction:(BOOL) action; 
     
    102151- (void) sendSubcodeReply:(NSString *) command withArguments:(id) arguments; 
    103152 
    104 - (NSData *) topic; 
    105 - (MVChatUser *) topicAuthor; 
    106 - (void) setTopic:(NSAttributedString *) topic; 
    107  
    108153- (void) refreshAttributes; 
    109154- (void) refreshAttributeForKey:(NSString *) key; 
    110155 
    111 - (NSSet *) supportedAttributes; 
    112  
    113 - (NSDictionary *) attributes; 
    114156- (BOOL) hasAttributeForKey:(NSString *) key; 
    115157- (id) attributeForKey:(NSString *) key; 
    116158- (void) setAttribute:(id) attribute forKey:(id) key; 
    117159 
    118 - (unsigned long) supportedModes; 
    119  
    120 - (unsigned long) modes; 
    121160- (id) attributeForMode:(MVChatRoomMode) mode; 
    122161 
     
    126165- (void) removeMode:(MVChatRoomMode) mode; 
    127166 
    128 - (NSSet *) memberUsers; 
    129167- (NSSet *) memberUsersWithModes:(unsigned long) modes; 
    130168- (NSSet *) memberUsersWithNickname:(NSString *) nickname; 
     
    135173- (void) kickOutMemberUser:(MVChatUser *) user forReason:(NSAttributedString *) reason; 
    136174 
    137 - (NSSet *) bannedUsers; 
    138175- (void) addBanForUser:(MVChatUser *) user; 
    139176- (void) removeBanForUser:(MVChatUser *) user; 
    140  
    141 - (unsigned long) supportedMemberUserModes; 
    142177 
    143178- (unsigned long) modesForMemberUser:(MVChatUser *) user; 
     
    151186 
    152187@interface MVChatRoom (MVChatRoomScripting) 
     188#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 
     189@property(readonly) NSString *scriptUniqueIdentifier; 
     190@property(readonly) NSScriptObjectSpecifier *objectSpecifier; 
     191#endif 
     192 
    153193- (NSString *) scriptUniqueIdentifier; 
    154194- (NSScriptObjectSpecifier *) objectSpecifier; 
  • trunk/Chat Core/MVChatRoom.m

    r3301 r3344  
    5353- (id) init { 
    5454        if( ( self = [super init] ) ) { 
    55                 _connection = nil; 
    56                 _name = nil; 
    57                 _uniqueIdentifier = nil; 
    58                 _dateJoined = nil; 
    59                 _dateParted = nil; 
    60                 _topicData = nil; 
    61                 _topicAuthor = nil; 
    62                 _dateTopicChanged = nil; 
    6355                _attributes = [[NSMutableDictionary allocWithZone:nil] initWithCapacity:2]; 
    6456                _memberUsers = [[NSMutableSet allocWithZone:nil] initWithCapacity:100]; 
     
    6759                _memberModes = [[NSMutableDictionary allocWithZone:nil] initWithCapacity:100]; 
    6860                _encoding = NSUTF8StringEncoding; 
    69                 _modes = 0; 
    7061        } 
    7162 
     
    8778        [_dateJoined release]; 
    8879        [_dateParted release]; 
    89         [_topicData release]; 
     80        [_topic release]; 
    9081        [_topicAuthor release]; 
    9182        [_dateTopicChanged release]; 
     
    10192        _dateJoined = nil; 
    10293        _dateParted = nil; 
    103         _topicData = nil; 
     94        _topic = nil; 
    10495        _topicAuthor = nil; 
    10596        _dateTopicChanged = nil; 
     
    115106#pragma mark - 
    116107 
     108#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 
    117109- (MVChatConnection *) connection { 
    118110        return _connection; 
    119111} 
     112#endif 
    120113 
    121114#pragma mark - 
     
    157150 
    158151- (NSURL *) url { 
    159         NSString *url = [NSString stringWithFormat:@"%@://%@/%@", [[self connection] urlScheme], [[[self connection] server] stringByEncodingIllegalURLCharacters], [[self name] stringByEncodingIllegalURLCharacters]]; 
    160         if( url ) return [NSURL URLWithString:url]; 
     152        NSString *urlString = [NSString stringWithFormat:@"%@://%@/%@", [[self connection] urlScheme], [[[self connection] server] stringByEncodingIllegalURLCharacters], [[self name] stringByEncodingIllegalURLCharacters]]; 
     153        if( urlString ) return [NSURL URLWithString:urlString]; 
    161154        return nil; 
    162155} 
    163156 
     157#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 
    164158- (NSString *) name { 
    165159        return [[_name retain] autorelease]; 
    166160} 
     161#endif 
    167162 
    168163- (NSString *) displayName { 
     
    170165} 
    171166 
     167#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 
    172168- (id) uniqueIdentifier { 
    173169        return [[_uniqueIdentifier retain] autorelease]; 
    174170} 
     171#endif 
    175172 
    176173#pragma mark - 
     
    194191#pragma mark - 
    195192 
     193#if MAC_OS_X_VERSION_MIN_REQUIRED >= MAC_OS_X_VERSION_10_5 
     194@property(readonly, getter=isJoined) BOOL joined; 
     195#endif 
     196 
    196197- (BOOL) isJoined { 
    197198        return ( [self dateJoined] && ! [self dateParted] ); 
    198199} 
    199200 
     201#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 
    200202- (NSDate *) dateJoined { 
    201203        return [[_dateJoined retain] autorelease]; 
     
    205207        return [[_dateParted retain] autorelease]; 
    206208} 
    207  
    208 #pragma mark - 
    209  
     209#endif 
     210 
     211#pragma mark - 
     212 
     213#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 
    210214- (NSStringEncoding) encoding { 
    211215        return _encoding; 
     
    215219        _encoding = encoding; 
    216220} 
     221#endif 
    217222 
    218223#pragma mark - 
     
    239244#pragma mark - 
    240245 
     246#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 
    241247- (NSData *) topic { 
    242         return [[_topicData retain] autorelease]; 
    243 
    244  
     248        return [[_topic retain] autorelease]; 
     249
     250#endif 
     251 
     252- (void) setTopic:(NSAttributedString *) topic { 
     253// subclass this method, if needed 
     254
     255 
     256#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 
    245257- (MVChatUser *) topicAuthor { 
    246258        return [[_topicAuthor retain] autorelease]; 
     
    250262        return [[_dateTopicChanged retain] autorelease]; 
    251263} 
    252  
    253 - (void) setTopic:(NSAttributedString *) topic { 
    254 // subclass this method, if needed 
    255 
     264#endif 
    256265 
    257266#pragma mark - 
     
    314323#pragma mark - 
    315324 
     325#if MAC_OS_X_VERSION_MIN_REQUIRED <= MAC_OS_X_VERSION_10_4 
    316326- (unsigned long) modes { 
    317327        return _modes; 
    318328} 
     329#endif 
    319330 
    320331- (id) attributeForMode:(MVChatRoomMode) mode { 
     
    327338#pragma mark - 
    328339 
    329 - (void) setModes:(unsigned long) modes { 
    330         NSParameterAssert( [self supportedModes] & modes ); 
     340- (void) setModes:(unsigned long) newModes { 
     341        NSParameterAssert( [self supportedModes] & newModes ); 
    331342 
    332343        unsigned long curModes = [self modes]; 
    333         unsigned long diffModes = ( curModes ^ modes ); 
     344        unsigned long diffModes = ( curModes ^ newModes ); 
    334345 
    335346        unsigned i = 0; 
    336347        for( i = 0; i <= 8; i++ ) { 
    337348                if( ( 1 << i ) & diffModes ) { 
    338                         if( ( 1 << i ) & modes ) [self setMode:( 1 << i ) withAttribute:nil]; 
     349                        if( ( 1 << i ) & newModes ) [self setMode:( 1 << i ) withAttribute:nil]; 
    339350                        else [self removeMode:( 1 << i )]; 
    340351                } 
     
    364375} 
    365376 
    366 - (NSSet *) memberUsersWithModes:(unsigned long) modes { 
     377- (NSSet *) memberUsersWithModes:(unsigned long) newModes { 
    367378        NSMutableSet *users = [[NSMutableSet allocWithZone:nil] init]; 
    368379 
     
    371382                MVChatUser *user = nil; 
    372383                while( ( user = [enumerator nextObject] ) ) 
    373                         if( [self modesForMemberUser:user] & modes ) 
     384                        if( [self modesForMemberUser:user] & newModes ) 
    374385                                [users addObject:user]; 
    375386        } 
     
    468479#pragma mark - 
    469480 
    470 - (void) setModes:(unsigned long) modes forMemberUser:(MVChatUser *) user { 
     481- (void) setModes:(unsigned long) newModes forMemberUser:(MVChatUser *) user { 
    471482        NSParameterAssert( user != nil ); 
    472         NSParameterAssert( [self supportedMemberUserModes] & modes ); 
     483        NSParameterAssert( [self supportedMemberUserModes] & newModes ); 
    473484 
    474485        unsigned long curModes = [self modesForMemberUser:user]; 
    475         unsigned long diffModes = ( curModes ^ modes ); 
     486        unsigned long diffModes = ( curModes ^ newModes ); 
    476487 
    477488        unsigned i = 0; 
    478489        for( i = 0; i <= 8; i++ ) { 
    479490                if( ( 1 << i ) & diffModes ) { 
    480                         if( ( 1 << i ) & modes ) [self setMode:( 1 << i ) forMemberUser:user]; 
     491                        if( ( 1 << i ) & newModes ) [self setMode:( 1 << i ) forMemberUser:user]; 
    481492                        else [self removeMode:( 1 << i ) forMemberUser:user]; 
    482493                } 
     
    546557} 
    547558 
    548 - (void) _setModes:(unsigned long) modes forMemberUser:(MVChatUser *) user { 
     559- (void) _setModes:(unsigned long) newModes forMemberUser:(MVChatUser *) user { 
    549560        @synchronized( _memberModes ) { 
    550                 [_memberModes setObject:[NSNumber numberWithUnsignedLong:modes] forKey:[user uniqueIdentifier]]; 
     561                [_memberModes setObject:[NSNumber numberWithUnsignedLong:newModes] forKey:[user uniqueIdentifier]]; 
    551562        }        
    552563} 
     
    554565- (void) _setMode:(MVChatRoomMe