Tons of changes. Fixed the iPod problem finally. Added composer to
authorKent Sutherland <ksuther@ithinksw.com>
Tue, 2 Mar 2004 01:01:22 +0000 (01:01 +0000)
committerKent Sutherland <ksuther@ithinksw.com>
Tue, 2 Mar 2004 01:01:22 +0000 (01:01 +0000)
current track info options. Made the tooltip a hidden preference.

12 files changed:
English.lproj/Preferences.nib/classes.nib
English.lproj/Preferences.nib/keyedobjects.nib
ITMTRemote.h
ITMTRemote.m
MainController.h
MainController.m
MenuController.m
PreferencesController.h
PreferencesController.m
StatusWindowController.h
StatusWindowController.m
iTunesRemote.m

index da5de05..ac86d7f 100755 (executable)
@@ -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; 
index 81bf1b2..23dc013 100755 (executable)
Binary files a/English.lproj/Preferences.nib/keyedobjects.nib and b/English.lproj/Preferences.nib/keyedobjects.nib differ
index 0d2c21a..a86888e 100755 (executable)
@@ -264,6 +264,11 @@ er's process managment.
  */
 - (NSString *)currentSongArtist;
 
+/*!
+ * @method currentSongComposer
+ */
+- (NSString *)currentSongComposer;
+
 /*!
  * @method currentSongAlbum
  */
index 55e599b..26fe9a0 100755 (executable)
     return nil;
 }
 
+- (NSString *)currentSongComposer
+{
+    return nil;
+}
+
 - (NSString *)currentSongAlbum
 {
     return nil;
index 08722af..2c0cf32 100755 (executable)
@@ -85,6 +85,7 @@
 - (void)clearHotKeys;
 - (void)setupHotKeys;
 - (void)closePreferences;
+- (MenuController *)menuController;
 
 - (void)showCurrentTrackInfo;
 
index e0230ff..940766c 100755 (executable)
@@ -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
index f666bdf..508237e 100755 (executable)
                         }
                     }
                     
+                    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
         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]);
     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"];
                 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;
             }
         }
     }
-    return NO;
+    return YES;
 }
 
 @end
\ No newline at end of file
index c52d9ad..52e4e5d 100755 (executable)
@@ -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;
index c962b52..51271ab 100755 (executable)
@@ -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];
index a3c36ea..c0ec9eb 100755 (executable)
@@ -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
index 2020530..fac506c 100755 (executable)
@@ -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]];
     }
index 3936926..bf672e1 100755 (executable)
     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;