From f1bfa1a3d573f363ce961ca5b1819a56b9b7374b Mon Sep 17 00:00:00 2001 From: Mitchell Livingston Date: Sun, 14 Mar 2010 02:53:22 +0000 Subject: [PATCH] move the code for remembering resize information for the info views into the individual views --- macosx/InfoFileViewController.h | 2 + macosx/InfoFileViewController.m | 13 ++++++ macosx/InfoPeersViewController.h | 1 + macosx/InfoPeersViewController.m | 13 ++++++ macosx/InfoTrackersViewController.h | 2 + macosx/InfoTrackersViewController.m | 17 ++++++++ macosx/InfoViewController.h | 1 + macosx/InfoWindowController.m | 65 ++++++----------------------- 8 files changed, 61 insertions(+), 53 deletions(-) diff --git a/macosx/InfoFileViewController.h b/macosx/InfoFileViewController.h index a677ea945..d96d9dccf 100644 --- a/macosx/InfoFileViewController.h +++ b/macosx/InfoFileViewController.h @@ -41,6 +41,8 @@ - (void) setInfoForTorrents: (NSArray *) torrents; - (void) updateInfo; +- (void) saveViewSize; + - (void) setFileFilterText: (id) sender; - (NSArray *) quickLookURLs; diff --git a/macosx/InfoFileViewController.m b/macosx/InfoFileViewController.m index 33b814b46..c23856c7d 100644 --- a/macosx/InfoFileViewController.m +++ b/macosx/InfoFileViewController.m @@ -46,6 +46,14 @@ - (void) awakeFromNib { + const CGFloat height = [[NSUserDefaults standardUserDefaults] floatForKey: @"InspectorContentHeightFiles"]; + if (height != 0.0) + { + NSRect viewRect = [[self view] frame]; + viewRect.size.height = height; + [[self view] setFrame: viewRect]; + } + [[fFileFilterField cell] setPlaceholderString: NSLocalizedString(@"Filter", "inspector -> file filter")]; } @@ -76,6 +84,11 @@ [fFileController reloadData]; } +- (void) saveViewSize +{ + [[NSUserDefaults standardUserDefaults] setFloat: NSHeight([[self view] frame]) forKey: @"InspectorContentHeightFiles"]; +} + - (void) setFileFilterText: (id) sender { [fFileController setFilterText: [sender stringValue]]; diff --git a/macosx/InfoPeersViewController.h b/macosx/InfoPeersViewController.h index ac92baa0c..b8643ed9d 100644 --- a/macosx/InfoPeersViewController.h +++ b/macosx/InfoPeersViewController.h @@ -44,6 +44,7 @@ - (void) setInfoForTorrents: (NSArray *) torrents; - (void) updateInfo; +- (void) saveViewSize; - (void) clearView; - (void) stopWebSeedAnimation; diff --git a/macosx/InfoPeersViewController.m b/macosx/InfoPeersViewController.m index 108627c80..edd62c0e6 100644 --- a/macosx/InfoPeersViewController.m +++ b/macosx/InfoPeersViewController.m @@ -47,6 +47,14 @@ - (void) awakeFromNib { + const CGFloat height = [[NSUserDefaults standardUserDefaults] floatForKey: @"InspectorContentHeightPeers"]; + if (height != 0.0) + { + NSRect viewRect = [[self view] frame]; + viewRect.size.height = height; + [[self view] setFrame: viewRect]; + } + //set table header text [[[fPeerTable tableColumnWithIdentifier: @"IP"] headerCell] setStringValue: NSLocalizedString(@"IP Address", "inspector -> peer table -> header")]; @@ -221,6 +229,11 @@ } } +- (void) saveViewSize +{ + [[NSUserDefaults standardUserDefaults] setFloat: NSHeight([[self view] frame]) forKey: @"InspectorContentHeightPeers"]; +} + - (void) clearView { //if in the middle of animating, just stop and resize immediately diff --git a/macosx/InfoTrackersViewController.h b/macosx/InfoTrackersViewController.h index 4d6f1287d..730bf7a92 100644 --- a/macosx/InfoTrackersViewController.h +++ b/macosx/InfoTrackersViewController.h @@ -46,6 +46,8 @@ - (void) setInfoForTorrents: (NSArray *) torrents; - (void) updateInfo; + +- (void) saveViewSize; - (void) clearView; - (void) addRemoveTracker: (id) sender; diff --git a/macosx/InfoTrackersViewController.m b/macosx/InfoTrackersViewController.m index a4630fdf1..a16c939da 100644 --- a/macosx/InfoTrackersViewController.m +++ b/macosx/InfoTrackersViewController.m @@ -34,6 +34,7 @@ #define TRACKER_ADD_TAG 0 #define TRACKER_REMOVE_TAG 1 + @interface InfoTrackersViewController (Private) - (void) setupInfo; @@ -55,6 +56,17 @@ return self; } +- (void) awakeFromNib +{ + const CGFloat height = [[NSUserDefaults standardUserDefaults] floatForKey: @"InspectorContentHeightTracker"]; + if (height != 0.0) + { + NSRect viewRect = [[self view] frame]; + viewRect.size.height = height; + [[self view] setFrame: viewRect]; + } +} + - (void) dealloc { [fTorrents release]; @@ -122,6 +134,11 @@ } } +- (void) saveViewSize +{ + [[NSUserDefaults standardUserDefaults] setFloat: NSHeight([[self view] frame]) forKey: @"InspectorContentHeightTracker"]; +} + - (void) clearView { [fTrackers release]; diff --git a/macosx/InfoViewController.h b/macosx/InfoViewController.h index 9d73dd480..8bb1d090c 100644 --- a/macosx/InfoViewController.h +++ b/macosx/InfoViewController.h @@ -32,5 +32,6 @@ @optional - (void) clearView; +- (void) saveViewSize; @end diff --git a/macosx/InfoWindowController.m b/macosx/InfoWindowController.m index d095c199e..77033fee8 100644 --- a/macosx/InfoWindowController.m +++ b/macosx/InfoWindowController.m @@ -141,25 +141,11 @@ typedef enum - (void) dealloc { - //save resizeable view height - NSString * resizeSaveKey = nil; - switch (fCurrentTabTag) - { - case TAB_TRACKERS_TAG: - resizeSaveKey = @"InspectorContentHeightTracker"; - break; - case TAB_PEERS_TAG: - resizeSaveKey = @"InspectorContentHeightPeers"; - break; - case TAB_FILE_TAG: - resizeSaveKey = @"InspectorContentHeightFiles"; - break; - } - if (resizeSaveKey) - [[NSUserDefaults standardUserDefaults] setFloat: [[fViewController view] frame].size.height forKey: resizeSaveKey]; - [[NSNotificationCenter defaultCenter] removeObserver: self]; + if ([fViewController respondsToSelector: @selector(saveViewSize)]) + [fViewController saveViewSize]; + [fGeneralViewController dealloc]; [fActivityViewController dealloc]; [fTrackersViewController dealloc]; @@ -214,32 +200,19 @@ typedef enum //take care of old view CGFloat oldHeight = 0; - NSString * oldResizeSaveKey = nil; if (oldTabTag != INVALID) { //deselect old tab item [(InfoTabButtonCell *)[fTabMatrix cellWithTag: oldTabTag] setSelectedTab: NO]; + if ([fViewController respondsToSelector: @selector(saveViewSize)]) + [fViewController saveViewSize]; + if ([fViewController respondsToSelector: @selector(clearView)]) [fViewController clearView]; - switch (oldTabTag) - { - case TAB_TRACKERS_TAG: - oldResizeSaveKey = @"InspectorContentHeightTracker"; - break; - case TAB_PEERS_TAG: - oldResizeSaveKey = @"InspectorContentHeightPeers"; - break; - case TAB_FILE_TAG: - oldResizeSaveKey = @"InspectorContentHeightFiles"; - break; - } - NSView * oldView = [fViewController view]; oldHeight = NSHeight([oldView frame]); - if (oldResizeSaveKey) - [[NSUserDefaults standardUserDefaults] setFloat: oldHeight forKey: oldResizeSaveKey]; //remove old view [oldView setHidden: YES]; @@ -248,7 +221,6 @@ typedef enum //set new tab item #warning get titles from view controller? - NSString * resizeSaveKey = nil; NSString * identifier, * title; switch (fCurrentTabTag) { @@ -284,7 +256,6 @@ typedef enum fViewController = fTrackersViewController; identifier = TAB_TRACKER_IDENT; title = NSLocalizedString(@"Trackers", "Inspector -> title"); - resizeSaveKey = @"InspectorContentHeightTracker"; break; case TAB_PEERS_TAG: if (!fPeersViewController) @@ -296,7 +267,6 @@ typedef enum fViewController = fPeersViewController; identifier = TAB_PEERS_IDENT; title = NSLocalizedString(@"Peers", "Inspector -> title"); - resizeSaveKey = @"InspectorContentHeightPeers"; break; case TAB_FILE_TAG: if (!fFileViewController) @@ -308,7 +278,6 @@ typedef enum fViewController = fFileViewController; identifier = TAB_FILES_IDENT; title = NSLocalizedString(@"Files", "Inspector -> title"); - resizeSaveKey = @"InspectorContentHeightFiles"; break; case TAB_OPTIONS_TAG: if (!fOptionsViewController) @@ -341,29 +310,19 @@ typedef enum NSRect windowRect = [window frame], viewRect = [view frame]; - if (resizeSaveKey) - { - CGFloat height = [[NSUserDefaults standardUserDefaults] floatForKey: resizeSaveKey]; - if (height != 0.0) - viewRect.size.height = MAX(height, TAB_MIN_HEIGHT); - } - - CGFloat difference = (viewRect.size.height - oldHeight) * [window userSpaceScaleFactor]; + CGFloat difference = (NSHeight(viewRect) - oldHeight) * [window userSpaceScaleFactor]; windowRect.origin.y -= difference; windowRect.size.height += difference; - if (resizeSaveKey) + if ([fViewController respondsToSelector: @selector(saveViewSize)]) //a little bit hacky, but avoids an extra required method { - if (!oldResizeSaveKey) - { - [window setMinSize: NSMakeSize([window minSize].width, windowRect.size.height - viewRect.size.height + TAB_MIN_HEIGHT)]; - [window setMaxSize: NSMakeSize(FLT_MAX, FLT_MAX)]; - } + [window setMinSize: NSMakeSize([window minSize].width, NSHeight(windowRect) - NSHeight(viewRect) + TAB_MIN_HEIGHT)]; + [window setMaxSize: NSMakeSize(FLT_MAX, FLT_MAX)]; } else { - [window setMinSize: NSMakeSize([window minSize].width, windowRect.size.height)]; - [window setMaxSize: NSMakeSize(FLT_MAX, windowRect.size.height)]; + [window setMinSize: NSMakeSize([window minSize].width, NSHeight(windowRect))]; + [window setMaxSize: NSMakeSize(FLT_MAX, NSHeight(windowRect))]; } viewRect.size.width = windowRect.size.width;