Adium

Changeset 14848

Show
Ignore:
Timestamp:
01/09/2006 02:51:45 PM (3 years ago)
Author:
evands
Message:

Only show one fingerprint details window. Fixes #2580

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • trunk/Source/ESOTRFingerprintDetailsWindowController.m

    r14757 r14848  
    2020@interface ESOTRFingerprintDetailsWindowController (PRIVATE) 
    2121- (id)initWithWindowNibName:(NSString *)windowNibName forFingerprintDict:(NSDictionary *)inFingerprintDict; 
     22- (void)setFingerprintDict:(NSDictionary *)inFingerprintDict; 
    2223@end 
    2324 
    2425@implementation ESOTRFingerprintDetailsWindowController 
    2526 
     27static ESOTRFingerprintDetailsWindowController  *sharedController = nil; 
     28 
    2629+ (void)showDetailsForFingerprintDict:(NSDictionary *)inFingerprintDict 
    2730{ 
    28         ESOTRFingerprintDetailsWindowController        *controller; 
    29          
    30         if ((controller = [[self alloc] initWithWindowNibName:@"OTRFingerprintDetailsWindow"  
    31                                                                           forFingerprintDict:inFingerprintDict]))
    32                 [controller showWindow:nil]; 
    33                 [[controller window] makeKeyAndOrderFront:nil]; 
     31        if (sharedController) { 
     32               [sharedController setFingerprintDict:inFingerprintDict]; 
     33 
     34        } else
     35                sharedController = [[self alloc] initWithWindowNibName:@"OTRFingerprintDetailsWindow"  
     36                                                                                       forFingerprintDict:inFingerprintDict]; 
    3437        } 
     38                 
     39        [sharedController showWindow:nil]; 
     40        [[sharedController window] makeKeyAndOrderFront:nil]; 
    3541} 
    3642 
     
    3844{ 
    3945        if ((self = [super initWithWindowNibName:windowNibName])) { 
    40                 fingerprintDict = [inFingerprintDict retain]; 
     46                [self setFingerprintDict:inFingerprintDict]; 
    4147        } 
    4248         
     
    5157} 
    5258 
    53 - (void)windowDidLoad 
     59- (void)configureWindow 
    5460{ 
    5561        AIAccount       *account = [fingerprintDict objectForKey:@"AIAccount"]; 
    56  
     62         
     63        //Ensure the window is loaded 
     64        [self window]; 
     65         
    5766        [textField_UID setStringValue:[fingerprintDict objectForKey:@"UID"]]; 
    5867        [textField_fingerprint setStringValue:[fingerprintDict objectForKey:@"FingerprintString"]]; 
     
    6069        [imageView_service setImage:[AIServiceIcons serviceIconForObject:account 
    6170                                                                                                                                type:AIServiceIconLarge 
    62                                                                                                                    direction:AIIconNormal]]; 
     71                                                                                                                   direction:AIIconNormal]];     
     72
     73 
     74- (void)setFingerprintDict:(NSDictionary *)inFingerprintDict 
     75
     76        if (inFingerprintDict != fingerprintDict) { 
     77                [fingerprintDict release]; 
     78                fingerprintDict = [inFingerprintDict retain]; 
     79                 
     80                [self configureWindow]; 
     81        } 
     82
     83 
     84- (void)windowDidLoad 
     85
    6386        [imageView_lock setImage:[NSImage imageNamed:@"Lock_Locked State" forClass:[adium class]]];      
    6487         
     
    7396{ 
    7497        [super windowWillClose:sender]; 
    75         [self autorelease]; 
     98 
     99        [sharedController autorelease]; sharedController = nil; 
    76100} 
    77101