X-Git-Url: http://git.ithinksw.org/MenuTunes.git/blobdiff_plain/f28cba7febce0cb71c39d69da3540d041e4660b7..c33e0550ff900278c7486720e16265b43b1831e4:/MenuController.m diff --git a/MenuController.m b/MenuController.m index f416474..f666bdf 100755 --- a/MenuController.m +++ b/MenuController.m @@ -22,7 +22,7 @@ - (NSMenu *)eqMenu; - (void)setKeyEquivalentForCode:(short)code andModifiers:(long)modifiers onItem:(id )item; -- (BOOL)iPodAtPathAutomaticallyUpdates:(NSString *)name; +- (BOOL)iPodWithNameAutomaticallyUpdates:(NSString *)name; @end @implementation MenuController @@ -438,6 +438,7 @@ NS_HANDLER [[MainController sharedController] networkError:localException]; NS_ENDHANDLER + ITDebugLog(@"Releasing old submenus."); [_ratingMenu release]; [_upcomingSongsMenu release]; [_playlistsMenu release]; @@ -572,11 +573,9 @@ id tempItem; ITMTRemotePlayerSource source = [[[MainController sharedController] currentRemote] currentSource]; int i, j; + NSMutableArray *indices = [[NSMutableArray alloc] init]; NS_DURING playlists = [[[MainController sharedController] currentRemote] playlists]; - /*playlists = [NSArray arrayWithObjects: - [NSArray arrayWithObjects:@"Library", [NSNumber numberWithInt:-1], @"Library", @"Playlist", nil], - [NSArray arrayWithObjects:@"Radio", [NSNumber numberWithInt:1], @"Radio", nil], nil];*/ NS_HANDLER [[MainController sharedController] networkError:localException]; NS_ENDHANDLER @@ -585,13 +584,16 @@ NSArray *curPlaylist = [playlists objectAtIndex:0]; NSString *name = [curPlaylist objectAtIndex:0]; ITDebugLog(@"Adding main source: %@", name); - for (i = 2; i < [curPlaylist count]; i++) { + for (i = 3; i < [curPlaylist count]; i++) { ITDebugLog(@"Adding playlist: %@", [curPlaylist objectAtIndex:i]); tempItem = [playlistsMenu addItemWithTitle:[curPlaylist objectAtIndex:i] action:@selector(performPlaylistMenuAction:) keyEquivalent:@""]; - [tempItem setTag:i]; + [tempItem setTag:i - 1]; [tempItem setTarget:self]; } + 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]]; } @@ -606,26 +608,36 @@ NSMenu *submenu = [[NSMenu alloc] init]; ITDebugLog(@"Adding source: %@", name); - if ( ([[curPlaylist objectAtIndex:i] intValue] == ITMTRemoteiPodSource) && [self iPodAtPathAutomaticallyUpdates:[curPlaylist objectAtIndex:j]] ) { + if ([[curPlaylist objectAtIndex:1] intValue] == ITMTRemoteiPodSource) { + NSLog(@"We have an iPod!"); + NSLog(@"This iPod is named %@!", name); + NSLog(@"Does it update automagically?"); + NSLog(@"Result: %i", [self iPodWithNameAutomaticallyUpdates:name]); + } + + if ( ([[curPlaylist objectAtIndex:1] intValue] == ITMTRemoteiPodSource) && [self iPodWithNameAutomaticallyUpdates:name] ) { ITDebugLog(@"Invalid iPod source."); } else { - for (j = 2; j < [curPlaylist count]; j++) { + 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]; + [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]]; } - - if ( (source == ITMTRemoteSharedLibrarySource) || (source == ITMTRemoteiPodSource) || (source == ITMTRemoteGenericDeviceSource) || (source == ITMTRemoteCDSource) ){ - tempItem = [playlistsMenu itemAtIndex:(int)[[[MainController sharedController] currentRemote] currentSourceIndex] + [playlistsMenu numberOfItems] - 5]; + ITDebugLog(@"Checking the current source."); + if ( (source == ITMTRemoteSharedLibrarySource) || (source == ITMTRemoteiPodSource) || (source == ITMTRemoteGenericDeviceSource) || (source == ITMTRemoteCDSource) ) { + tempItem = [playlistsMenu itemAtIndex:[playlistsMenu numberOfItems] + [indices indexOfObject:[NSNumber numberWithInt:[[[MainController sharedController] currentRemote] currentSourceIndex]]] - [indices count]]; [tempItem setState:NSOnState]; [[[tempItem submenu] itemAtIndex:_currentPlaylist - 1] setState:NSOnState]; } else if (source == ITMTRemoteLibrarySource && _currentPlaylist) { [[playlistsMenu itemAtIndex:_currentPlaylist - 1] setState:NSOnState]; } + [indices release]; ITDebugLog(@"Done Building \"Playlists\" menu"); return playlistsMenu; } @@ -981,12 +993,12 @@ ITDebugLog(@"Done setting key equivalent on menu item: %@", [item title]); } -- (BOOL)iPodAtPathAutomaticallyUpdates:(NSString *)name +- (BOOL)iPodWithNameAutomaticallyUpdates:(NSString *)name { NSArray *volumes = [[NSWorkspace sharedWorkspace] mountedLocalVolumePaths]; NSEnumerator *volEnum = [volumes objectEnumerator]; NSString *nextVolume; - + ITDebugLog(@"Looking for an iPod named %@", name); while ( (nextVolume = [volEnum nextObject]) ) { if ([nextVolume rangeOfString:name options:nil range:NSMakeRange(0, [name length] - 1)].location != NSNotFound) { NSFileHandle *handle;