From 418a547d5daa457e97c3964224af5d703df5a19f Mon Sep 17 00:00:00 2001 From: Kent Sutherland Date: Fri, 10 Jan 2003 01:11:25 +0000 Subject: [PATCH] FINALLY got CVS working. Fixed another elusive menu bug that hated me. Status windows have variable length depending on the amount of text. --- English.lproj/StatusWindow.nib/info.nib | 4 +-- English.lproj/StatusWindow.nib/objects.nib | Bin 962 -> 962 bytes MenuTunes.m | 20 ++++------- StatusWindowController.h | 4 +-- StatusWindowController.m | 38 ++++++++++++++++++--- 5 files changed, 45 insertions(+), 21 deletions(-) diff --git a/English.lproj/StatusWindow.nib/info.nib b/English.lproj/StatusWindow.nib/info.nib index 93c48ef..5363aec 100755 --- a/English.lproj/StatusWindow.nib/info.nib +++ b/English.lproj/StatusWindow.nib/info.nib @@ -3,12 +3,12 @@ IBFramework Version - 286.0 + 291.0 IBOpenObjects 5 IBSystem Version - 6F21 + 6G30 diff --git a/English.lproj/StatusWindow.nib/objects.nib b/English.lproj/StatusWindow.nib/objects.nib index 6ea0e70cc9b6e681aa58b3724db3470642c75e48..6de94796c2338683fd69942c081654b06d45b98d 100755 GIT binary patch delta 14 WcmX@aeu#a;Jw`@`&G#7}GXelB>;;+t delta 14 WcmX@aeu#a;Jw`^B&G#7}GXelC1O=V| diff --git a/MenuTunes.m b/MenuTunes.m index b2f6e9e..98748eb 100755 --- a/MenuTunes.m +++ b/MenuTunes.m @@ -275,16 +275,17 @@ Things to do: if ([defaults boolForKey:@"showName"]) { [menu removeItemAtIndex:index + 1]; } - if (didHaveAlbumName) { + if (didHaveAlbumName && [defaults boolForKey:@"showAlbum"]) { [menu removeItemAtIndex:index + 1]; } - if (didHaveArtistName) { + if (didHaveArtistName && [defaults boolForKey:@"showArtist"]) { [menu removeItemAtIndex:index + 1]; } if ([defaults boolForKey:@"showTime"]) { [menu removeItemAtIndex:index + 1]; } } + if (!isPlayingRadio) { if ([defaults boolForKey:@"showTime"]) { menuItem = [[NSMenuItem alloc] initWithTitle:[NSString stringWithFormat:@" %@", [self runScriptAndReturnResult:@"return time of current track"]] @@ -350,11 +351,11 @@ Things to do: } if ([defaults boolForKey:@"showArtist"]) { - didHaveAlbumName = (([curArtistName length] > 0) ? YES : NO); + didHaveArtistName = (([curArtistName length] > 0) ? YES : NO); } if ([defaults boolForKey:@"showAlbum"]) { - didHaveArtistName = (([curAlbumName length] > 0) ? YES : NO); + didHaveAlbumName = (([curAlbumName length] > 0) ? YES : NO); } } } @@ -754,7 +755,6 @@ isEqualToString:@"rewinding"]) { if (!statusController && [trackName length]) { NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; NSString *stringToShow = @""; - int lines = 1; if ([defaults boolForKey:@"showName"]) { if ([defaults boolForKey:@"showArtist"]) { @@ -763,10 +763,6 @@ isEqualToString:@"rewinding"]) { } stringToShow = [stringToShow stringByAppendingString:trackName]; stringToShow = [stringToShow stringByAppendingString:@"\n"]; - if ([trackName length] > 38) { - lines++; - } - lines++; } if ([defaults boolForKey:@"showAlbum"]) { @@ -774,7 +770,6 @@ isEqualToString:@"rewinding"]) { if ([trackAlbum length]) { stringToShow = [stringToShow stringByAppendingString:trackAlbum]; stringToShow = [stringToShow stringByAppendingString:@"\n"]; - lines++; } } @@ -782,7 +777,6 @@ isEqualToString:@"rewinding"]) { NSString *trackTime = [self runScriptAndReturnResult:@"return time of current track"]; if ([trackTime length]) { stringToShow = [NSString stringWithFormat:@"%@Total Time: %@\n", stringToShow, trackTime]; - lines++; } } @@ -799,7 +793,7 @@ isEqualToString:@"rewinding"]) { } statusController = [[StatusWindowController alloc] init]; - [statusController setTrackInfo:stringToShow lines:lines]; + [statusController setTrackInfo:stringToShow]; [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(fadeAndCloseStatusWindow) @@ -828,7 +822,7 @@ isEqualToString:@"rewinding"]) { songs = [songs stringByAppendingString:@"\n"]; } } - [statusController setUpcomingSongs:songs numSongs:numSongsInAdvance]; + [statusController setUpcomingSongs:songs]; [NSTimer scheduledTimerWithTimeInterval:3.0 target:self selector:@selector(fadeAndCloseStatusWindow) diff --git a/StatusWindowController.h b/StatusWindowController.h index 826a372..1b32e4a 100755 --- a/StatusWindowController.h +++ b/StatusWindowController.h @@ -21,7 +21,7 @@ IBOutlet NSTextField *statusField; IBOutlet StatusWindow *statusWindow; } -- (void)setUpcomingSongs:(NSString *)string numSongs:(int)songs; -- (void)setTrackInfo:(NSString *)string lines:(int)lines; +- (void)setUpcomingSongs:(NSString *)string; +- (void)setTrackInfo:(NSString *)string; - (void)fadeWindowOut; @end diff --git a/StatusWindowController.m b/StatusWindowController.m index c6a2397..d7bd2ff 100755 --- a/StatusWindowController.m +++ b/StatusWindowController.m @@ -12,18 +12,48 @@ return self; } -- (void)setUpcomingSongs:(NSString *)string numSongs:(int)songs +- (void)setUpcomingSongs:(NSString *)string { + int size = 0, i; + NSArray *lines = [string componentsSeparatedByString:@"\n"]; + + for (i = 0; i < [lines count]; i++) { + int temp = [[lines objectAtIndex:i] sizeWithAttributes:[NSDictionary dictionaryWithObject:[NSFont fontWithName:@"Lucida Grande" size:12] forKey:NSFontAttributeName]].width; + + if (temp > size) { + size = temp; + } + } + + if (size < 255) { + size = 255; + } + [statusField setStringValue:string]; - [statusWindow setFrame:NSMakeRect(0, 0, 300, 40 + (songs * 17)) display:NO]; + [statusWindow setFrame:NSMakeRect(0, 0, size + 45, 40 + ([lines count] * 17)) display:NO]; [statusWindow center]; [statusWindow makeKeyAndOrderFront:nil]; } -- (void)setTrackInfo:(NSString *)string lines:(int)lines +- (void)setTrackInfo:(NSString *)string { + int size = 0, i; + NSArray *lines = [string componentsSeparatedByString:@"\n"]; + + for (i = 0; i < [lines count]; i++) { + int temp = [[lines objectAtIndex:i] sizeWithAttributes:[NSDictionary dictionaryWithObject:[NSFont fontWithName:@"Lucida Grande" size:12] forKey:NSFontAttributeName]].width; + + if (temp > size) { + size = temp; + } + } + + if (size < 285) { + size = 285; + } + [statusField setStringValue:string]; - [statusWindow setFrame:NSMakeRect(0, 0, 316, 40 + (lines * 17)) display:NO]; + [statusWindow setFrame:NSMakeRect(0, 0, size + 45, 40 + ([lines count] * 17)) display:NO]; [statusWindow center]; [statusWindow makeKeyAndOrderFront:nil]; } -- 2.20.1