From d8546c318b2dc71d68753ca0c0abe89f07c166b3 Mon Sep 17 00:00:00 2001 From: Matthew Judy Date: Thu, 20 Nov 2003 14:42:22 +0000 Subject: [PATCH] Sizing is now in, with appropriate UI. Still working on the last of the positioning stuff. We're almost there, but the computer needs a reboot. It's dying here, and so am I, so I'm gonna get some rest and come back to this fresh. Tomorrow is Last Day, Leo, 25. Proceeding to Carousel. --- English.lproj/Preferences.nib/classes.nib | 1 + .../Preferences.nib/keyedobjects.nib | Bin 44396 -> 47444 bytes MainController.m | 2 +- PreferencesController.h | 1 + PreferencesController.m | 21 +++- StatusWindow.h | 24 ++-- StatusWindow.m | 109 +++++++++++++----- StatusWindowController.h | 4 +- StatusWindowController.m | 47 +++++--- libValidate.a | Bin 8032 -> 8032 bytes 10 files changed, 149 insertions(+), 60 deletions(-) diff --git a/English.lproj/Preferences.nib/classes.nib b/English.lproj/Preferences.nib/classes.nib index 3dea3b8..d4c2f15 100755 --- a/English.lproj/Preferences.nib/classes.nib +++ b/English.lproj/Preferences.nib/classes.nib @@ -58,6 +58,7 @@ vanishEffectPopup = NSPopUpButton; vanishSpeedSlider = NSSlider; window = NSWindow; + windowSizingPopup = NSPopUpButton; zeroConfView = NSView; }; SUPERCLASS = NSObject; diff --git a/English.lproj/Preferences.nib/keyedobjects.nib b/English.lproj/Preferences.nib/keyedobjects.nib index 19faba6f33ab39da99cace34533e2c42ff3e71c1..df26ca39503064d24639d371d2f5286b7987aaae 100755 GIT binary patch literal 47444 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

  • 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 J|6dDt{s-bt*!BPb diff --git a/MainController.m b/MainController.m index bffb59c..5b85436 100755 --- a/MainController.m +++ b/MainController.m @@ -39,10 +39,10 @@ static MainController *sharedController; sharedController = self; remoteArray = [[NSMutableArray alloc] initWithCapacity:1]; + [[PreferencesController sharedPrefs] setController:self]; statusWindowController = [StatusWindowController sharedController]; menuController = [[MenuController alloc] init]; df = [[NSUserDefaults standardUserDefaults] retain]; - [[PreferencesController sharedPrefs] setController:self]; timerUpdating = NO; blinged = NO; } diff --git a/PreferencesController.h b/PreferencesController.h index 1d556dd..5b01b28 100755 --- a/PreferencesController.h +++ b/PreferencesController.h @@ -60,6 +60,7 @@ IBOutlet NSPopUpButton *vanishEffectPopup; IBOutlet NSSlider *vanishSpeedSlider; IBOutlet NSWindow *window; + IBOutlet NSPopUpButton *windowSizingPopup; IBOutlet NSView *zeroConfView; MainController *controller; diff --git a/PreferencesController.m b/PreferencesController.m index e7421f4..a17c1b3 100755 --- a/PreferencesController.m +++ b/PreferencesController.m @@ -469,6 +469,9 @@ static PreferencesController *prefs = nil; [self setCustomColor:[NSColor colorWithCalibratedWhite:0.15 alpha:0.70] updateWell:YES]; } + } else if ( [sender tag] == 2095) { + [sw vanish:self]; + [df setInteger:[sender indexOfSelectedItem] forKey:@"statusWindowSizing"]; } [df synchronize]; @@ -517,8 +520,12 @@ static PreferencesController *prefs = nil; [df setFloat:0.8 forKey:@"statusWindowAppearanceSpeed"]; [df setFloat:0.8 forKey:@"statusWindowVanishSpeed"]; [df setFloat:4.0 forKey:@"statusWindowVanishDelay"]; + [df setInteger:(int)ITWindowPositionBottom forKey:@"statusWindowVerticalPosition"]; + [df setInteger:(int)ITWindowPositionLeft forKey:@"statusWindowHorizontalPosition"]; [df setBool:YES forKey:@"showSongInfoOnChange"]; - + + [df setObject:[NSArchiver archivedDataWithRootObject:[NSColor blueColor]] forKey:@"statusWindowBackgroundColor"]; + [df synchronize]; loginWindow = [[df persistentDomainForName:@"loginwindow"] mutableCopy]; @@ -727,6 +734,7 @@ static PreferencesController *prefs = nil; NSMutableArray *loginarray; NSEnumerator *loginEnum, *keyArrayEnum; NSString *serverName; + NSData *colorData; int selectedBGStyle; id anItem; @@ -795,8 +803,17 @@ static PreferencesController *prefs = nil; [backgroundColorPopup setEnabled:NO]; } - [backgroundColorWell setColor:(NSColor *)[NSUnarchiver unarchiveObjectWithData:[df dataForKey:@"statusWindowBackgroundColor"]]]; + colorData = [df dataForKey:@"statusWindowBackgroundColor"]; + + if ( colorData ) { + [backgroundColorWell setColor:(NSColor *)[NSUnarchiver unarchiveObjectWithData:colorData]]; + } else { + [backgroundColorWell setColor:[NSColor blueColor]]; + } + [showOnChangeCheckbox setState:([df boolForKey:@"showSongInfoOnChange"] ? NSOnState : NSOffState)]; + + [windowSizingPopup selectItem:[windowSizingPopup itemAtIndex:[windowSizingPopup indexOfItemWithTag:[df integerForKey:@"statusWindowSizing"]]]]; // Setup the sharing controls if ([df boolForKey:@"enableSharing"]) { diff --git a/StatusWindow.h b/StatusWindow.h index 8432e05..c956be7 100755 --- a/StatusWindow.h +++ b/StatusWindow.h @@ -16,24 +16,22 @@ #import -#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 +typedef enum _StatusWindowSizing { + StatusWindowRegular, + StatusWindowSmall, + StatusWindowMini +} StatusWindowSizing; + @interface StatusWindow : ITTransientStatusWindow { - NSImage *_image; - BOOL _locked; + NSImage *_image; + BOOL _locked; + StatusWindowSizing _sizing; } - (void)setImage:(NSImage *)newImage; - (void)setLocked:(BOOL)flag; +- (void)setSizing:(StatusWindowSizing)newSizing; - (void)buildTextWindowWithString:(NSString *)text; - (void)buildMeterWindowWithCharacter:(NSString *)character @@ -45,6 +43,6 @@ alternateButton:(NSString *)title target:(id)target defaultAction:(SEL)okAction - alternateAction:(SEL)alternateAction; + alternateAction:(SEL)alternateAction; @end diff --git a/StatusWindow.m b/StatusWindow.m index ca229ee..01c6ef4 100755 --- a/StatusWindow.m +++ b/StatusWindow.m @@ -9,6 +9,19 @@ #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 + @interface StatusWindow (Private) - (NSRect)setupWindowWithDataSize:(NSSize)dataSize; @end @@ -30,8 +43,9 @@ exitMode:exitMode backgroundType:backgroundType] ) ) { // Set default values. - _image = [[NSImage imageNamed:@"NSApplicationIcon"] retain]; - _locked = NO; + _image = [[NSImage imageNamed:@"NSApplicationIcon"] retain]; + _locked = NO; + _sizing = StatusWindowRegular; } return self; @@ -61,6 +75,11 @@ [self setExitMode:(flag ? ITTransientStatusWindowExitOnCommand : ITTransientStatusWindowExitAfterDelay)]; } +- (void)setSizing:(StatusWindowSizing)newSizing +{ + _sizing = newSizing; +} + /*************************************************************************/ #pragma mark - @@ -83,6 +102,7 @@ - (NSRect)setupWindowWithDataSize:(NSSize)dataSize { + float divisor = 1.0; NSRect imageRect; float imageWidth = 0.0; float imageHeight = 0.0; @@ -91,35 +111,41 @@ float contentHeight = 0.0; float windowWidth = 0.0; float windowHeight = 0.0; - NSImageView *imageView; + ITImageView *imageView; -// Get image width and height. - imageWidth = [_image size].width; - imageHeight = [_image size].height; + if ( _sizing == StatusWindowSmall ) { + divisor = SMALL_DIVISOR; + } else if ( _sizing == StatusWindowMini ) { + divisor = MINI_DIVISOR; + } + + // Get image width and height. + imageWidth = ( [_image size].width / divisor ); + imageHeight = ( [_image size].height / divisor ); // Set the content height to the greater of the text and image heights. contentHeight = ( ( imageHeight > dataHeight ) ? imageHeight : dataHeight ); // Setup the Window, and remove all its contentview's subviews. - windowWidth = ( SW_PAD + imageWidth + SW_SPACE + dataWidth + SW_PAD ); - windowHeight = ( SW_PAD + contentHeight + SW_PAD ); + windowWidth = ( (SW_PAD / divisor) + imageWidth + (SW_SPACE / divisor) + dataWidth + (SW_PAD / divisor) ); + windowHeight = ( (SW_PAD / divisor) + contentHeight + (SW_PAD / divisor) ); [self setFrame:NSMakeRect( (SW_BORDER + [[self screen] visibleFrame].origin.x), (SW_BORDER + [[self screen] visibleFrame].origin.y), windowWidth, - windowHeight) display:YES]; + windowHeight) display:YES animate:YES]; [[[self contentView] subviews] makeObjectsPerformSelector:@selector(removeFromSuperview)]; // Setup, position, fill, and add the image view to the content view. - imageRect = NSMakeRect( SW_PAD, - (SW_PAD + ((contentHeight - imageHeight) / 2)), + imageRect = NSMakeRect( (SW_PAD / divisor), + ((SW_PAD / divisor) + ((contentHeight - imageHeight) / 2)), imageWidth, imageHeight ); imageView = [[[NSImageView alloc] initWithFrame:imageRect] autorelease]; [imageView setImage:_image]; [[self contentView] addSubview:imageView]; - return NSMakeRect( (SW_PAD + imageWidth + SW_SPACE), - (SW_PAD + ((contentHeight - dataHeight) / 2)), + return NSMakeRect( ((SW_PAD / divisor) + imageWidth + (SW_SPACE / divisor)), + ((SW_PAD / divisor) + ((contentHeight - dataHeight) / 2)), dataWidth, dataHeight); } @@ -128,15 +154,26 @@ { if ( ! _locked ) { + float divisor = 1.0; float dataWidth = 0.0; float dataHeight = 0.0; NSRect dataRect; NSArray *lines = [text componentsSeparatedByString:@"\n"]; id oneLine = nil; NSEnumerator *lineEnum = [lines objectEnumerator]; - NSFont *font = [NSFont fontWithName:@"Lucida Grande Bold" size:18]; - NSDictionary *attr = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName]; + float baseFontSize = 18.0; ITTextField *textField; + NSFont *font; + NSDictionary *attr; + + if ( _sizing == StatusWindowSmall ) { + divisor = SMALL_DIVISOR; + } else if ( _sizing == StatusWindowMini ) { + divisor = MINI_DIVISOR; + } + + font = [NSFont fontWithName:@"Lucida Grande Bold" size:(baseFontSize / divisor)]; + attr = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName]; // Iterate over each line to get text width and height while ( (oneLine = [lineEnum nextObject]) ) { @@ -179,24 +216,40 @@ { if ( ! _locked ) { - NSFont *font = [NSFont fontWithName:@"Lucida Grande Bold" size:size]; - NSDictionary *attr = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName]; - NSSize charSize = [character sizeWithAttributes:attr]; - float cellHeight = ( charSize.height + 4.0 ); // Add 4.0 for shadow - float cellWidth = ( (charSize.width) + SW_METER_PAD ); // Add 8.0 for Apple suck - float dataWidth = ( cellWidth * count ); - NSRect dataRect = [self setupWindowWithDataSize:NSMakeSize(dataWidth, cellHeight)]; + float divisor = 1.0; + NSFont *font; + NSDictionary *attr; + NSSize charSize; + float cellHeight; + float cellWidth; + float dataWidth; + NSRect dataRect; NSEnumerator *cellEnum = nil; id aCell = nil; int activeCount = 0; NSColor *onColor = [NSColor whiteColor]; NSColor *offColor = [NSColor colorWithCalibratedWhite:0.15 alpha:0.50]; - NSMatrix *volMatrix = [[[NSMatrix alloc] initWithFrame:dataRect - mode:NSHighlightModeMatrix - cellClass:NSClassFromString(@"ITTextFieldCell") - numberOfRows:1 - numberOfColumns:count] autorelease]; - + NSMatrix *volMatrix; + + if ( _sizing == StatusWindowSmall ) { + divisor = SMALL_DIVISOR; + } else if ( _sizing == StatusWindowMini ) { + divisor = MINI_DIVISOR; + } + + font = [NSFont fontWithName:@"Lucida Grande Bold" size:( size / divisor )]; + attr = [NSDictionary dictionaryWithObject:font forKey:NSFontAttributeName]; + charSize = [character sizeWithAttributes:attr]; + cellHeight = ( charSize.height + 4.0 ); // Add 4.0 for shadow + cellWidth = ( (charSize.width) + (SW_METER_PAD / divisor) ); + dataWidth = ( cellWidth * count ); + dataRect = [self setupWindowWithDataSize:NSMakeSize(dataWidth, cellHeight)]; + volMatrix = [[[NSMatrix alloc] initWithFrame:dataRect + mode:NSHighlightModeMatrix + cellClass:NSClassFromString(@"ITTextFieldCell") + numberOfRows:1 + numberOfColumns:count] autorelease]; + [volMatrix setCellSize:NSMakeSize(cellWidth, cellHeight)]; [volMatrix setIntercellSpacing:NSMakeSize(0, 0)]; diff --git a/StatusWindowController.h b/StatusWindowController.h index 11d7fe8..a57c128 100755 --- a/StatusWindowController.h +++ b/StatusWindowController.h @@ -14,9 +14,7 @@ #import #import "ITMTRemote.h" - - -@class StatusWindow; +#import "StatusWindow.h" typedef enum { diff --git a/StatusWindowController.m b/StatusWindowController.m index 9e8ffff..2ee7342 100755 --- a/StatusWindowController.m +++ b/StatusWindowController.m @@ -31,31 +31,35 @@ static StatusWindowController *sharedController; - (id)init { if ( ( self = [super init] ) ) { - + float exitDelay; int entryTag; int exitTag; float entrySpeed; float exitSpeed; + NSData *colorData; + ITWindowEffect *entryEffect; ITWindowEffect *exitEffect; - + _window = [[StatusWindow sharedWindow] retain]; df = [[NSUserDefaults standardUserDefaults] retain]; - + exitDelay = [df floatForKey:@"statusWindowVanishDelay"]; entryTag = [df integerForKey:@"statusWindowAppearanceEffect"]; exitTag = [df integerForKey:@"statusWindowVanishEffect"]; entrySpeed = [df floatForKey:@"statusWindowAppearanceSpeed"]; exitSpeed = [df floatForKey:@"statusWindowVanishSpeed"]; - + [_window setExitMode:ITTransientStatusWindowExitAfterDelay]; [_window setExitDelay:(exitDelay ? exitDelay : 4.0)]; - + [_window setHorizontalPosition:[df integerForKey:@"statusWindowHorizontalPosition"]]; [_window setVerticalPosition:[df integerForKey:@"statusWindowVerticalPosition"]]; - + + [_window setSizing:(StatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; + if ( entryTag == 2101 ) { entryEffect = [[[ITDissolveWindowEffect alloc] initWithWindow:_window] autorelease]; } else if ( entryTag == 2102 ) { @@ -67,9 +71,9 @@ static StatusWindowController *sharedController; } else { entryEffect = [[[ITCutWindowEffect alloc] initWithWindow:_window] autorelease]; } - + [_window setEntryEffect:entryEffect]; - + if ( exitTag == 2100 ) { exitEffect = [[[ITCutWindowEffect alloc] initWithWindow:_window] autorelease]; } else if ( exitTag == 2102 ) { @@ -81,17 +85,23 @@ static StatusWindowController *sharedController; } else { exitEffect = [[[ITDissolveWindowEffect alloc] initWithWindow:_window] autorelease]; } - + [_window setExitEffect:exitEffect]; - + [[_window entryEffect] setEffectTime:(entrySpeed ? entrySpeed : 0.8)]; [[_window exitEffect] setEffectTime:(exitSpeed ? exitSpeed : 0.8)]; [(ITTSWBackgroundView *)[_window contentView]setBackgroundMode: (ITTSWBackgroundMode)[df integerForKey:@"statusWindowBackgroundMode"]]; - - [(ITTSWBackgroundView *)[_window contentView]setBackgroundColor: - (NSColor *)[NSUnarchiver unarchiveObjectWithData:[df dataForKey:@"statusWindowBackgroundColor"]]]; + + colorData = [df dataForKey:@"statusWindowBackgroundColor"]; + + if ( colorData ) { + [(ITTSWBackgroundView *)[_window contentView] setBackgroundColor: + (NSColor *)[NSUnarchiver unarchiveObjectWithData:colorData]]; + } else { + [(ITTSWBackgroundView *)[_window contentView] setBackgroundColor:[NSColor blueColor]]; + } } return self; @@ -161,6 +171,8 @@ static StatusWindowController *sharedController; text = [text stringByAppendingString:[@"\n" stringByAppendingString:ratingString]]; } + + [_window setSizing:(StatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; [_window buildTextWindowWithString:text]; [_window appear:self]; } @@ -171,6 +183,7 @@ static StatusWindowController *sharedController; NSString *bull = [NSString stringWithUTF8String:"♪ "]; NSString *end = [@"\n" stringByAppendingString:bull]; [_window setImage:[NSImage imageNamed:@"Upcoming"]]; + [_window setSizing:(StatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; [_window buildTextWindowWithString:[bull stringByAppendingString:[titleStrings componentsJoinedByString:end]]]; [_window appear:self]; } @@ -178,6 +191,7 @@ static StatusWindowController *sharedController; - (void)showVolumeWindowWithLevel:(float)level { [_window setImage:[NSImage imageNamed:@"Volume"]]; + [_window setSizing:(StatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; [_window buildMeterWindowWithCharacter:[NSString stringWithUTF8String:"▊"] size:18 count:10 @@ -188,6 +202,7 @@ static StatusWindowController *sharedController; - (void)showRatingWindowWithRating:(float)rating { [_window setImage:[NSImage imageNamed:@"Rating"]]; + [_window setSizing:(StatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; [_window buildMeterWindowWithCharacter:[NSString stringWithUTF8String:"★"] size:48 count:5 @@ -198,6 +213,7 @@ static StatusWindowController *sharedController; - (void)showShuffleWindow:(BOOL)shuffle { [_window setImage:[NSImage imageNamed:@"Shuffle"]]; + [_window setSizing:(StatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; [_window buildTextWindowWithString:( shuffle ? @"Shuffle On" : @"Shuffle Off")]; [_window appear:self]; } @@ -215,6 +231,7 @@ static StatusWindowController *sharedController; } [_window setImage:[NSImage imageNamed:@"Repeat"]]; + [_window setSizing:(StatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; [_window buildTextWindowWithString:string]; [_window appear:self]; } @@ -224,6 +241,7 @@ static StatusWindowController *sharedController; NSString *message = @"Would you like MenuTunes to launch\nautomatically at startup?"; [_window setImage:[NSImage imageNamed:@"Setup"]]; + [_window setSizing:(StatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; [_window buildDialogWindowWithMessage:message defaultButton:@"Launch at Startup" alternateButton:@"Launch Manually" @@ -241,6 +259,7 @@ static StatusWindowController *sharedController; NSString *message = @"Your 7-day unlimited trial period has elapsed.\nYou must register to continue using MenuTunes."; [_window setImage:[NSImage imageNamed:@"Register"]]; + [_window setSizing:(StatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; [_window buildDialogWindowWithMessage:message defaultButton:@"Register Now" alternateButton:@"Quit MenuTunes" @@ -257,6 +276,7 @@ static StatusWindowController *sharedController; NSString *message = @"The selected shared player is available again.\nWould you like to reconnect to it?."; [_window setImage:[NSImage imageNamed:@"Register"]]; + [_window setSizing:(StatusWindowSizing)[df integerForKey:@"statusWindowSizing"]]; [_window buildDialogWindowWithMessage:message defaultButton:@"Reconnect" alternateButton:@"Ignore" @@ -268,4 +288,5 @@ static StatusWindowController *sharedController; [_window setLocked:YES]; } + @end \ No newline at end of file diff --git a/libValidate.a b/libValidate.a index 4b1a4b841c07c1030e065f3965c3109425b47a71..94c53946ac9c7157ff1d8781eaf198b5ad103893 100755 GIT binary patch delta 16 XcmaE0_rPv~EUU4FxtaM!B|CWlG;swk delta 16 XcmaE0_rPv~EUS^3rKQD2B|CWlG<^jz -- 2.20.1