Album art will be embedded into the menu if on 10.3 and not connected
[MenuTunes.git] / MenuController.m
index 508237e..f1e96fb 100755 (executable)
@@ -8,6 +8,7 @@
 
 #import "MenuController.h"
 #import "MainController.h"
+#import "NetworkController.h"
 #import "ITMTRemote.h"
 #import <ITFoundation/ITDebug.h>
 #import <ITKit/ITHotKeyCenter.h>
                     NS_HANDLER
                         [[MainController sharedController] networkError:localException];
                     NS_ENDHANDLER
+                    
+                    if ([tempItem respondsToSelector:@selector(setAttributedTitle:)] && [defaults boolForKey:@"showAlbumArtwork"] && ![[NetworkController sharedController] isConnectedToServer]) {
+                        NSImage *image = [[[MainController sharedController] currentRemote] currentSongAlbumArt];
+                        if (image) {
+                            NSSize oldSize, newSize;
+                            oldSize = [image size];
+                            if (oldSize.width > oldSize.height) newSize = NSMakeSize(110,oldSize.height * (110.0f / oldSize.width));
+                            else newSize = NSMakeSize(oldSize.width * (110.0f / oldSize.height),110);
+                            image = [[[[NSImage alloc] initWithData:[image TIFFRepresentation]] autorelease] imageScaledSmoothlyToSize:newSize];
+                            
+                            tempItem = [menu addItemWithTitle:@"" action:nil keyEquivalent:@""];
+                            NSTextAttachment *attachment = [[[NSTextAttachment alloc] init] autorelease];
+                            [[attachment attachmentCell] setImage:image];
+                            NSAttributedString *attrString = [NSAttributedString attributedStringWithAttachment:attachment];
+                            [tempItem setAttributedTitle:attrString];
+                        }
+                    }
                 }
             } else {
                 ITDebugLog(@"No Track is Playing, Add \"No Song\" menu item.");
         ITDebugLog(@"Adding index to the index array.");
         [indices addObject:[curPlaylist objectAtIndex:2]];
     }
-    [indices addObject:[[playlists objectAtIndex:1] objectAtIndex:2]];
-    if ( (source == ITMTRemoteRadioSource) || ([playlists count] - 2 > 0) ) {
-        [playlistsMenu addItem:[NSMenuItem separatorItem]];
-    }
-    
-    if (source == ITMTRemoteRadioSource) {
-        [[playlistsMenu addItemWithTitle:NSLocalizedString(@"radio", @"Radio") action:@selector(performPlaylistMenuAction:) keyEquivalent:@""] setState:NSOnState];
+    if ([playlists count] > 1) {
+        if ([[[playlists objectAtIndex:1] objectAtIndex:1] intValue] == ITMTRemoteRadioSource) {
+            [indices addObject:[[playlists objectAtIndex:1] objectAtIndex:2]];
+            if (source == ITMTRemoteRadioSource) {
+                [playlistsMenu addItem:[NSMenuItem separatorItem]];
+                [[playlistsMenu addItemWithTitle:NSLocalizedString(@"radio", @"Radio") action:@selector(performPlaylistMenuAction:) keyEquivalent:@""] setState:NSOnState];
+            }
+        } else {
+            [playlistsMenu addItem:[NSMenuItem separatorItem]];
+        }
     }
     
-    for (i = 2; i < [playlists count]; i++) {
-        NSArray *curPlaylist = [playlists objectAtIndex:i];
-        NSString *name = [curPlaylist objectAtIndex:0];
-        NSMenu *submenu = [[NSMenu alloc] init];
-        ITDebugLog(@"Adding source: %@", name);
-        
-        if ( ([[curPlaylist objectAtIndex:1] intValue] == ITMTRemoteiPodSource) && [self iPodWithNameAutomaticallyUpdates:name] ) {
-            ITDebugLog(@"Invalid iPod source.");
-            [playlistsMenu addItemWithTitle:name action:NULL keyEquivalent:@""];
-        } else {
-            for (j = 3; j < [curPlaylist count]; j++) {
-                ITDebugLog(@"Adding playlist: %@", [curPlaylist objectAtIndex:j]);
-                tempItem = [submenu addItemWithTitle:[curPlaylist objectAtIndex:j] action:@selector(performPlaylistMenuAction:) keyEquivalent:@""];
-                [tempItem setTag:(i * 1000) + j - 1];
-                [tempItem setTarget:self];
+    if ([playlists count] > 1) {
+        for (i = 1; i < [playlists count]; i++) {
+            NSArray *curPlaylist = [playlists objectAtIndex:i];
+            if ([[curPlaylist objectAtIndex:1] intValue] != ITMTRemoteRadioSource) {
+                NSString *name = [curPlaylist objectAtIndex:0];
+                NSMenu *submenu = [[NSMenu alloc] init];
+                ITDebugLog(@"Adding source: %@", name);
+                
+                if ( ([[curPlaylist objectAtIndex:1] intValue] == ITMTRemoteiPodSource) && [self iPodWithNameAutomaticallyUpdates:name] ) {
+                    ITDebugLog(@"Invalid iPod source.");
+                    [playlistsMenu addItemWithTitle:name action:NULL keyEquivalent:@""];
+                } else {
+                    for (j = 3; j < [curPlaylist count]; j++) {
+                        ITDebugLog(@"Adding playlist: %@", [curPlaylist objectAtIndex:j]);
+                        tempItem = [submenu addItemWithTitle:[curPlaylist objectAtIndex:j] action:@selector(performPlaylistMenuAction:) keyEquivalent:@""];
+                        [tempItem setTag:(i * 1000) + j - 1];
+                        [tempItem setTarget:self];
+                    }
+                    [[playlistsMenu addItemWithTitle:name action:NULL keyEquivalent:@""] setSubmenu:[submenu autorelease]];
+                }
+                ITDebugLog(@"Adding index to the index array.");
+                [indices addObject:[curPlaylist objectAtIndex:2]];
             }
-            [[playlistsMenu addItemWithTitle:name action:NULL keyEquivalent:@""] setSubmenu:[submenu autorelease]];
         }
-        ITDebugLog(@"Adding index to the index array.");
-        [indices addObject:[curPlaylist objectAtIndex:2]];
     }
     ITDebugLog(@"Checking the current source.");
     if ( (source == ITMTRemoteSharedLibrarySource) || (source == ITMTRemoteiPodSource) || (source == ITMTRemoteGenericDeviceSource) || (source == ITMTRemoteCDSource) ) {