]> granicus.if.org Git - transmission/commitdiff
make sure a info tab is loaded the first time it's shown
authorMitchell Livingston <livings124@transmissionbt.com>
Sun, 7 Mar 2010 01:40:32 +0000 (01:40 +0000)
committerMitchell Livingston <livings124@transmissionbt.com>
Sun, 7 Mar 2010 01:40:32 +0000 (01:40 +0000)
macosx/InfoActivityViewController.m
macosx/InfoFileViewController.m
macosx/InfoGeneralViewController.m
macosx/InfoOptionsViewController.m
macosx/InfoPeersViewController.m
macosx/InfoTrackersViewController.m
macosx/InfoWindowController.m

index ef384760ded86278a08155466cd839f243875d58..2a8f748542e3c9759312475a1793c7ce8e285532 100644 (file)
 #define PIECES_CONTROL_PROGRESS 0
 #define PIECES_CONTROL_AVAILABLE 1
 
-@interface InfoActivityViewController (Private)
-
-- (void) resetInfo;
-
-@end
-
 @implementation InfoActivityViewController
 
 - (id) init
     [fTorrents release];
     fTorrents = [torrents retain];
     
-    [self resetInfo];
+    const NSUInteger count = [fTorrents count];
+    if (count != 1)
+    {
+        if (count == 0)
+        {
+            [fHaveField setStringValue: @""];
+            [fDownloadedTotalField setStringValue: @""];
+            [fUploadedTotalField setStringValue: @""];
+            [fFailedHashField setStringValue: @""];
+            [fDateActivityField setStringValue: @""];
+            [fRatioField setStringValue: @""];
+        }
+    
+        [fStateField setStringValue: @""];
+        [fProgressField setStringValue: @""];
+        
+        [fErrorMessageView setString: @""];
+        
+        [fDateAddedField setStringValue: @""];
+        [fDateCompletedField setStringValue: @""];
+        
+        [fPiecesControl setSelected: NO forSegment: PIECES_CONTROL_AVAILABLE];
+        [fPiecesControl setSelected: NO forSegment: PIECES_CONTROL_PROGRESS];
+        [fPiecesControl setEnabled: NO];
+        [fPiecesView setTorrent: nil];
+    }
+    else
+    {
+        Torrent * torrent = [fTorrents objectAtIndex: 0];
+        [fDateAddedField setObjectValue: [torrent dateAdded]];
+    }
 }
 
 - (void) updateInfo
 }
 
 @end
-
-@implementation InfoActivityViewController (Private)
-
-- (void) resetInfo
-{
-    const NSUInteger count = [fTorrents count];
-    if (count != 1)
-    {
-        if (count == 0)
-        {
-            [fHaveField setStringValue: @""];
-            [fDownloadedTotalField setStringValue: @""];
-            [fUploadedTotalField setStringValue: @""];
-            [fFailedHashField setStringValue: @""];
-            [fDateActivityField setStringValue: @""];
-            [fRatioField setStringValue: @""];
-        }
-    
-        [fStateField setStringValue: @""];
-        [fProgressField setStringValue: @""];
-        
-        [fErrorMessageView setString: @""];
-        
-        [fDateAddedField setStringValue: @""];
-        [fDateCompletedField setStringValue: @""];
-        
-        [fPiecesControl setSelected: NO forSegment: PIECES_CONTROL_AVAILABLE];
-        [fPiecesControl setSelected: NO forSegment: PIECES_CONTROL_PROGRESS];
-        [fPiecesControl setEnabled: NO];
-        [fPiecesView setTorrent: nil];
-    }
-    else
-    {
-        Torrent * torrent = [fTorrents objectAtIndex: 0];
-        [fDateAddedField setObjectValue: [torrent dateAdded]];
-    }
-}
-
-@end
index 695301179022936ce41901e4f3409c9cf22af7bd..f61dde81fab44829033803a9d8effde31f2ccc8e 100644 (file)
@@ -30,8 +30,6 @@
 
 @interface InfoFileViewController (Private)
 
-- (void) resetInfo;
-
 - (BOOL) canQuickLookFile: (FileListNode *) item;
 
 @end
     [fTorrents release];
     fTorrents = [torrents retain];
     
-    [self resetInfo];
+    [fFileFilterField setStringValue: @""];
+    
+    if ([fTorrents count] == 1)
+    {
+        Torrent * torrent = [fTorrents objectAtIndex: 0];
+        
+        [fFileController setTorrent: torrent];
+        [fFileFilterField setEnabled: [torrent isFolder]];
+    }
+    else
+    {
+        [fFileController setTorrent: nil];
+        [fFileFilterField setEnabled: NO];
+    }
 }
 
 - (void) updateInfo
 
 @implementation InfoFileViewController (Private)
 
-- (void) resetInfo
-{
-    [fFileFilterField setStringValue: @""];
-    
-    if ([fTorrents count] == 1)
-    {
-        Torrent * torrent = [fTorrents objectAtIndex: 0];
-        
-        [fFileController setTorrent: torrent];
-        [fFileFilterField setEnabled: [torrent isFolder]];
-    }
-    else
-    {
-        [fFileController setTorrent: nil];
-        [fFileFilterField setEnabled: NO];
-    }
-}
-
 - (BOOL) canQuickLookFile: (FileListNode *) item
 {
     Torrent * torrent = [fTorrents objectAtIndex: 0];
index 4929ae7de6653e014cde6449c2c4476dcc888e2d..bbcec59dceb4f0094b5a41293e12265cc3803af2 100644 (file)
 #import "NSStringAdditions.h"
 #import "Torrent.h"
 
-@interface InfoGeneralViewController (Private)
-
-- (void) resetInfo;
-
-@end
-
 @implementation InfoGeneralViewController
 
 - (id) init
     [fTorrents release];
     fTorrents = [torrents retain];
     
-    [self resetInfo];
-}
-
-- (void) updateInfo
-{   
-    if ([fTorrents count] != 1)
-        return;
-    
-    Torrent * torrent = [fTorrents objectAtIndex: 0];
-    
-    NSString * location = [torrent dataLocation];
-    [fDataLocationField setStringValue: location ? [location stringByAbbreviatingWithTildeInPath] : @""];
-    [fDataLocationField setToolTip: location ? location : @""];
-    
-    [fRevealDataButton setHidden: !location];
-}
-
-- (void) revealDataFile: (id) sender
-{
-    Torrent * torrent = [fTorrents objectAtIndex: 0];
-    NSString * location = [torrent dataLocation];
-    if (!location)
-        return;
-    
-    if ([NSApp isOnSnowLeopardOrBetter])
-    {
-        NSURL * file = [NSURL fileURLWithPath: location];
-        [[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs: [NSArray arrayWithObject: file]];
-    }
-    else
-        [[NSWorkspace sharedWorkspace] selectFile: location inFileViewerRootedAtPath: nil];
-}
-
-@end
-
-@implementation InfoGeneralViewController (Private)
-
-- (void) resetInfo
-{
     if ([fTorrents count] == 1)
     {
         Torrent * torrent = [fTorrents objectAtIndex: 0];
     }
 }
 
+- (void) updateInfo
+{   
+    if ([fTorrents count] != 1)
+        return;
+    
+    Torrent * torrent = [fTorrents objectAtIndex: 0];
+    
+    NSString * location = [torrent dataLocation];
+    [fDataLocationField setStringValue: location ? [location stringByAbbreviatingWithTildeInPath] : @""];
+    [fDataLocationField setToolTip: location ? location : @""];
+    
+    [fRevealDataButton setHidden: !location];
+}
+
+- (void) revealDataFile: (id) sender
+{
+    Torrent * torrent = [fTorrents objectAtIndex: 0];
+    NSString * location = [torrent dataLocation];
+    if (!location)
+        return;
+    
+    if ([NSApp isOnSnowLeopardOrBetter])
+    {
+        NSURL * file = [NSURL fileURLWithPath: location];
+        [[NSWorkspace sharedWorkspace] activateFileViewerSelectingURLs: [NSArray arrayWithObject: file]];
+    }
+    else
+        [[NSWorkspace sharedWorkspace] selectFile: location inFileViewerRootedAtPath: nil];
+}
+
 @end
index 6d30bd804c6d625117598c41731315f485a19252..4cf34507bb1756276399e3d81d8bc16ab40b93a9 100644 (file)
 
 #define INVALID -99
 
-@interface InfoOptionsViewController (Private)
-
-- (void) resetInfo;
-
-@end
-
 @implementation InfoOptionsViewController
 
 - (id) init
     [fTorrents release];
     fTorrents = [torrents retain];
     
-    [self resetInfo];
+    if ([fTorrents count] == 0)
+    {
+        [fUploadLimitCheck setEnabled: NO];
+        [fUploadLimitCheck setState: NSOffState];
+        [fUploadLimitField setEnabled: NO];
+        [fUploadLimitLabel setEnabled: NO];
+        [fUploadLimitField setStringValue: @""];
+        
+        [fDownloadLimitCheck setEnabled: NO];
+        [fDownloadLimitCheck setState: NSOffState];
+        [fDownloadLimitField setEnabled: NO];
+        [fDownloadLimitLabel setEnabled: NO];
+        [fDownloadLimitField setStringValue: @""];
+        
+        [fGlobalLimitCheck setEnabled: NO];
+        [fGlobalLimitCheck setState: NSOffState];
+        
+        [fPriorityPopUp setEnabled: NO];
+        [fPriorityPopUp selectItemAtIndex: -1];
+        
+        [fRatioPopUp setEnabled: NO];
+        [fRatioPopUp selectItemAtIndex: -1];
+        [fRatioLimitField setHidden: YES];
+        [fRatioLimitField setStringValue: @""];
+        
+        [fPeersConnectField setEnabled: NO];
+        [fPeersConnectField setStringValue: @""];
+        [fPeersConnectLabel setEnabled: NO];
+    }
+    else
+        [self updateOptions];
 }
 
 - (void) updateOptions
 
 @implementation InfoOptionsViewController (Private)
 
-- (void) resetInfo
-{
-    if ([fTorrents count] == 0)
-    {
-        [fUploadLimitCheck setEnabled: NO];
-        [fUploadLimitCheck setState: NSOffState];
-        [fUploadLimitField setEnabled: NO];
-        [fUploadLimitLabel setEnabled: NO];
-        [fUploadLimitField setStringValue: @""];
-        
-        [fDownloadLimitCheck setEnabled: NO];
-        [fDownloadLimitCheck setState: NSOffState];
-        [fDownloadLimitField setEnabled: NO];
-        [fDownloadLimitLabel setEnabled: NO];
-        [fDownloadLimitField setStringValue: @""];
-        
-        [fGlobalLimitCheck setEnabled: NO];
-        [fGlobalLimitCheck setState: NSOffState];
-        
-        [fPriorityPopUp setEnabled: NO];
-        [fPriorityPopUp selectItemAtIndex: -1];
-        
-        [fRatioPopUp setEnabled: NO];
-        [fRatioPopUp selectItemAtIndex: -1];
-        [fRatioLimitField setHidden: YES];
-        [fRatioLimitField setStringValue: @""];
-        
-        [fPeersConnectField setEnabled: NO];
-        [fPeersConnectField setStringValue: @""];
-        [fPeersConnectLabel setEnabled: NO];
-    }
-    else
-        [self updateOptions];
-}
-
 @end
index 86e67e46e939f6dff3bf3978f996a632bbb37674..cd93f11d947e797d71e15c682970d9c5d2d4a144 100644 (file)
         fPeers = nil;
         [fPeerTable reloadData];
         
-        #warning should be reset when != to 1?
         [fConnectedPeersField setStringValue: @""];
     }
     else
     //sort by IP after primary sort
     if (useSecond)
     {
-        #warning when 10.6-only, replate with sortDescriptorWithKey:ascending:selector:
+        #warning when 10.6-only, replace with sortDescriptorWithKey:ascending:selector:
         NSSortDescriptor * secondDescriptor = [[NSSortDescriptor alloc] initWithKey: @"IP" ascending: asc
                                                                         selector: @selector(compareNumeric:)];
         [descriptors addObject: secondDescriptor];
index 95efde60f60cef874e02214ed18a4d85f5813958..3ce31a1c30776a70301327c2626e9ad173f1b3f9 100644 (file)
@@ -36,8 +36,6 @@
 
 @interface InfoTrackersViewController (Private)
 
-- (void) resetInfo;
-
 - (void) addTrackers;
 - (void) removeTrackers;
 
     [fTorrents release];
     fTorrents = [torrents retain];
     
-    [self resetInfo];
+    const NSUInteger numberSelected = [fTorrents count];
+    if (numberSelected != 1)
+    {
+        if (numberSelected == 0)
+        {
+            [fTrackers release];
+            fTrackers = nil;
+            
+            [fTrackerTable setTrackers: nil];
+            [fTrackerTable reloadData];
+        }
+        
+        [fTrackerTable setTorrent: nil];
+        
+        [fTrackerAddRemoveControl setEnabled: NO forSegment: TRACKER_ADD_TAG];
+        [fTrackerAddRemoveControl setEnabled: NO forSegment: TRACKER_REMOVE_TAG];
+    }
+    else
+    {
+        [fTrackerTable setTorrent: [fTorrents objectAtIndex: 0]];
+        
+        [fTrackerAddRemoveControl setEnabled: YES forSegment: TRACKER_ADD_TAG];
+        [fTrackerAddRemoveControl setEnabled: NO forSegment: TRACKER_REMOVE_TAG];
+    }
+    
+    [fTrackerTable deselectAll: self];
 }
 
 - (void) updateInfo
 
 @implementation InfoTrackersViewController (Private)
 
-- (void) resetInfo
-{
-    const NSUInteger numberSelected = [fTorrents count];
-    if (numberSelected != 1)
-    {
-        if (numberSelected == 0)
-        {
-            [fTrackers release];
-            fTrackers = nil;
-            
-            [fTrackerTable setTrackers: nil];
-            [fTrackerTable reloadData];
-        }
-        
-        [fTrackerTable setTorrent: nil];
-        
-        [fTrackerAddRemoveControl setEnabled: NO forSegment: TRACKER_ADD_TAG];
-        [fTrackerAddRemoveControl setEnabled: NO forSegment: TRACKER_REMOVE_TAG];
-    }
-    else
-    {
-        [fTrackerTable setTorrent: [fTorrents objectAtIndex: 0]];
-        
-        [fTrackerAddRemoveControl setEnabled: YES forSegment: TRACKER_ADD_TAG];
-        [fTrackerAddRemoveControl setEnabled: NO forSegment: TRACKER_REMOVE_TAG];
-    }
-    
-    [fTrackerTable deselectAll: self];
-}
-
 #warning doesn't like blank addresses
 - (void) addTrackers
 {
index 9ca42ef06b931d6a765d05e0fed8d6028e2ac0b7..a527d19495d97aeb198ceac0e4df4d7bf3ac82c6 100644 (file)
@@ -68,16 +68,7 @@ typedef enum
 
 - (id) init
 {
-    if ((self = [super initWithWindowNibName: @"InfoWindow"]))
-    {
-        fGeneralViewController = [[InfoGeneralViewController alloc] init];
-        fActivityViewController = [[InfoActivityViewController alloc] init];
-        fTrackersViewController = [[InfoTrackersViewController alloc] init];
-        fPeersViewController = [[InfoPeersViewController alloc] init];
-        fFileViewController = [[InfoFileViewController alloc] init];
-        fOptionsViewController = [[InfoOptionsViewController alloc] init];
-    }
-    
+    self = [super initWithWindowNibName: @"InfoWindow"];
     return self;
 }
 
@@ -243,8 +234,6 @@ typedef enum
     if (fCurrentTabTag == oldTabTag)
         return;
     
-    [self updateInfoStats];
-    
     //take care of old view
     CGFloat oldHeight = 0;
     NSString * oldResizeSaveKey = nil;
@@ -287,37 +276,53 @@ typedef enum
     }
     
     //set new tab item
-    NSView * view = [self tabViewForTag: fCurrentTabTag];
-    
     #warning get titles from view controller?
     NSString * resizeSaveKey = nil;
     NSString * identifier, * title;
     switch (fCurrentTabTag)
     {
         case TAB_GENERAL_TAG:
+            if (!fGeneralViewController)
+                fGeneralViewController = [[InfoGeneralViewController alloc] init];
+            
             identifier = TAB_INFO_IDENT;
             title = NSLocalizedString(@"General Info", "Inspector -> title");
             break;
         case TAB_ACTIVITY_TAG:
+            if (!fActivityViewController)
+                fActivityViewController = [[InfoActivityViewController alloc] init];
+            
             identifier = TAB_ACTIVITY_IDENT;
             title = NSLocalizedString(@"Activity", "Inspector -> title");
             break;
         case TAB_TRACKERS_TAG:
+            if (!fTrackersViewController)
+                fTrackersViewController = [[InfoTrackersViewController alloc] init];
+            
             identifier = TAB_TRACKER_IDENT;
             title = NSLocalizedString(@"Trackers", "Inspector -> title");
             resizeSaveKey = @"InspectorContentHeightTracker";
             break;
         case TAB_PEERS_TAG:
+            if (!fPeersViewController)
+                fPeersViewController = [[InfoPeersViewController alloc] init];
+            
             identifier = TAB_PEERS_IDENT;
             title = NSLocalizedString(@"Peers", "Inspector -> title");
             resizeSaveKey = @"InspectorContentHeightPeers";
             break;
         case TAB_FILE_TAG:
+            if (!fFileViewController)
+                fFileViewController = [[InfoFileViewController alloc] init];
+            
             identifier = TAB_FILES_IDENT;
             title = NSLocalizedString(@"Files", "Inspector -> title");
             resizeSaveKey = @"InspectorContentHeightFiles";
             break;
         case TAB_OPTIONS_TAG:
+            if (!fOptionsViewController)
+                fOptionsViewController = [[InfoOptionsViewController alloc] init];
+            
             identifier = TAB_OPTIONS_IDENT;
             title = NSLocalizedString(@"Options", "Inspector -> title");
             break;
@@ -335,6 +340,18 @@ typedef enum
     //selected tab item
     [(InfoTabButtonCell *)[fTabMatrix selectedCell] setSelectedTab: YES];
     
+    NSView * view = [self tabViewForTag: fCurrentTabTag];
+    
+    //if view was just loaded - has to be a better way
+    [fGeneralViewController setInfoForTorrents: fTorrents];
+    [fActivityViewController setInfoForTorrents: fTorrents];
+    [fTrackersViewController setInfoForTorrents: fTorrents];
+    [fPeersViewController setInfoForTorrents: fTorrents];
+    [fFileViewController setInfoForTorrents: fTorrents];
+    [fOptionsViewController setInfoForTorrents: fTorrents];
+    
+    [self updateInfoStats];
+    
     NSRect windowRect = [window frame], viewRect = [view frame];
     
     if (resizeSaveKey)
@@ -367,6 +384,7 @@ typedef enum
     
     [window setFrame: windowRect display: YES animate: oldTabTag != INVALID];
     [[window contentView] addSubview: view];
+    
     [view setHidden: NO];
     
     if ([NSApp isOnSnowLeopardOrBetter] && (fCurrentTabTag == TAB_FILE_TAG || oldTabTag == TAB_FILE_TAG)