From: Kent Sutherland Date: Tue, 2 Mar 2004 01:01:22 +0000 (+0000) Subject: Tons of changes. Fixed the iPod problem finally. Added composer to X-Git-Tag: v1.3~21 X-Git-Url: http://git.ithinksw.org/MenuTunes.git/commitdiff_plain/50485da2e6ae0642e4dfb55ef4c0556ed6ef2a80?hp=c33e0550ff900278c7486720e16265b43b1831e4 Tons of changes. Fixed the iPod problem finally. Added composer to current track info options. Made the tooltip a hidden preference. --- diff --git a/English.lproj/Preferences.nib/classes.nib b/English.lproj/Preferences.nib/classes.nib index da5de05..ac86d7f 100755 --- a/English.lproj/Preferences.nib/classes.nib +++ b/English.lproj/Preferences.nib/classes.nib @@ -11,7 +11,6 @@ clearHotKey = id; editHotKey = id; showPrefsWindow = id; - showTestWindow = id; }; CLASS = PreferencesController; LANGUAGE = ObjC; @@ -26,6 +25,7 @@ backgroundColorWell = NSColorWell; backgroundStylePopup = NSPopUpButton; clientPasswordTextField = NSTextField; + composerCheckbox = NSButton; hostTextField = NSTextField; hotKeysTableView = NSTableView; launchAtLoginCheckbox = NSButton; @@ -53,7 +53,6 @@ sharingTableView = NSTableView; showOnChangeCheckbox = NSButton; showScriptsButton = NSButton; - showToolTipCheckbox = NSButton; songsInAdvance = NSTextField; trackNumberCheckbox = NSButton; trackTimeCheckbox = NSButton; diff --git a/English.lproj/Preferences.nib/keyedobjects.nib b/English.lproj/Preferences.nib/keyedobjects.nib index 81bf1b2..23dc013 100755 Binary files a/English.lproj/Preferences.nib/keyedobjects.nib and b/English.lproj/Preferences.nib/keyedobjects.nib differ diff --git a/ITMTRemote.h b/ITMTRemote.h index 0d2c21a..a86888e 100755 --- a/ITMTRemote.h +++ b/ITMTRemote.h @@ -264,6 +264,11 @@ er's process managment. */ - (NSString *)currentSongArtist; +/*! + * @method currentSongComposer + */ +- (NSString *)currentSongComposer; + /*! * @method currentSongAlbum */ diff --git a/ITMTRemote.m b/ITMTRemote.m index 55e599b..26fe9a0 100755 --- a/ITMTRemote.m +++ b/ITMTRemote.m @@ -139,6 +139,11 @@ return nil; } +- (NSString *)currentSongComposer +{ + return nil; +} + - (NSString *)currentSongAlbum { return nil; diff --git a/MainController.h b/MainController.h index 08722af..2c0cf32 100755 --- a/MainController.h +++ b/MainController.h @@ -85,6 +85,7 @@ - (void)clearHotKeys; - (void)setupHotKeys; - (void)closePreferences; +- (MenuController *)menuController; - (void)showCurrentTrackInfo; diff --git a/MainController.m b/MainController.m index e0230ff..940766c 100755 --- a/MainController.m +++ b/MainController.m @@ -588,6 +588,11 @@ static MainController *sharedController; // // +- (MenuController *)menuController +{ + return menuController; +} + - (void)closePreferences { ITDebugLog(@"Preferences closed."); @@ -759,6 +764,7 @@ static MainController *sharedController; NSString *title = nil; NSString *album = nil; NSString *artist = nil; + NSString *composer = nil; NSString *time = nil; NSString *track = nil; NSImage *art = nil; @@ -791,6 +797,14 @@ static MainController *sharedController; NS_ENDHANDLER } + if ( [df boolForKey:@"showComposer"] ) { + NS_DURING + composer = [[self currentRemote] currentSongComposer]; + NS_HANDLER + [self networkError:localException]; + NS_ENDHANDLER + } + if ( [df boolForKey:@"showTime"] ) { NS_DURING time = [NSString stringWithFormat:@"%@: %@ / %@", @@ -853,6 +867,7 @@ static MainController *sharedController; title:title album:album artist:artist + composer:composer time:time track:track rating:rating diff --git a/MenuController.m b/MenuController.m index f666bdf..508237e 100755 --- a/MenuController.m +++ b/MenuController.m @@ -270,6 +270,20 @@ } } + if ([defaults boolForKey:@"showComposer"]) { + NSString *curComposer; + NS_DURING + curComposer = [[[MainController sharedController] currentRemote] currentSongComposer]; + NS_HANDLER + [[MainController sharedController] networkError:localException]; + NS_ENDHANDLER + ITDebugLog(@"Add Track Composer (\"%@\") menu item.", curComposer); + if ( curComposer ) { + [menu indentItem: + [menu addItemWithTitle:curComposer action:nil keyEquivalent:@""]]; + } + } + if ([defaults boolForKey:@"showTrackNumber"]) { int track; NS_DURING @@ -608,15 +622,9 @@ NSMenu *submenu = [[NSMenu alloc] init]; ITDebugLog(@"Adding source: %@", name); - 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."); + [playlistsMenu addItemWithTitle:name action:NULL keyEquivalent:@""]; } else { for (j = 3; j < [curPlaylist count]; j++) { ITDebugLog(@"Adding playlist: %@", [curPlaylist objectAtIndex:j]); @@ -1000,7 +1008,8 @@ 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) { + ITDebugLog(@"- %@", nextVolume); + 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"]; @@ -1008,9 +1017,11 @@ ITDebugLog(@"Error, path isn't an iPod! %@", path); return NO; } - handle = [NSFileHandle fileHandleForReadingAtPath:name]; + handle = [NSFileHandle fileHandleForReadingAtPath:path]; + ITDebugLog(@"File handle: %@", handle); [handle seekToFileOffset:10]; data = [handle readDataOfLength:1]; + ITDebugLog(@"Data: %@", data); if ( (*((unsigned char*)[data bytes]) == 0x00) ) { ITDebugLog(@"iPod is manually updated. %@", path); return NO; @@ -1023,7 +1034,7 @@ } } } - return NO; + return YES; } @end \ No newline at end of file diff --git a/PreferencesController.h b/PreferencesController.h index c52d9ad..52e4e5d 100755 --- a/PreferencesController.h +++ b/PreferencesController.h @@ -28,6 +28,7 @@ IBOutlet NSColorWell *backgroundColorWell; IBOutlet NSPopUpButton *backgroundColorPopup; IBOutlet NSTextField *clientPasswordTextField; + IBOutlet NSButton *composerCheckbox; IBOutlet NSTextField *hostTextField; IBOutlet NSTableView *hotKeysTableView; IBOutlet NSButton *launchAtLoginCheckbox; @@ -55,7 +56,6 @@ IBOutlet NSTableView *sharingTableView; IBOutlet NSButton *showOnChangeCheckbox; IBOutlet NSButton *showScriptsButton; - IBOutlet NSButton *showToolTipCheckbox; IBOutlet NSTextField *songsInAdvance; IBOutlet NSButton *trackNumberCheckbox; IBOutlet NSButton *trackTimeCheckbox; @@ -94,7 +94,6 @@ - (IBAction)clearHotKey:(id)sender; - (IBAction)editHotKey:(id)sender; - (IBAction)showPrefsWindow:(id)sender; -- (IBAction)showTestWindow:(id)sender; - (void)registerDefaults; - (void)deletePressedInTableView:(NSTableView *)tableView; diff --git a/PreferencesController.m b/PreferencesController.m index c962b52..51271ab 100755 --- a/PreferencesController.m +++ b/PreferencesController.m @@ -1,5 +1,6 @@ #import "PreferencesController.h" #import "MainController.h" +#import "MenuController.h" #import "NetworkController.h" #import "NetworkObject.h" #import "StatusWindow.h" @@ -206,11 +207,6 @@ static PreferencesController *prefs = nil; [window makeKeyWindow]; } -- (IBAction)showTestWindow:(id)sender -{ - [controller showTestWindow]; -} - - (IBAction)changeGeneralSetting:(id)sender { ITDebugLog(@"Changing general setting of tag %i.", [sender tag]); @@ -220,12 +216,14 @@ static PreferencesController *prefs = nil; [df setBool:SENDER_STATE forKey:@"LaunchPlayerWithMT"]; } else if ( [sender tag] == 1030) { [df setInteger:[sender intValue] forKey:@"SongsInAdvance"]; - + [[controller menuController] rebuildSubmenus]; } else if ( [sender tag] == 1040) { // This will not be executed. Song info always shows the title of the song. // [df setBool:SENDER_STATE forKey:@"showName"]; } else if ( [sender tag] == 1050) { [df setBool:SENDER_STATE forKey:@"showArtist"]; + } else if ( [sender tag] == 1055) { + [df setBool:SENDER_STATE forKey:@"showComposer"]; } else if ( [sender tag] == 1060) { [df setBool:SENDER_STATE forKey:@"showAlbum"]; } else if ( [sender tag] == 1070) { @@ -236,8 +234,6 @@ static PreferencesController *prefs = nil; [df setBool:SENDER_STATE forKey:@"showTrackRating"]; } else if ( [sender tag] == 1100) { [df setBool:SENDER_STATE forKey:@"showAlbumArtwork"]; - } else if ( [sender tag] == 1105) { - [df setBool:SENDER_STATE forKey:@"showToolTip"]; } else if ( [sender tag] == 1110) { [df setBool:SENDER_STATE forKey:@"runScripts"]; if (SENDER_STATE) { @@ -450,10 +446,12 @@ static PreferencesController *prefs = nil; } else if ( [sender tag] == 2030) { [self setStatusWindowEntryEffect:[[sender selectedItem] representedObject]]; + [(MainController *)controller showCurrentTrackInfo]; } else if ( [sender tag] == 2040) { [self setStatusWindowExitEffect:[[sender selectedItem] representedObject]]; + [(MainController *)controller showCurrentTrackInfo]; } else if ( [sender tag] == 2050) { float newTime = ( -([sender floatValue]) ); @@ -487,9 +485,11 @@ static PreferencesController *prefs = nil; } [df setInteger:setting forKey:@"statusWindowBackgroundMode"]; + [(MainController *)controller showCurrentTrackInfo]; } else if ( [sender tag] == 2091) { [self setCustomColor:[sender color] updateWell:NO]; + [(MainController *)controller showCurrentTrackInfo]; } else if ( [sender tag] == 2092) { int selectedItem = [sender indexOfSelectedItem]; @@ -507,6 +507,7 @@ static PreferencesController *prefs = nil; } else { [self setCustomColor:[NSColor colorWithCalibratedWhite:0.15 alpha:0.70] updateWell:YES]; } + [(MainController *)controller showCurrentTrackInfo]; } else if ( [sender tag] == 2095) { [df setInteger:[sender indexOfSelectedItem] forKey:@"statusWindowSizing"]; @@ -544,7 +545,9 @@ static PreferencesController *prefs = nil; [df setBool:YES forKey:@"showArtist"]; [df setBool:YES forKey:@"showAlbumArtwork"]; [df setBool:NO forKey:@"showAlbum"]; + [df setBool:NO forKey:@"showComposer"]; [df setBool:NO forKey:@"showTime"]; + [df setBool:NO forKey:@"showToolTip"]; [df setObject:@"ITCutWindowEffect" forKey:@"statusWindowAppearanceEffect"]; [df setObject:@"ITDissolveWindowEffect" forKey:@"statusWindowVanishEffect"]; @@ -796,13 +799,12 @@ static PreferencesController *prefs = nil; [nameCheckbox setState:NSOnState]; // Song info will ALWAYS show song title. [nameCheckbox setEnabled:NO]; // Song info will ALWAYS show song title. [artistCheckbox setState:[df boolForKey:@"showArtist"] ? NSOnState : NSOffState]; + [composerCheckbox setState:[df boolForKey:@"showComposer"] ? NSOnState : NSOffState]; [trackTimeCheckbox setState:[df boolForKey:@"showTime"] ? NSOnState : NSOffState]; [trackNumberCheckbox setState:[df boolForKey:@"showTrackNumber"] ? NSOnState : NSOffState]; [ratingCheckbox setState:[df boolForKey:@"showTrackRating"] ? NSOnState : NSOffState]; [albumArtworkCheckbox setState:[df boolForKey:@"showAlbumArtwork"] ? NSOnState : NSOffState]; - [showToolTipCheckbox setState:[df boolForKey:@"showToolTip"] ? NSOnState : NSOffState]; - if ([df boolForKey:@"runScripts"]) { [runScriptsCheckbox setState:NSOnState]; [showScriptsButton setEnabled:YES]; diff --git a/StatusWindowController.h b/StatusWindowController.h index a3c36ea..c0ec9eb 100755 --- a/StatusWindowController.h +++ b/StatusWindowController.h @@ -46,6 +46,7 @@ typedef enum { title: (NSString *)title album: (NSString *)album artist: (NSString *)artist + composer: (NSString *)composer time: (NSString *)time // FLOW: Should probably be NSDate or something. track: (NSString *)track rating: (int)rating diff --git a/StatusWindowController.m b/StatusWindowController.m index 2020530..fac506c 100755 --- a/StatusWindowController.m +++ b/StatusWindowController.m @@ -103,6 +103,7 @@ static StatusWindowController *sharedController; title: (NSString *)title album: (NSString *)album artist: (NSString *)artist + composer: (NSString *)composer time: (NSString *)time // FLOW: Should probably be NSDate or something. track: (NSString *)track rating: (int)rating @@ -135,6 +136,9 @@ static StatusWindowController *sharedController; if ( artist ) { text = [text stringByAppendingString:[@"\n" stringByAppendingString:artist]]; } + if ( composer ) { + text = [text stringByAppendingString:[@"\n" stringByAppendingString:composer]]; + } if ( time ) { text = [text stringByAppendingString:[@"\n" stringByAppendingString:time]]; } diff --git a/iTunesRemote.m b/iTunesRemote.m index 3936926..bf672e1 100755 --- a/iTunesRemote.m +++ b/iTunesRemote.m @@ -377,6 +377,19 @@ return ( ([temp1 length]) ? temp1 : nil ) ; } +- (NSString *)currentSongComposer +{ + NSString *temp1; + ITDebugLog(@"Getting current song artist."); + if ( [self currentPlaylistClass] != ITMTRemotePlayerRadioPlaylist ) { + temp1 = [[ITAppleEventCenter sharedCenter] sendTwoTierAEWithRequestedKey:@"pCmp" fromObjectByKey:@"pTrk" eventClass:@"core" eventID:@"getd" appPSN:savedPSN]; + } else { + temp1 = @""; + } + ITDebugLog(@"Getting current song artist done."); + return ( ([temp1 length]) ? temp1 : nil ) ; +} + - (NSString *)currentSongAlbum { NSString *temp1;