From: Matthew Judy Date: Mon, 24 Feb 2003 09:08:40 +0000 (+0000) Subject: Adding the new StatusWindow in rudimentary fashion. It builds with no warnings,... X-Git-Tag: v1.0~223 X-Git-Url: http://git.ithinksw.org/MenuTunes.git/commitdiff_plain/8c8ad0b57aee475a9b03939aa932d96610587c25 Adding the new StatusWindow in rudimentary fashion. It builds with no warnings, yet probably does not work. Also adding the finished graphics... more to come. --- diff --git a/CD.tiff b/CD.tiff new file mode 100755 index 0000000..fae345e Binary files /dev/null and b/CD.tiff differ diff --git a/English.lproj/Preferences.nib/info.nib b/English.lproj/Preferences.nib/info.nib index 727bff0..ec63d35 100755 --- a/English.lproj/Preferences.nib/info.nib +++ b/English.lproj/Preferences.nib/info.nib @@ -3,7 +3,7 @@ IBDocumentLocation - 4 276 356 240 0 0 1056 770 + 343 32 356 240 0 0 1056 770 IBFramework Version 291.0 IBGroupedObjects @@ -23,7 +23,6 @@ IBOpenObjects 6 - 115 IBSystem Version 6I32 diff --git a/English.lproj/Preferences.nib/keyedobjects.nib b/English.lproj/Preferences.nib/keyedobjects.nib index a1ceaea..bb6016c 100755 Binary files a/English.lproj/Preferences.nib/keyedobjects.nib and b/English.lproj/Preferences.nib/keyedobjects.nib differ diff --git a/Library.tiff b/Library.tiff new file mode 100755 index 0000000..e858cbd Binary files /dev/null and b/Library.tiff differ diff --git a/MenuTunes.h b/MenuTunes.h index 6e66299..dd79366 100755 --- a/MenuTunes.h +++ b/MenuTunes.h @@ -6,7 +6,7 @@ * Original Author : Kent Sutherland * Responsibility : Kent Sutherland * - * Copyright (c) 2002 iThink Software. + * Copyright (c) 2002-2003 iThink Software. * All Rights Reserved * */ @@ -17,10 +17,10 @@ #import #import #import - +#import //@class MenuTunesView; -@class PreferencesController, ITTransientStatusWindow; +@class PreferencesController, StatusWindow; @interface MenuTunes : NSObject { @@ -52,7 +52,7 @@ NSMenuItem *playPauseMenuItem; //Toggle between 'Play' and 'Pause' PreferencesController *prefsController; - ITTransientStatusWindow *statusWindow; //Shows track info and upcoming songs. + StatusWindow *statusWindow; //Shows track info and upcoming songs. } - (void)registerDefaultsIfNeeded; diff --git a/MenuTunes.m b/MenuTunes.m index 532e17d..d03da70 100755 --- a/MenuTunes.m +++ b/MenuTunes.m @@ -10,6 +10,7 @@ Things to do: #import "MenuTunes.h" #import "PreferencesController.h" #import "HotKeyCenter.h" +#import "StatusWindow.h" @interface MenuTunes(Private) - (ITMTRemote *)loadRemote; @@ -35,7 +36,7 @@ Things to do: { if ( ( self = [super init] ) ) { remoteArray = [[NSMutableArray alloc] initWithCapacity:1]; - statusWindow = [ITTransientStatusWindow sharedWindow]; + statusWindow = [StatusWindow sharedWindow]; } return self; } @@ -53,17 +54,14 @@ Things to do: menu = [[NSMenu alloc] initWithTitle:@""]; isAppRunning = [currentRemote isAppRunning]; - if (isAppRunning) - { + if (isAppRunning) { [self rebuildMenu]; refreshTimer = [NSTimer scheduledTimerWithTimeInterval:3.5 target:self selector:@selector(timerUpdate) userInfo:nil repeats:YES]; - } - else - { + } else { menu = [[NSMenu alloc] initWithTitle:@""]; [[menu addItemWithTitle:@"Open iTunes" action:@selector(openiTunes:) keyEquivalent:@""] setTarget:self]; [[menu addItemWithTitle:@"Preferences" action:@selector(showPreferences:) keyEquivalent:@""] setTarget:self]; @@ -236,8 +234,7 @@ Things to do: keyEquivalent:@""]; [playPauseMenuItem setTarget:self]; - if (tempCombo) - { + if (tempCombo) { [self setKeyEquivalentForCode:[tempCombo keyCode] andModifiers:[tempCombo modifiers] onItem:playPauseMenuItem]; [tempCombo release]; @@ -249,8 +246,7 @@ Things to do: keyEquivalent:@""]; [nextTrack setTarget:self]; - if (tempCombo) - { + if (tempCombo) { [self setKeyEquivalentForCode:[tempCombo keyCode] andModifiers:[tempCombo modifiers] onItem:nextTrack]; [tempCombo release]; @@ -262,8 +258,7 @@ Things to do: keyEquivalent:@""]; [prevTrack setTarget:self]; - if (tempCombo) - { + if (tempCombo) { [self setKeyEquivalentForCode:[tempCombo keyCode] andModifiers:[tempCombo modifiers] onItem:prevTrack]; [tempCombo release]; @@ -334,8 +329,7 @@ Things to do: [self rebuildEQPresetsMenu]; } - if (trackInfoIndex > -1) - { + if (trackInfoIndex > -1) { NSString *curSongName, *curAlbumName = @"", *curArtistName = @""; curSongName = [currentRemote currentSongTitle]; @@ -480,8 +474,7 @@ Things to do: NSArray *playlists = [currentRemote playlists]; int i, curPlaylist = [currentRemote currentPlaylistIndex]; - if (isPlayingRadio) - { + if (isPlayingRadio) { curPlaylist = 0; } if (playlistMenu && ([playlists count] == [playlistMenu numberOfItems])) @@ -604,16 +597,13 @@ Things to do: [self updateMenu]; lastSongIndex = trackPlayingIndex; - } - else - { + } else { if (playlist != [currentRemote currentPlaylistIndex]) { BOOL wasPlayingRadio = isPlayingRadio; isPlayingRadio = [[currentRemote classOfPlaylistAtIndex:playlist] isEqualToString:@"radio tuner playlist"]; if (isPlayingRadio && !wasPlayingRadio) { int i; - for (i = 0; i < [playlistMenu numberOfItems]; i++) - { + for (i = 0; i < [playlistMenu numberOfItems]; i++) { [[playlistMenu itemAtIndex:i] setState:NSOffState]; } } @@ -819,7 +809,7 @@ Things to do: } } - [statusWindow setTrackInfo:stringToShow]; + [statusWindow setText:stringToShow]; [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(fadeAndCloseStatusWindow) @@ -848,7 +838,7 @@ Things to do: songs = [songs stringByAppendingString:@"\n"]; } } - [statusWindow setUpcomingSongs:songs]; + [statusWindow setText:songs]; [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(fadeAndCloseStatusWindow) @@ -877,10 +867,8 @@ Things to do: { shiftKey, NSShiftKeyMask }, }; - for (i = 0; i < 6; i++) - { - if (modifiers & carbonToCocoa[i][0]) - { + for (i = 0; i < 6; i++) { + if (modifiers & carbonToCocoa[i][0]) { cocoaModifiers += carbonToCocoa[i][1]; } } diff --git a/Radio.tiff b/Radio.tiff new file mode 100755 index 0000000..45f7f9a Binary files /dev/null and b/Radio.tiff differ diff --git a/StatusWindow.h b/StatusWindow.h new file mode 100755 index 0000000..3fbc7be --- /dev/null +++ b/StatusWindow.h @@ -0,0 +1,36 @@ +/* + * MenuTunes + * StatusWindow + * ITTransientStatusWindow subclass for MenuTunes + * + * Original Author : Matthew Judy + * Responsibility : Matthew Judy + * + * Copyright (c) 2003 iThink Software. + * All Rights Reserved + * + */ + + +#import +#import + + +#define SW_PAD 24.0 +#define SW_SPACE 24.0 +#define SW_MINW 211.0 +#define SW_BORDER 32.0 + + +@interface StatusWindow : ITTransientStatusWindow { + NSImage *image; + NSString *text; + NSImageView *imageView; + ITTextField *textField; +} + +- (void)setImage:(NSImage *)newImage; +- (void)setText:(NSString *)newText; + + +@end diff --git a/StatusWindow.m b/StatusWindow.m new file mode 100755 index 0000000..ca12378 --- /dev/null +++ b/StatusWindow.m @@ -0,0 +1,122 @@ +// +// StatusWindow.m +// MenuTunes +// +// Created by Matt L. Judy on Sat Feb 22 2003. +// Copyright (c) 2003 NibFile.com. All rights reserved. +// + +#import "StatusWindow.h" + + +@interface StatusWindow (Private) +- (void)buildStatusWindow; +@end + + +@implementation StatusWindow + +- (id)initWithContentView:(NSView *)contentView + exitMode:(ITTransientStatusWindowExitMode)exitMode + backgroundType:(ITTransientStatusWindowBackgroundType)backgroundType +{ + if ( ( self = [super initWithContentView:contentView + exitMode:exitMode + backgroundType:backgroundType]) ) { + // Default images and text. + image = [NSImage imageNamed:@"NSApplicationIcon"]; + text = @"No string set yet."; + [self buildStatusWindow]; + } + return self; +} + +- (void)buildStatusWindow +{ + NSRect imageRect; + NSRect textRect; + float imageWidth = 0.0; + float imageHeight = 0.0; + float textWidth = 0.0; + float textHeight = 0.0; + float contentHeight = 0.0; + float windowWidth = 0.0; + float windowHeight = 0.0; + 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]; + + // Get image width and height. + imageWidth = [image size].width; + imageHeight = [image size].height; + + // Iterate over each line to get text width and height + while ( oneLine = [lineEnum nextObject] ) { + // Get the width of one line, adding 8.0 because Apple sucks donkey rectum. + float oneLineWidth = ( [oneLine sizeWithAttributes:attr].width + 8.0 ); + // Add the height of this line to the total text height + textHeight += [oneLine sizeWithAttributes:attr].height; + // If this line wider than the last one, set it as the text width. + textWidth = ( ( textWidth > oneLineWidth ) ? textWidth : oneLineWidth ); + } + + // Add 4.0 to the final textHeight to accomodate the shadow. + textHeight += 4.0; + + // Set the content height to the greater of the text and image heights. + contentHeight = ( ( imageHeight > textHeight ) ? imageHeight : textHeight ); + + // Setup the Window, and remove all its contentview's subviews. + windowWidth = ( SW_PAD + imageWidth + SW_SPACE + textWidth + SW_PAD ); + windowHeight = ( SW_PAD + contentHeight + SW_PAD ); + [self setFrame:NSMakeRect(SW_BORDER, SW_BORDER, windowWidth, windowHeight) display: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)), + imageWidth, + imageHeight ); + imageView = [[[NSImageView alloc] initWithFrame:imageRect] autorelease]; + [imageView setImage:image]; + [[self contentView] addSubview:imageView]; + + // Setup, position, fill, and add the text view to the content view. + textRect = NSMakeRect( (SW_PAD + imageWidth + SW_SPACE), + (SW_PAD + ((contentHeight - textHeight) / 2)), + textWidth, + textHeight); + textField = [[[ITTextField alloc] initWithFrame:textRect] autorelease]; + [textField setEditable:NO]; + [textField setSelectable:NO]; + [textField setBordered:NO]; + [textField setDrawsBackground:NO]; + [textField setFont:[NSFont fontWithName:@"Lucida Grande Bold" size:18]]; + [textField setTextColor:[NSColor whiteColor]]; + [textField setCastsShadow:YES]; + [textField setStringValue:text]; + [[self contentView] addSubview:textField]; + + [[self contentView] setNeedsDisplay:YES]; + +} + +- (void)setImage:(NSImage *)newImage +{ + [image autorelease]; + image = [newImage copy]; + [self buildStatusWindow]; +} + +- (void)setText:(NSString *)newText +{ + [text autorelease]; + text = [newText copy]; + [self buildStatusWindow]; +} + + + +@end diff --git a/iPod.tif b/iPod.tif new file mode 100755 index 0000000..d9b5f75 Binary files /dev/null and b/iPod.tif differ diff --git a/submenu.tiff b/submenu.tiff index b35f0f2..b6a16ff 100755 Binary files a/submenu.tiff and b/submenu.tiff differ