From 03f15ada4e668d8f4282f8eb02fc999293de7a57 Mon Sep 17 00:00:00 2001 From: Eliot Berriot <contact@eliotberriot.com> Date: Mon, 11 Dec 2017 21:09:17 +0100 Subject: [PATCH] added shortcuts for play, volume and restore --- front/package.json | 1 + front/src/audio/queue.js | 6 +++++- front/src/components/Sidebar.vue | 8 +++++++- front/src/components/audio/Player.vue | 13 ++++++++++++- 4 files changed, 25 insertions(+), 3 deletions(-) diff --git a/front/package.json b/front/package.json index 7cec50319..55e773fba 100644 --- a/front/package.json +++ b/front/package.json @@ -18,6 +18,7 @@ "js-logger": "^1.3.0", "semantic-ui-css": "^2.2.10", "vue": "^2.3.3", + "vue-global-events": "^1.0.2", "vue-resource": "^1.3.4", "vue-router": "^2.3.1", "vuedraggable": "^2.14.1" diff --git a/front/src/audio/queue.js b/front/src/audio/queue.js index 25b27f00e..77fe6bf2b 100644 --- a/front/src/audio/queue.js +++ b/front/src/audio/queue.js @@ -86,6 +86,8 @@ class Queue { cache.remove('queue') } setVolume (newValue) { + newValue = Math.min(newValue, 1) + newValue = Math.max(newValue, 0) this.state.volume = newValue if (this.audio.setVolume) { this.audio.setVolume(newValue) @@ -94,7 +96,9 @@ class Queue { } cache.set('volume', newValue) } - + incrementVolume (value) { + this.setVolume(this.state.volume + value) + } reorder (oldIndex, newIndex) { // called when the user uses drag / drop to reorder // tracks in queue diff --git a/front/src/components/Sidebar.vue b/front/src/components/Sidebar.vue index e39dd16b9..0ce16a75f 100644 --- a/front/src/components/Sidebar.vue +++ b/front/src/components/Sidebar.vue @@ -87,10 +87,15 @@ <div class="ui inverted segment player-wrapper"> <player></player> </div> + <GlobalEvents + @keydown.r.stop="queue.restore" + /> </div> </template> <script> +import GlobalEvents from 'vue-global-events' + import Player from '@/components/audio/Player' import favoriteTracks from '@/favorites/tracks' import Logo from '@/components/Logo' @@ -109,7 +114,8 @@ export default { Player, SearchBar, Logo, - draggable + draggable, + GlobalEvents }, data () { return { diff --git a/front/src/components/audio/Player.vue b/front/src/components/audio/Player.vue index b72f37c5c..92ea9d0a4 100644 --- a/front/src/components/audio/Player.vue +++ b/front/src/components/audio/Player.vue @@ -56,10 +56,20 @@ <i title="Clear your queue" @click="queue.clean()" :class="['ui', 'trash', 'secondary', {'disabled': queue.tracks.length === 0}, 'icon']" :disabled="queue.tracks.length === 0"></i> </div> </div> + <GlobalEvents + @keydown.space.prevent="pauseOrPlay" + @keydown.ctrl.left.prevent="queue.previous" + @keydown.ctrl.right.prevent="queue.next" + @keydown.ctrl.down.prevent="queue.incrementVolume(-0.1)" + @keydown.ctrl.up.prevent="queue.incrementVolume(0.1)" + /> + </div> </template> <script> +import GlobalEvents from 'vue-global-events' + import queue from '@/audio/queue' import Track from '@/audio/track' import TrackFavoriteIcon from '@/components/favorites/TrackFavoriteIcon' @@ -68,7 +78,8 @@ import radios from '@/radios' export default { name: 'player', components: { - TrackFavoriteIcon + TrackFavoriteIcon, + GlobalEvents }, data () { return { -- GitLab