From: Kent Sutherland Date: Thu, 13 Mar 2003 01:29:55 +0000 (+0000) Subject: The stars in the rating menu show up now. X-Git-Tag: v1.0~200 X-Git-Url: http://git.ithinksw.org/MenuTunes.git/commitdiff_plain/e998c75c99ca100fabb104ea6a8d863278227df4 The stars in the rating menu show up now. --- diff --git a/English.lproj/MainMenu.nib/classes.nib b/English.lproj/MainMenu.nib/classes.nib index a5a8984..b342736 100755 --- a/English.lproj/MainMenu.nib/classes.nib +++ b/English.lproj/MainMenu.nib/classes.nib @@ -2,7 +2,13 @@ IBClasses = ( {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }, {CLASS = MTApplication; LANGUAGE = ObjC; SUPERCLASS = NSApplication; }, - {CLASS = MenuTunes; LANGUAGE = ObjC; SUPERCLASS = NSObject; } + { + ACTIONS = {setSongRating = id; }; + CLASS = MenuTunes; + LANGUAGE = ObjC; + OUTLETS = {ratingMenu = NSMenu; }; + SUPERCLASS = NSObject; + } ); IBVersion = 1; } \ No newline at end of file diff --git a/English.lproj/MainMenu.nib/info.nib b/English.lproj/MainMenu.nib/info.nib index adeae52..987f1de 100755 --- a/English.lproj/MainMenu.nib/info.nib +++ b/English.lproj/MainMenu.nib/info.nib @@ -2,8 +2,17 @@ + IBEditorPositions + + 198 + 110 274 101 138 0 0 1152 746 + IBFramework Version 291.0 + IBOpenObjects + + 198 + IBSystem Version 6I32 diff --git a/MenuTunes.h b/MenuTunes.h index 69791b9..3c5fede 100755 --- a/MenuTunes.h +++ b/MenuTunes.h @@ -24,6 +24,8 @@ @interface MenuTunes : NSObject { + IBOutlet NSMenu *ratingMenu; + ITStatusItem *statusItem; NSMenu *menu; ITMTRemote *currentRemote; @@ -63,6 +65,11 @@ - (void)registerDefaultsIfNeeded; - (void)rebuildMenu; + +- (void)runTimerInNewThread; + +- (IBAction)setSongRating:(id)sender; + - (void)clearHotKeys; - (void)closePreferences; diff --git a/MenuTunes.m b/MenuTunes.m index 77c59ba..4b8ac85 100755 --- a/MenuTunes.m +++ b/MenuTunes.m @@ -280,18 +280,22 @@ action:nil keyEquivalent:@""]; } else if ([item isEqualToString:@"Song Rating"]) { - NSMenu *ratingSubmenu = [[NSMenu alloc] initWithTitle:@""]; - unichar whiteStar = 'o';//2606; - unichar blackStar = 'x';//2605; - NSString *whiteStarString = [NSString stringWithCharacters:&whiteStar + /*NSMenu *ratingSubmenu = [[NSMenu alloc] initWithTitle:@""]; + unichar whiteStarChar = 2606; + unichar blackStarChar = 2605; + NSString *whiteStar = [NSString stringWithCharacters:&whiteStarChar length:1]; - NSString *blackStarString = [NSString stringWithCharacters:&blackStar + NSString *blackStar = [NSString stringWithCharacters:&blackStarChar length:1]; + NSData *whiteStarData = [whiteStar dataUsingEncoding:NSUTF8StringEncoding]; + NSData *blackStarData = [blackStar dataUsingEncoding:NSUTF8StringEncoding]; NSString *string = @""; int i; + whiteStar = [[NSString alloc] initWithData:whiteStarData encoding:NSUTF8StringEncoding]; + for (i = 0; i < 5; i++) { - string = [string stringByAppendingString:whiteStarString]; + string = [string stringByAppendingString:whiteStar]; } for (i = 0; i < 6; i++) { NSMenuItem *ratingItem; @@ -299,12 +303,12 @@ [ratingItem setTarget:self]; [ratingItem setTag:i * 20]; string = [string substringToIndex:4]; - string = [blackStarString stringByAppendingString:string]; + string = [blackStar stringByAppendingString:string]; } + [ratingSubmenu autorelease];*/ [[menu addItemWithTitle:@"Song Rating" action:nil - keyEquivalent:@""] setSubmenu:ratingSubmenu]; - [ratingSubmenu autorelease]; + keyEquivalent:@""] setSubmenu:ratingMenu]; } else if ([item isEqualToString:@""]) { [menu addItem:[NSMenuItem separatorItem]]; } @@ -700,7 +704,7 @@ isAppRunning = ITMTRemotePlayerRunning; //Restart the timer - refreshTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 target:self selector:@selector(timerUpdate) userInfo:nil repeats:YES]; + [NSThread detachNewThreadSelector:@selector(runTimerInNewThread) toTarget:self withObject:nil]; [self rebuildMenu]; //Rebuild the menu since no songs will be playing if (playlistItem) { @@ -712,6 +716,15 @@ [statusItem setMenu:menu]; //Set the menu back to the main one } +- (void)runTimerInNewThread +{ + NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init]; + NSRunLoop *runLoop = [NSRunLoop currentRunLoop]; + refreshTimer = [[NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(timerUpdate) userInfo:nil repeats:YES] retain]; + [runLoop run]; + [pool release]; +} + - (void)remotePlayerTerminated:(NSNotification *)note { isAppRunning = ITMTRemotePlayerNotRunning; @@ -726,6 +739,7 @@ [statusItem setMenu:menu]; [refreshTimer invalidate]; + [refreshTimer release]; refreshTimer = nil; [self clearHotKeys]; } @@ -805,7 +819,7 @@ [playPauseMenuItem setTitle:@"Play"]; } -- (void)setSongRating:(id)sender +- (IBAction)setSongRating:(id)sender { NSLog(@"%f", (float)[sender tag] / 100.0); [currentRemote setCurrentSongRating:(float)[sender tag] / 100.0]; @@ -1128,6 +1142,7 @@ { if (refreshTimer) { [refreshTimer invalidate]; + [refreshTimer release]; refreshTimer = nil; } [currentRemote halt];