Changeset 3961

Show
Ignore:
Timestamp:
03/27/06 00:01:33 (3 years ago)
Author:
morris
Message:

Lay some groundwork for per-bookmark window templates

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • WiredClient/trunk/WCConnectionController.h

    r3540 r3961  
    3030        NSString                                *_name; 
    3131        WCServerConnection              *_connection; 
     32        NSMutableDictionary             *_windowTemplate; 
    3233         
    3334        BOOL                                    _hidden; 
     
    4445- (void)setHidden:(BOOL)value; 
    4546- (BOOL)isHidden; 
     47 
     48- (void)windowTemplateShouldLoad:(NSMutableDictionary *)windowTemplate; 
     49- (void)windowTemplateShouldSave:(NSMutableDictionary *)windowTemplate; 
    4650 
    4751- (IBAction)disconnect:(id)sender; 
  • WiredClient/trunk/WCConnectionController.m

    r3700 r3961  
    3232#import "WCKeychain.h" 
    3333#import "WCPreferences.h" 
     34#import "WCSettings.h" 
     35 
     36@interface WCConnectionController(Private) 
     37 
     38- (void)_loadWindowTemplate; 
     39- (void)_saveWindowTemplate; 
     40 
     41@end 
     42 
     43 
     44 
     45@implementation WCConnectionController(Private) 
     46 
     47- (void)_loadWindowTemplate { 
     48        NSDictionary    *windowTemplate; 
     49         
     50        if([[self connection] bookmark]) 
     51                windowTemplate = [WCSettings windowTemplateForKey:[[[self connection] bookmark] objectForKey:WCBookmarksIdentifier]]; 
     52        else 
     53                windowTemplate = [WCSettings windowTemplateForKey:[[[self connection] URL] hostpair]]; 
     54         
     55        if(!windowTemplate) 
     56                windowTemplate = [WCSettings windowTemplateForKey:WCWindowTemplatesDefault]; 
     57         
     58        if(windowTemplate) 
     59                _windowTemplate = [windowTemplate mutableCopy]; 
     60        else 
     61                _windowTemplate = [[NSMutableDictionary alloc] init]; 
     62         
     63        [self windowTemplateShouldLoad:_windowTemplate]; 
     64} 
     65 
     66 
     67 
     68- (void)_saveWindowTemplate { 
     69        [self windowTemplateShouldSave:_windowTemplate]; 
     70         
     71        if([[self connection] bookmark]) 
     72                [WCSettings setWindowTemplate:_windowTemplate forKey:[[[self connection] bookmark] objectForKey:WCBookmarksIdentifier]]; 
     73        else 
     74                [WCSettings setWindowTemplate:_windowTemplate forKey:[[[self connection] URL] hostpair]]; 
     75} 
     76 
     77@end 
     78 
    3479 
    3580@implementation WCConnectionController 
    3681 
    37 - (id)initWithWindowNibName:(NSString *)windowNibName connection:(WCServerConnection *)connection { 
    38         return [self initWithWindowNibName:windowNibName name:NULL connection:connection]; 
    39 } 
    40  
    41  
    42  
    43 - (id)initWithWindowNibName:(NSString *)windowNibName name:(NSString *)name connection:(WCServerConnection *)connection { 
    44         self = [super initWithWindowNibName:windowNibName]; 
     82- (id)initWithWindowNibName:(NSString *)nibName connection:(WCServerConnection *)connection { 
     83        return [self initWithWindowNibName:nibName name:NULL connection:connection]; 
     84} 
     85 
     86 
     87 
     88- (id)initWithWindowNibName:(NSString *)nibName name:(NSString *)name connection:(WCServerConnection *)connection { 
     89        self = [super initWithWindowNibName:nibName]; 
    4590 
    4691        _name = [name retain]; 
    4792        _connection = connection; 
     93         
     94        [self _loadWindowTemplate]; 
    4895 
    4996        if([self respondsToSelector:@selector(connectionDidConnect:)]) { 
     
    57104                                                selector:@selector(connectionDidClose:) 
    58105                                                        name:WCConnectionDidClose]; 
     106        } 
     107 
     108        if([self respondsToSelector:@selector(connectionWillTerminate:)]) { 
     109                [_connection addObserver:self 
     110                                                selector:@selector(connectionWillTerminate:) 
     111                                                        name:WCConnectionWillTerminate]; 
     112        } 
     113         
     114        if([self respondsToSelector:@selector(connectionDidTerminate:)]) { 
     115                [_connection addObserver:self 
     116                                                selector:@selector(connectionDidTerminate:) 
     117                                                        name:WCConnectionDidTerminate]; 
     118        } 
     119         
     120        if([self respondsToSelector:@selector(serverConnectionLoggedIn:)]) { 
     121                [_connection addObserver:self 
     122                                                selector:@selector(serverConnectionLoggedIn:) 
     123                                                        name:WCServerConnectionLoggedIn]; 
     124        } 
     125         
     126        if([self respondsToSelector:@selector(serverConnectionWillReconnect:)]) { 
     127                [_connection addObserver:self 
     128                                                selector:@selector(serverConnectionWillReconnect:) 
     129                                                        name:WCServerConnectionWillReconnect]; 
     130        } 
     131 
     132        if([self respondsToSelector:@selector(serverConnectionServerInfoDidChange:)]) { 
     133                [_connection addObserver:self 
     134                                                selector:@selector(serverConnectionServerInfoDidChange:) 
     135                                                        name:WCServerConnectionServerInfoDidChange]; 
     136        } 
     137 
     138        if([self respondsToSelector:@selector(serverConnectionBannerDidChange:)]) { 
     139                [_connection addObserver:self 
     140                                                selector:@selector(serverConnectionBannerDidChange:) 
     141                                                        name:WCServerConnectionBannerDidChange]; 
     142        } 
     143 
     144        if([self respondsToSelector:@selector(serverConnectionPrivilegesDidChange:)]) { 
     145                [_connection addObserver:self 
     146                                                selector:@selector(serverConnectionPrivilegesDidChange:) 
     147                                                        name:WCServerConnectionPrivilegesDidChange]; 
    59148        } 
    60149         
     
    63152                                                name:WCConnectionDidTerminate]; 
    64153 
    65         if([self respondsToSelector:@selector(connectionWillTerminate:)]) { 
    66                 [_connection addObserver:self 
    67                                                 selector:@selector(connectionWillTerminate:) 
    68                                                         name:WCConnectionWillTerminate]; 
    69         } 
    70          
    71         if([self respondsToSelector:@selector(connectionDidTerminate:)]) { 
    72                 [_connection addObserver:self 
    73                                                 selector:@selector(connectionDidTerminate:) 
    74                                                         name:WCConnectionDidTerminate]; 
    75         } 
    76          
    77         if([self respondsToSelector:@selector(serverConnectionLoggedIn:)]) { 
    78                 [_connection addObserver:self 
    79                                                 selector:@selector(serverConnectionLoggedIn:) 
    80                                                         name:WCServerConnectionLoggedIn]; 
    81         } 
    82          
    83         if([self respondsToSelector:@selector(serverConnectionWillReconnect:)]) { 
    84                 [_connection addObserver:self 
    85                                                 selector:@selector(serverConnectionWillReconnect:) 
    86                                                         name:WCServerConnectionWillReconnect]; 
    87         } 
    88  
    89         if([self respondsToSelector:@selector(serverConnectionServerInfoDidChange:)]) { 
    90                 [_connection addObserver:self 
    91                                                 selector:@selector(serverConnectionServerInfoDidChange:) 
    92                                                         name:WCServerConnectionServerInfoDidChange]; 
    93         } 
    94  
    95         if([self respondsToSelector:@selector(serverConnectionBannerDidChange:)]) { 
    96                 [_connection addObserver:self 
    97                                                 selector:@selector(serverConnectionBannerDidChange:) 
    98                                                         name:WCServerConnectionBannerDidChange]; 
    99         } 
    100  
    101         if([self respondsToSelector:@selector(serverConnectionPrivilegesDidChange:)]) { 
    102                 [_connection addObserver:self 
    103                                                 selector:@selector(serverConnectionPrivilegesDidChange:) 
    104                                                         name:WCServerConnectionPrivilegesDidChange]; 
    105         } 
    106  
    107154        [_connection addObserver:self 
    108155                                        selector:@selector(_serverConnectionShouldHide:) 
     
    123170        [_connection removeObserver:self]; 
    124171        _connection = NULL; 
     172         
     173        [_windowTemplate release]; 
    125174 
    126175        [super dealloc]; 
     
    132181 
    133182- (void)_connectionDidTerminate:(NSNotification *)notification { 
     183        [self _saveWindowTemplate]; 
     184         
    134185        [_connection removeObserver:self]; 
    135186        _connection = NULL; 
     
    213264- (BOOL)isHidden { 
    214265        return _hidden; 
     266} 
     267 
     268 
     269 
     270#pragma mark - 
     271 
     272- (void)windowTemplateShouldLoad:(NSMutableDictionary *)windowTemplate { 
     273} 
     274 
     275 
     276 
     277- (void)windowTemplateShouldSave:(NSMutableDictionary *)windowTemplate { 
    215278} 
    216279 
  • WiredClient/trunk/WCPublicChat.m

    r3943 r3961  
    5959- (id)_initPublicChatWithConnection:(WCServerConnection *)connection { 
    6060        self = [super initChatWithConnection:connection 
    61                                            windowNibName:@"PublicChat" 
    62                                                                 name:NSLS(@"Chat", @"Chat window title")]; 
     61                                                  windowNibName:@"PublicChat" 
     62                                                                       name:NSLS(@"Chat", @"Chat window title")]; 
    6363 
    6464        [[self connection] addObserver:self 
  • WiredClient/trunk/WCSettings.h

    r3907 r3961  
    143143#define WCTrackerBookmarksAddress                                       @"Address" 
    144144 
     145#define WCWindowTemplates                                               @"WCWindowTemplates" 
     146#define WCWindowTemplatesDefault                                        @"WCWindowTemplatesDefault" 
     147 
    145148#define WCSSLControlCiphers                                             @"WCSSLControlCiphers" 
    146149#define WCSSLNullControlCiphers                                 @"WCSSLNullControlCiphers" 
     
    172175+ (void)removeIgnoreAtIndex:(unsigned int)index; 
    173176 
     177+ (NSDictionary *)windowTemplateForKey:(NSString *)key; 
     178+ (void)setWindowTemplate:(NSDictionary *)windowTemplate forKey:(NSString *)key; 
     179 
    174180@end 
  • WiredClient/trunk/WCSettings.m

    r3907 r3961  
    343343                        WCTrackerBookmarks, 
    344344                 
     345                // --- window templates 
     346                [NSDictionary dictionary], 
     347                        WCWindowTemplates, 
     348                 
    345349                // -- SSL 
    346350                @"ALL:!LOW:!EXP:!MD5", 
     
    559563} 
    560564 
     565 
     566 
     567#pragma mark - 
     568 
     569+ (NSDictionary *)windowTemplateForKey:(NSString *)key { 
     570        return [[self objectForKey:WCWindowTemplates] objectForKey:key]; 
     571} 
     572 
     573 
     574 
     575+ (void)setWindowTemplate:(NSDictionary *)windowTemplate forKey:(NSString *)key { 
     576        NSMutableDictionary             *windowTemplates; 
     577         
     578        windowTemplates = [[self objectForKey:WCWindowTemplates] mutableCopy]; 
     579        [windowTemplates setObject:windowTemplate forKey:key]; 
     580        [self setObject:windowTemplates forKey:WCWindowTemplates]; 
     581        [windowTemplates release]; 
     582} 
     583 
    561584@end