Cleaned up logic a little.

CQTexperiment
vspader 2009-02-28 14:40:30 -08:00
parent 03937f480b
commit af6c5f343a
1 changed files with 35 additions and 30 deletions

View File

@ -794,55 +794,60 @@
{ {
if (![urls count]) if (![urls count])
return; return;
CGEventRef event = CGEventCreate(NULL /*default event source*/); CGEventRef event = CGEventCreate(NULL /*default event source*/);
CGEventFlags mods = CGEventGetFlags(event); CGEventFlags mods = CGEventGetFlags(event);
CFRelease(event); CFRelease(event);
BOOL modifierPressed = ((mods & kCGEventFlagMaskCommand)!=0)&((mods & kCGEventFlagMaskControl)!=0);
modifierPressed |= ((mods & kCGEventFlagMaskShift)!=0);
bool modifier1_pressed = ((mods & kCGEventFlagMaskCommand)!=0)&((mods & kCGEventFlagMaskControl)!=0); NSString *behavior = [[NSUserDefaults standardUserDefaults] valueForKey:@"openingFilesBehavior"];
modifier1_pressed |= ((mods & kCGEventFlagMaskShift)!=0); if (modifierPressed) {
bool should_clean = false; behavior = [[NSUserDefaults standardUserDefaults] valueForKey:@"openingFilesAlteredBehavior"];
NSLog(@"Behavior: %@", [[NSUserDefaults standardUserDefaults] valueForKey:@"openingFilesBehavior"]); }
NSLog(@"Altered Behavior: %@", [[NSUserDefaults standardUserDefaults] valueForKey:@"openingFilesAlteredBehavior"]);
if (origin == URLOriginExternal) {
BOOL shouldClear = modifierPressed; // By default, internal sources should not clear the playlist
if (origin == URLOriginExternal) { // For external insertions, we look at the preference
//possible settings are "clearAndPlay", "enqueue", "enqueueAndPlay" //possible settings are "clearAndPlay", "enqueue", "enqueueAndPlay"
should_clean = (!modifier1_pressed && ![[[NSUserDefaults standardUserDefaults] valueForKey:@"openingFilesBehavior"] compare:@"clearAndPlay"]) shouldClear = [behavior isEqualToString:@"clearAndPlay"];
|| ( modifier1_pressed && ![[[NSUserDefaults standardUserDefaults] valueForKey:@"openingFilesAlteredBehavior"] compare:@"clearAndPlay"]);
}
else {
should_clean = modifier1_pressed;
} }
if (should_clean) { if (shouldClear) {
[self clear:self]; [self clear:self];
} }
} }
- (void)didInsertURLs:(NSArray*)entries origin:(URLOrigin)origin - (void)didInsertURLs:(NSArray*)urls origin:(URLOrigin)origin
{ {
if (![entries count]) if (![urls count])
return; return;
CGEventRef event = CGEventCreate(NULL); CGEventRef event = CGEventCreate(NULL);
CGEventFlags mods = CGEventGetFlags(event); CGEventFlags mods = CGEventGetFlags(event);
CFRelease(event); CFRelease(event);
bool modifier1_pressed = ((mods & kCGEventFlagMaskCommand)!=0)&((mods & kCGEventFlagMaskControl)!=0); BOOL modifierPressed = ((mods & kCGEventFlagMaskCommand)!=0)&((mods & kCGEventFlagMaskControl)!=0);
modifier1_pressed |= ((mods & kCGEventFlagMaskShift)!=0); modifierPressed |= ((mods & kCGEventFlagMaskShift)!=0);
bool should_autoplay = false;
if (origin == URLOriginExternal) NSString *behavior = [[NSUserDefaults standardUserDefaults] valueForKey:@"openingFilesBehavior"];
should_autoplay = (!modifier1_pressed && (![[[NSUserDefaults standardUserDefaults] valueForKey:@"openingFilesBehavior"] compare:@"clearAndPlay"] if (modifierPressed) {
|| ![[[NSUserDefaults standardUserDefaults] valueForKey:@"openingFilesBehavior"] compare:@"enqueueAndPlay"])) behavior = [[NSUserDefaults standardUserDefaults] valueForKey:@"openingFilesAlteredBehavior"];
|| ( modifier1_pressed && (![[[NSUserDefaults standardUserDefaults] valueForKey:@"openingFilesAlteredBehavior"] compare:@"clearAndPlay"] }
|| ![[[NSUserDefaults standardUserDefaults] valueForKey:@"openingFilesAlteredBehavior"] compare:@"enqueueAndPlay"]));
if (origin == URLOriginInternal) BOOL shouldPlay = modifierPressed; // The default is NO for internal insertions
should_autoplay = modifier1_pressed; if (origin == URLOriginExternal) { // For external insertions, we look at the preference
shouldPlay = [behavior isEqualToString:@"clearAndPlay"] || [behavior isEqualToString:@"enqueueAndPlay"];;
}
//Auto start playback //Auto start playback
if (should_autoplay && [[entriesController entries] count] > 0) { if (shouldPlay && [[entriesController entries] count] > 0) {
[[entries objectAtIndex:0] setValuesForKeysWithDictionary:[playlistLoader readEntryInfo:[entries objectAtIndex:0]]]; // HACK ALERT!
[playbackController playEntry: [entries objectAtIndex:0]]; [[urls objectAtIndex:0] setValuesForKeysWithDictionary:[playlistLoader readEntryInfo:[urls objectAtIndex:0]]];
// END HACK
[playbackController playEntry: [urls objectAtIndex:0]];
} }
} }