Menu now indents using carbon.
[MenuTunes.git] / MainController.m
index f91975f..10a944b 100755 (executable)
@@ -45,6 +45,11 @@ static MainController *sharedController;
 
 - (void)applicationDidFinishLaunching:(NSNotification *)note
 {
+    //Turn on debug mode if needed
+    if ([df boolForKey:@"ITDebugMode"]) {
+        SetITDebugMode(YES);
+    }
+    
     currentRemote = [self loadRemote];
     [currentRemote begin];
     
@@ -83,8 +88,8 @@ static MainController *sharedController;
         }
     }
     
-    [statusItem setImage:[NSImage imageNamed:@"menu"]];
-    [statusItem setAlternateImage:[NSImage imageNamed:@"selected_image"]];
+    [statusItem setImage:[NSImage imageNamed:@"MenuNormal"]];
+    [statusItem setAlternateImage:[NSImage imageNamed:@"MenuInverted"]];
 }
 
 - (ITMTRemote *)loadRemote
@@ -142,7 +147,7 @@ static MainController *sharedController;
 
 - (BOOL)songIsPlaying
 {
-    return ( ! ([[currentRemote currentSongUniqueIdentifier] isEqualToString:@"0-0"]) );
+    return ( ! ([[currentRemote playerStateUniqueIdentifier] isEqualToString:@"0-0"]) );
 }
 
 - (BOOL)radioIsPlaying
@@ -152,7 +157,7 @@ static MainController *sharedController;
 
 - (BOOL)songChanged
 {
-    return ( ! [[currentRemote currentSongUniqueIdentifier] isEqualToString:_latestSongIdentifier] );
+    return ( ! [[currentRemote playerStateUniqueIdentifier] isEqualToString:_latestSongIdentifier] );
 }
 
 - (NSString *)latestSongIdentifier
@@ -173,13 +178,13 @@ static MainController *sharedController;
          ( ([self radioIsPlaying]) && (latestPlaylistClass != ITMTRemotePlayerRadioPlaylist) ) ||
          ( (! [self radioIsPlaying]) && (latestPlaylistClass == ITMTRemotePlayerRadioPlaylist) ) )*/
     
-    if ([self songChanged]) {
-        [self setLatestSongIdentifier:[currentRemote currentSongUniqueIdentifier]];
+    if ( [self songChanged] ) {
+        [self setLatestSongIdentifier:[currentRemote playerStateUniqueIdentifier]];
         latestPlaylistClass = [currentRemote currentPlaylistClass];
         [menuController rebuildSubmenus];
-        
+
         if ( [df boolForKey:@"showSongInfoOnChange"] ) {
-            [self showCurrentTrackInfo];
+//            [self performSelector:@selector(showCurrentTrackInfo) withObject:nil afterDelay:0.0];
         }
     }
 }
@@ -211,46 +216,64 @@ static MainController *sharedController;
     } else {
         [currentRemote play];
     }
+    
+    [self timerUpdate];
 }
 
 - (void)nextSong
 {
     [currentRemote goToNextSong];
+    
+    [self timerUpdate];
 }
 
 - (void)prevSong
 {
     [currentRemote goToPreviousSong];
+    
+    [self timerUpdate];
 }
 
 - (void)fastForward
 {
     [currentRemote forward];
+    
+    [self timerUpdate];
 }
 
 - (void)rewind
 {
     [currentRemote rewind];
+    
+    [self timerUpdate];
 }
 
 - (void)selectPlaylistAtIndex:(int)index
 {
     [currentRemote switchToPlaylistAtIndex:index];
+    
+    [self timerUpdate];
 }
 
 - (void)selectSongAtIndex:(int)index
 {
     [currentRemote switchToSongAtIndex:index];
+    
+    [self timerUpdate];
 }
 
 - (void)selectSongRating:(int)rating
 {
     [currentRemote setCurrentSongRating:(float)rating / 100.0];
+    
+    [self timerUpdate];
 }
 
 - (void)selectEQPresetAtIndex:(int)index
 {
     [currentRemote switchToEQAtIndex:index];
+    
+    [self timerUpdate];
 }
 
 - (void)showPlayer
@@ -421,15 +444,16 @@ static MainController *sharedController;
 
 - (void)showCurrentTrackInfo
 {
-    NSString *title = [currentRemote currentSongTitle];
-
+    ITMTRemotePlayerSource  source      = [currentRemote currentSource];
+    NSString               *title       = [currentRemote currentSongTitle];
+    NSString               *album       = nil;
+    NSString               *artist      = nil;
+    NSString               *time        = nil;
+    int                     trackNumber = 0;
+    int                     trackTotal  = 0;
+    int                     rating      = -1;
+    
     if ( title ) {
-        NSString *album       = nil;
-        NSString *artist      = nil;
-        NSString *time        = nil;
-        int       trackNumber = 0;
-        int       trackTotal  = 0;
-        int       rating      = 0;
 
         if ( [df boolForKey:@"showAlbum"] ) {
             album = [currentRemote currentSongAlbum];
@@ -451,24 +475,19 @@ static MainController *sharedController;
         if ( [df boolForKey:@"showRating"] ) {
             rating = ( [currentRemote currentSongRating] * 5 );
         }
-
-        [statusWindowController showSongWindowWithTitle:title
-                                                  album:album
-                                                 artist:artist
-                                                   time:time
-                                            trackNumber:trackNumber
-                                             trackTotal:trackTotal
-                                                 rating:rating];
+        
     } else {
         title = NSLocalizedString(@"noSongPlaying", @"No song is playing.");
-        [statusWindowController showSongWindowWithTitle:title
-                                                  album:nil
-                                                 artist:nil
-                                                   time:nil
-                                            trackNumber:0
-                                             trackTotal:0
-                                                 rating:0];
     }
+
+    [statusWindowController showSongInfoWindowWithSource:source
+                                                   title:title
+                                                   album:album
+                                                  artist:artist
+                                                    time:time
+                                             trackNumber:trackNumber
+                                              trackTotal:trackTotal
+                                                  rating:rating];
 }
 
 - (void)showUpcomingSongs
@@ -488,37 +507,49 @@ static MainController *sharedController;
             }
         }
         
-        [statusWindowController showUpcomingSongsWithTitles:songList];
+        [statusWindowController showUpcomingSongsWindowWithTitles:songList];
         
     } else {
-        [statusWindowController showUpcomingSongsWithTitles:[NSArray arrayWithObject:NSLocalizedString(@"noUpcomingSongs", @"No upcoming songs.")]];
+        [statusWindowController showUpcomingSongsWindowWithTitles:[NSArray arrayWithObject:NSLocalizedString(@"noUpcomingSongs", @"No upcoming songs.")]];
     }
 }
 
 - (void)incrementVolume
 {
-    float volume = [currentRemote volume];
-    volume += 0.2;
+    float volume  = [currentRemote volume];
+    float dispVol = volume;
+    
+    volume  += 0.110;
+    dispVol += 0.100;
+    
     if (volume > 1.0) {
-        volume = 1.0;
+        volume  = 1.0;
+        dispVol = 1.0;
     }
+
     [currentRemote setVolume:volume];
-    
   //Show volume status window
-    [statusWindowController showVolumeWindowWithLevel:volume];
+
// Show volume status window
+    [statusWindowController showVolumeWindowWithLevel:dispVol];
 }
 
 - (void)decrementVolume
 {
-    float volume = [currentRemote volume];
-    volume -= 0.2;
+    float volume  = [currentRemote volume];
+    float dispVol = volume;
+    
+    volume  -= 0.090;
+    dispVol -= 0.100;
+
     if (volume < 0.0) {
-        volume = 0.0;
+        volume  = 0.0;
+        dispVol = 0.0;
     }
+    
     [currentRemote setVolume:volume];
     
     //Show volume status window
-    [statusWindowController showVolumeWindowWithLevel:volume];
+    [statusWindowController showVolumeWindowWithLevel:dispVol];
 }
 
 - (void)incrementRating
@@ -531,7 +562,7 @@ static MainController *sharedController;
     [currentRemote setCurrentSongRating:rating];
     
     //Show rating status window
-    [statusWindowController showRatingWindowWithLevel:rating];
+    [statusWindowController showRatingWindowWithRating:rating];
 }
 
 - (void)decrementRating
@@ -544,13 +575,12 @@ static MainController *sharedController;
     [currentRemote setCurrentSongRating:rating];
     
     //Show rating status window
-    [statusWindowController showRatingWindowWithLevel:rating];
+    [statusWindowController showRatingWindowWithRating:rating];
 }
 
 - (void)toggleLoop
 {
     ITMTRemotePlayerRepeatMode repeatMode = [currentRemote repeatMode];
-    
     switch (repeatMode) {
         case ITMTRemotePlayerRepeatOff:
             repeatMode = ITMTRemotePlayerRepeatAll;
@@ -565,7 +595,7 @@ static MainController *sharedController;
     [currentRemote setRepeatMode:repeatMode];
     
     //Show loop status window
-    [statusWindowController showLoopWindowWithMode:repeatMode];
+    [statusWindowController showRepeatWindowWithMode:repeatMode];
 }
 
 - (void)toggleShuffle
@@ -573,7 +603,7 @@ static MainController *sharedController;
     bool newShuffleEnabled = ![currentRemote shuffleEnabled];
     [currentRemote setShuffleEnabled:newShuffleEnabled];
     //Show shuffle status window
-    [statusWindowController showLoopWindowWithMode:newShuffleEnabled];
+    [statusWindowController showRepeatWindowWithMode:newShuffleEnabled];
 }
 
 /*************************************************************************/