move the code for remembering resize information for the info views into the individual views

This commit is contained in:
Mitchell Livingston 2010-03-14 02:53:22 +00:00
parent 236184c4a9
commit f1bfa1a3d5
8 changed files with 61 additions and 53 deletions

View File

@ -41,6 +41,8 @@
- (void) setInfoForTorrents: (NSArray *) torrents;
- (void) updateInfo;
- (void) saveViewSize;
- (void) setFileFilterText: (id) sender;
- (NSArray *) quickLookURLs;

View File

@ -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]];

View File

@ -44,6 +44,7 @@
- (void) setInfoForTorrents: (NSArray *) torrents;
- (void) updateInfo;
- (void) saveViewSize;
- (void) clearView;
- (void) stopWebSeedAnimation;

View File

@ -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

View File

@ -46,6 +46,8 @@
- (void) setInfoForTorrents: (NSArray *) torrents;
- (void) updateInfo;
- (void) saveViewSize;
- (void) clearView;
- (void) addRemoveTracker: (id) sender;

View File

@ -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];

View File

@ -32,5 +32,6 @@
@optional
- (void) clearView;
- (void) saveViewSize;
@end

View File

@ -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;