From: Matthew Judy Date: Mon, 24 Nov 2003 18:54:59 +0000 (+0000) Subject: This about does it. I want to do a couple more things, especially multiple screen... X-Git-Tag: v1.2~25 X-Git-Url: http://git.ithinksw.org/MenuTunes.git/commitdiff_plain/a182eb127d3f864b1c7208658451f8a7e21aeed1 This about does it. I want to do a couple more things, especially multiple screen support. With the way I've got this set up, it should be pretty easy, but I need sleep first. If you want it in there, I'll do it after some sleep. --- diff --git a/English.lproj/Preferences.nib/info.nib b/English.lproj/Preferences.nib/info.nib index a98025e..33cecb8 100755 --- a/English.lproj/Preferences.nib/info.nib +++ b/English.lproj/Preferences.nib/info.nib @@ -3,7 +3,7 @@ IBDocumentLocation - 0 3 356 240 0 0 1056 770 + 39 237 356 240 0 0 1056 770 IBEditorPositions 634 @@ -20,6 +20,7 @@ IBOpenObjects 6 + 793 IBSystem Version 7C107 diff --git a/English.lproj/Preferences.nib/keyedobjects.nib b/English.lproj/Preferences.nib/keyedobjects.nib index ec39348..ca7a082 100755 Binary files a/English.lproj/Preferences.nib/keyedobjects.nib and b/English.lproj/Preferences.nib/keyedobjects.nib differ diff --git a/PreferencesController.m b/PreferencesController.m index 3919848..6f18bc0 100755 --- a/PreferencesController.m +++ b/PreferencesController.m @@ -384,7 +384,7 @@ static PreferencesController *prefs = nil; BOOL entryEffectValid = YES; BOOL exitEffectValid = YES; - + [df setInteger:[sender selectedRow] forKey:@"statusWindowVerticalPosition"]; [df setInteger:[sender selectedColumn] forKey:@"statusWindowHorizontalPosition"]; [sw setVerticalPosition:[sender selectedRow]]; @@ -416,8 +416,7 @@ static PreferencesController *prefs = nil; [vanishEffectPopup selectItemAtIndex:[[vanishEffectPopup menu] indexOfItemWithRepresentedObject:[[sw exitEffect] class]]]; } - // Update the window's position. - // Yeah, do that. + [(MainController *)controller showCurrentTrackInfo]; } else if ( [sender tag] == 2020) { @@ -485,8 +484,8 @@ static PreferencesController *prefs = nil; } } else if ( [sender tag] == 2095) { - [sw vanish:self]; [df setInteger:[sender indexOfSelectedItem] forKey:@"statusWindowSizing"]; + [(MainController *)controller showCurrentTrackInfo]; } [df synchronize]; diff --git a/StatusWindow.m b/StatusWindow.m index 3465be3..8377ac0 100755 --- a/StatusWindow.m +++ b/StatusWindow.m @@ -9,18 +9,18 @@ #import "StatusWindow.h" -#define SW_PAD 24.00 -#define SW_SPACE 24.00 -#define SW_MINW 211.00 -#define SW_BORDER 32.00 -#define SW_METER_PAD 4.00 -#define SW_BUTTON_PAD_R 30.00 -#define SW_BUTTON_PAD_B 24.00 -#define SW_BUTTON_DIV 12.00 -#define SW_BUTTON_EXTRA_W 8.00 -#define SW_SHADOW_SAT 1.25 -#define SMALL_DIVISOR 1.33333 -#define MINI_DIVISOR 1.66667 +#define SW_PAD 24.00 +#define SW_SPACE 24.00 +#define SW_MINW 211.00 +#define SW_BORDER 32.00 +#define SW_METER_PAD 4.00 +#define SW_BUTTON_PAD_R 30.00 +#define SW_BUTTON_PAD_B 24.00 +#define SW_BUTTON_DIV 12.00 +#define SW_BUTTON_EXTRA_W 8.00 +#define SW_SHADOW_SAT 1.25 +#define SMALL_DIVISOR 1.33333 +#define MINI_DIVISOR 1.66667 @interface StatusWindow (Private) - (NSRect)setupWindowWithDataSize:(NSSize)dataSize; @@ -111,6 +111,15 @@ float contentHeight = 0.0; float windowWidth = 0.0; float windowHeight = 0.0; + NSRect visibleFrame = [[self screen] visibleFrame]; + NSPoint screenOrigin = visibleFrame.origin; + float screenWidth = visibleFrame.size.width; + float screenHeight = visibleFrame.size.height; + float maxWidth = ( screenWidth - (SW_BORDER * 2) ); + float maxHeight = ( screenHeight - (SW_BORDER * 2) ); + float excessWidth = 0.0; + float excessHeight = 0.0; + NSPoint windowOrigin; ITImageView *imageView; if ( _sizing == StatusWindowSmall ) { @@ -119,7 +128,7 @@ divisor = MINI_DIVISOR; } - // Get image width and height. +// Get image width and height. imageWidth = ( [_image size].width / divisor ); imageHeight = ( [_image size].height / divisor ); @@ -130,20 +139,51 @@ windowWidth = ( (SW_PAD / divisor) + imageWidth + (SW_SPACE / divisor) + dataWidth + (SW_PAD / divisor) ); windowHeight = ( (SW_PAD / divisor) + contentHeight + (SW_PAD / divisor) ); -#warning Adjust frame for positioning here. +// Constrain size to max limits. Adjust data sizes accordingly. + excessWidth = (windowWidth - maxWidth ); + excessHeight = (windowHeight - maxHeight); + + if ( excessWidth > 0.0 ) { + windowWidth = maxWidth; + dataWidth -= excessWidth; + } + + if ( excessHeight > 0.0 ) { + windowHeight = maxHeight; + dataHeight -= excessHeight; + } - [self setFrame:NSMakeRect( (SW_BORDER + [[self screen] visibleFrame].origin.x), - (SW_BORDER + [[self screen] visibleFrame].origin.y), + if ( [self horizontalPosition] == ITWindowPositionLeft ) { + windowOrigin.x = ( SW_BORDER + screenOrigin.x ); + } else if ( [self horizontalPosition] == ITWindowPositionCenter ) { + windowOrigin.x = ( screenOrigin.x + (screenWidth / 2) - (windowWidth / 2) ); + } else if ( [self horizontalPosition] == ITWindowPositionRight ) { + windowOrigin.x = ( screenOrigin.x + screenWidth - (windowWidth + SW_BORDER) ); + } + + if ( [self verticalPosition] == ITWindowPositionTop ) { + windowOrigin.y = ( screenOrigin.y + screenHeight - (windowHeight + SW_BORDER) ); + } else if ( [self verticalPosition] == ITWindowPositionMiddle ) { +// Middle-oriented windows should be slightly proud of the screen's middle. + windowOrigin.y = ( (screenOrigin.y + (screenHeight / 2) - (windowHeight / 2)) + (screenHeight / 8) ); + } else if ( [self verticalPosition] == ITWindowPositionBottom ) { + windowOrigin.y = ( SW_BORDER + screenOrigin.y ); + } + + [self setFrame:NSMakeRect( windowOrigin.x, + windowOrigin.y, windowWidth, windowHeight) display:YES animate:YES]; - [[[self contentView] subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)]; + [[[self contentView] subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)]; + // Setup, position, fill, and add the image view to the content view. imageRect = NSMakeRect( (SW_PAD / divisor), ((SW_PAD / divisor) + ((contentHeight - imageHeight) / 2)), imageWidth, imageHeight ); imageView = [[[NSImageView alloc] initWithFrame:imageRect] autorelease]; + [imageView setAutoresizingMask:(NSViewMinYMargin | NSViewMaxYMargin)]; [imageView setImage:_image]; [[self contentView] addSubview:imageView]; @@ -195,6 +235,7 @@ // Create, position, setup, fill, and add the text view to the content view. textField = [[[ITTextField alloc] initWithFrame:dataRect] autorelease]; + [textField setAutoresizingMask:(NSViewHeightSizable | NSViewWidthSizable)]; [textField setEditable:NO]; [textField setSelectable:NO]; [textField setBordered:NO]; @@ -202,6 +243,7 @@ [textField setFont:font]; [textField setTextColor:[NSColor whiteColor]]; [textField setCastsShadow:YES]; + [[textField cell] setWraps:NO]; [textField setStringValue:text]; [textField setShadowSaturation:SW_SHADOW_SAT]; [[self contentView] addSubview:textField]; @@ -255,6 +297,7 @@ [volMatrix setCellSize:NSMakeSize(cellWidth, cellHeight)]; [volMatrix setIntercellSpacing:NSMakeSize(0, 0)]; + [volMatrix setAutoresizingMask:(NSViewHeightSizable | NSViewWidthSizable)]; cellEnum = [[volMatrix cells] objectEnumerator]; @@ -427,5 +470,9 @@ } } +- (NSTimeInterval)animationResizeTime:(NSRect)newFrame +{ + return (NSTimeInterval)0.25; +} @end diff --git a/libValidate.a b/libValidate.a index 49fb834..600c085 100755 Binary files a/libValidate.a and b/libValidate.a differ