current track info options. Made the tooltip a hidden preference.
clearHotKey = id;
editHotKey = id;
showPrefsWindow = id;
- showTestWindow = id;
};
CLASS = PreferencesController;
LANGUAGE = ObjC;
backgroundColorWell = NSColorWell;
backgroundStylePopup = NSPopUpButton;
clientPasswordTextField = NSTextField;
+ composerCheckbox = NSButton;
hostTextField = NSTextField;
hotKeysTableView = NSTableView;
launchAtLoginCheckbox = NSButton;
sharingTableView = NSTableView;
showOnChangeCheckbox = NSButton;
showScriptsButton = NSButton;
- showToolTipCheckbox = NSButton;
songsInAdvance = NSTextField;
trackNumberCheckbox = NSButton;
trackTimeCheckbox = NSButton;
*/
- (NSString *)currentSongArtist;
+/*!
+ * @method currentSongComposer
+ */
+- (NSString *)currentSongComposer;
+
/*!
* @method currentSongAlbum
*/
return nil;
}
+- (NSString *)currentSongComposer
+{
+ return nil;
+}
+
- (NSString *)currentSongAlbum
{
return nil;
- (void)clearHotKeys;
- (void)setupHotKeys;
- (void)closePreferences;
+- (MenuController *)menuController;
- (void)showCurrentTrackInfo;
//
//
+- (MenuController *)menuController
+{
+ return menuController;
+}
+
- (void)closePreferences
{
ITDebugLog(@"Preferences closed.");
NSString *title = nil;
NSString *album = nil;
NSString *artist = nil;
+ NSString *composer = nil;
NSString *time = nil;
NSString *track = nil;
NSImage *art = nil;
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:@"%@: %@ / %@",
title:title
album:album
artist:artist
+ composer:composer
time:time
track:track
rating:rating
}
}
+ 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
IBOutlet NSColorWell *backgroundColorWell;
IBOutlet NSPopUpButton *backgroundColorPopup;
IBOutlet NSTextField *clientPasswordTextField;
+ IBOutlet NSButton *composerCheckbox;
IBOutlet NSTextField *hostTextField;
IBOutlet NSTableView *hotKeysTableView;
IBOutlet NSButton *launchAtLoginCheckbox;
IBOutlet NSTableView *sharingTableView;
IBOutlet NSButton *showOnChangeCheckbox;
IBOutlet NSButton *showScriptsButton;
- IBOutlet NSButton *showToolTipCheckbox;
IBOutlet NSTextField *songsInAdvance;
IBOutlet NSButton *trackNumberCheckbox;
IBOutlet NSButton *trackTimeCheckbox;
- (IBAction)clearHotKey:(id)sender;
- (IBAction)editHotKey:(id)sender;
- (IBAction)showPrefsWindow:(id)sender;
-- (IBAction)showTestWindow:(id)sender;
- (void)registerDefaults;
- (void)deletePressedInTableView:(NSTableView *)tableView;
#import "PreferencesController.h"
#import "MainController.h"
+#import "MenuController.h"
#import "NetworkController.h"
#import "NetworkObject.h"
#import "StatusWindow.h"
[window makeKeyWindow];
}
-- (IBAction)showTestWindow:(id)sender
-{
- [controller showTestWindow];
-}
-
- (IBAction)changeGeneralSetting:(id)sender
{
ITDebugLog(@"Changing general setting of tag %i.", [sender tag]);
[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) {
[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) {
} 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]) );
}
[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];
} 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"];
[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"];
[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];
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
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
if ( artist ) {
text = [text stringByAppendingString:[@"\n" stringByAppendingString:artist]];
}
+ if ( composer ) {
+ text = [text stringByAppendingString:[@"\n" stringByAppendingString:composer]];
+ }
if ( time ) {
text = [text stringByAppendingString:[@"\n" stringByAppendingString:time]];
}
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;