X-Git-Url: http://git.ithinksw.org/MenuTunes.git/blobdiff_plain/a39da95b62217faccd6f43d22f20c5637cf10196..6788d08ec7e28c5ba96305056f7f7d824103da95:/MenuController.m?ds=inline diff --git a/MenuController.m b/MenuController.m index 0998e06..b7f8f85 100755 --- a/MenuController.m +++ b/MenuController.m @@ -22,6 +22,7 @@ - (NSMenu *)eqMenu; - (void)setKeyEquivalentForCode:(short)code andModifiers:(long)modifiers onItem:(NSMenuItem *)item; +//- (BOOL)iPodAtPathAutomaticallyUpdates:(NSString *)name; @end @implementation MenuController @@ -430,7 +431,6 @@ - (void)rebuildSubmenus { ITDebugLog(@"Rebuilding all of the submenus."); - NS_DURING _currentPlaylist = [[[MainController sharedController] currentRemote] currentPlaylistIndex]; _currentTrack = [[[MainController sharedController] currentRemote] currentSongIndex]; @@ -438,7 +438,6 @@ NS_HANDLER [[MainController sharedController] networkError:localException]; NS_ENDHANDLER - [_ratingMenu release]; [_upcomingSongsMenu release]; [_playlistsMenu release]; @@ -495,7 +494,6 @@ NS_ENDHANDLER ITDebugLog(@"Building \"Upcoming Songs\" menu."); - if (_currentPlaylist && !_playingRadio) { if (numSongs > 0) { int i; @@ -527,7 +525,7 @@ return upcomingSongsMenu; } -/*- (NSMenu *)playlistsMenu +- (NSMenu *)playlistsMenu { NSMenu *playlistsMenu = [[NSMenu alloc] initWithTitle:@""]; NSArray *playlists; @@ -565,10 +563,10 @@ } ITDebugLog(@"Done Building \"Playlists\" menu"); return playlistsMenu; -}*/ +} -- (NSMenu *)playlistsMenu +/*- (NSMenu *)playlistsMenu { NSMenu *playlistsMenu = [[NSMenu alloc] initWithTitle:@""]; NSArray *playlists; @@ -585,45 +583,51 @@ NSArray *curPlaylist = [playlists objectAtIndex:0]; NSString *name = [curPlaylist objectAtIndex:0]; ITDebugLog(@"Adding main source: %@", name); - for (i = 1; i < [curPlaylist count]; i++) { + for (i = 2; i < [curPlaylist count]; i++) { ITDebugLog(@"Adding playlist: %@", [curPlaylist objectAtIndex:i]); tempItem = [playlistsMenu addItemWithTitle:[curPlaylist objectAtIndex:i] action:@selector(performPlaylistMenuAction:) keyEquivalent:@""]; - [tempItem setTag:i + 1]; + [tempItem setTag:i]; [tempItem setTarget:self]; } } - [playlistsMenu addItem:[NSMenuItem separatorItem]]; + if ( (source == ITMTRemoteRadioSource) || ([playlists count] - 2 > 0) ) { + [playlistsMenu addItem:[NSMenuItem separatorItem]]; + } - for (i = 1; i < [playlists count]; i++) { + if (source == ITMTRemoteRadioSource) { + [[playlistsMenu addItemWithTitle:NSLocalizedString(@"radio", @"Radio") action:@selector(performPlaylistMenuAction:) keyEquivalent:@""] setState:NSOnState]; + } + + 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); - for (j = 1; j < [curPlaylist count]; j++) { - ITDebugLog(@"Adding playlist: %@", [curPlaylist objectAtIndex:j]); - tempItem = [submenu addItemWithTitle:[curPlaylist objectAtIndex:j] action:@selector(performPlaylistMenuAction:) keyEquivalent:@""]; - [tempItem setTag:(j * 1000) + (j + 1)]; - [tempItem setTarget:self]; + + if ( ([[curPlaylist objectAtIndex:i] intValue] == ITMTRemoteiPodSource) && (![self iPodAtPathAutomaticallyUpdates:[curPlaylist objectAtIndex:j]]) ) { + ITDebugLog(@"Invalid iPod source."); + } else { + for (j = 2; 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]; + [tempItem setTarget:self]; + } + [[playlistsMenu addItemWithTitle:name action:NULL keyEquivalent:@""] setSubmenu:[submenu autorelease]]; } - [[playlistsMenu addItemWithTitle:name action:NULL keyEquivalent:@""] setSubmenu:[submenu autorelease]]; } - /*if (source == ITMTRemoteRadioSource) { - [[playlistsMenu addItemWithTitle:NSLocalizedString(@"radio", @"Radio") action:NULL keyEquivalent:@""] setState:NSOnState]; - } else if (source == ITMTRemoteGenericDeviceSource) { - [[playlistsMenu addItemWithTitle:NSLocalizedString(@"genericDevice", @"Generic Device") action:NULL keyEquivalent:@""] setState:NSOnState]; - } else if (source == ITMTRemoteiPodSource) { - [[playlistsMenu addItemWithTitle:NSLocalizedString(@"iPod", @"iPod") action:NULL keyEquivalent:@""] setState:NSOnState]; - } else if (source == ITMTRemoteCDSource) { - [[playlistsMenu addItemWithTitle:NSLocalizedString(@"cd", @"CD") action:NULL keyEquivalent:@""] setState:NSOnState]; - } else if (source == ITMTRemoteSharedLibrarySource) { - [[playlistsMenu addItemWithTitle:NSLocalizedString(@"sharedLibrary", @"Shared Library") action:NULL keyEquivalent:@""] setState:NSOnState]; + + if ( (source == ITMTRemoteSharedLibrarySource) || (source == ITMTRemoteiPodSource) || (source == ITMTRemoteGenericDeviceSource) || (source == ITMTRemoteCDSource) ){ + tempItem = [playlistsMenu itemAtIndex:(int)[[[MainController sharedController] currentRemote] currentSourceIndex] + [playlistsMenu numberOfItems] - 5]; + [tempItem setState:NSOnState]; + [[[tempItem submenu] itemAtIndex:_currentPlaylist - 1] setState:NSOnState]; } else if (source == ITMTRemoteLibrarySource && _currentPlaylist) { [[playlistsMenu itemAtIndex:_currentPlaylist - 1] setState:NSOnState]; - }*/ + } ITDebugLog(@"Done Building \"Playlists\" menu"); return playlistsMenu; -} +}*/ - (NSMenu *)eqMenu { @@ -976,4 +980,36 @@ ITDebugLog(@"Done setting key equivalent on menu item: %@", [item title]); } +/*- (BOOL)iPodAtPathAutomaticallyUpdates:(NSString *)name +{ + NSArray *volumes = [[NSWorkspace sharedWorkspace] mountedLocalVolumePaths]; + NSEnumerator *volEnum = [volumes objectEnumerator]; + NSString *nextVolume; + + while ( (nextVolume = [volEnum nextObject]) ) { + if ([nextVolume rangeOfString:name options:nil range:NSMakeRange(0, [name length] - 1)].location != NSNotFound) { + NSFileHandle *handle; + NSData *data; + NSString *path = [nextVolume stringByAppendingPathComponent:@"/iPod_Control/iTunes/iTunesPrefs"]; + if ( ![[NSFileManager defaultManager] fileExistsAtPath:path] ) { + ITDebugLog(@"Error, path isn't an iPod! %@", path); + return NO; + } + handle = [NSFileHandle fileHandleForReadingAtPath:name]; + [handle seekToFileOffset:10]; + data = [handle readDataOfLength:1]; + if ( (*((unsigned char*)[data bytes]) == 0x00) ) { + ITDebugLog(@"iPod is manually updated. %@", path); + return NO; + } else if ( ( *((unsigned char*)[data bytes]) == 0x01 ) ) { + ITDebugLog(@"iPod is automatically updated. %@", path); + return YES; + } else { + ITDebugLog(@"Error! Value: %h Desc: %@ Path: %@", *((unsigned char*)[data bytes]), [data description], path); + return NO; + } + } + } +}*/ + @end \ No newline at end of file