4.4.4 Prevents global shortcuts on inputs

- Adds a control on the origin of keyboard shortcuts
This prevents pausing the song when typing "space" in the search input.

- Moves volume management to player-service. Adds getters and setters.
The setter also checks the volume so it stays between 0 and 1.
This commit is contained in:
Hyzual 2015-02-15 14:47:58 +01:00
parent 91a5c6d3c3
commit faf004b5b0
10 changed files with 170 additions and 75 deletions

View file

@ -309,38 +309,52 @@ angular.module('JamStash')
}
};
/**
* Returns true if the target of this event is an input
* @param {jQuery event} event
* @return {Boolean}
*/
function isTargetInput (event) {
return (event && event.target.tagName === "INPUT");
}
/* We define player-related methods here instead of in player controller
in order to bind keypresses to <body> and have global shortcuts */
$scope.togglePause = function () {
if(globals.settings.Jukebox) {
$scope.sendToJukebox('stop');
} else {
player.togglePause();
in order to bind keypresses to <body> and have global shortcuts.
We also check the event so we don't do anything if it's on an input */
$scope.togglePause = function (event) {
if(!isTargetInput(event)) {
if(globals.settings.Jukebox) {
$scope.sendToJukebox('stop');
} else {
player.togglePause();
}
}
};
$scope.turnVolumeUp = function () {
var volume = player.volume;
if ((volume+0.1) > 1 || volume < 0) {
volume = 0.9;
$scope.turnVolumeUp = function (event) {
if(!isTargetInput(event)) {
var volume = player.turnVolumeUp();
persistence.saveVolume(volume);
}
volume += 0.1;
player.volume = volume;
persistence.saveVolume(volume);
};
$scope.turnVolumeDown = function () {
var volume = player.volume;
if (volume > 1 || (volume-0.1) < 0) {
volume = 0.1;
$scope.turnVolumeDown = function (event) {
if(!isTargetInput(event)) {
var volume = player.turnVolumeDown();
persistence.saveVolume(volume);
}
volume -= 0.1;
player.volume = volume;
persistence.saveVolume(volume);
};
$scope.nextTrack = player.nextTrack;
$scope.previousTrack = player.previousTrack;
$scope.nextTrack = function (event) {
if(!isTargetInput(event)) {
player.nextTrack();
}
};
$scope.previousTrack = function (event) {
if(!isTargetInput(event)) {
player.previousTrack();
}
};
$rootScope.addToJukebox = function (id) {
if (globals.settings.Debug) { console.log("LOAD JUKEBOX"); }
@ -410,7 +424,7 @@ angular.module('JamStash')
persistence.loadQueue();
persistence.loadTrackPosition();
}
player.volume = persistence.getVolume();
player.setVolume(persistence.getVolume());
}
/* End Startup */
}]);