Cleaned up logic a little.
parent
03937f480b
commit
af6c5f343a
|
@ -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]];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue