diff --git a/src/renderer/controllers/playback-controller.js b/src/renderer/controllers/playback-controller.js index 413ccd2d..b09d0fa2 100644 --- a/src/renderer/controllers/playback-controller.js +++ b/src/renderer/controllers/playback-controller.js @@ -158,6 +158,18 @@ module.exports = class PlaybackController { else this.state.playing.jumpToTime = time } + preview (time, x) { + if (!Number.isFinite(time)) { + console.error('Tried to skip to a non-finite time ' + time) + return console.trace() + } + this.state.playing.preview = { time, x } + } + + clearPreview () { + this.state.playing.preview = null + } + // Change playback speed. 1 = faster, -1 = slower // Playback speed ranges from 16 (fast forward) to 1 (normal playback) // to 0.25 (quarter-speed playback), then goes to -0.25, -0.5, -1, -2, etc diff --git a/src/renderer/main.js b/src/renderer/main.js index be363d6c..ec02ca2c 100644 --- a/src/renderer/main.js +++ b/src/renderer/main.js @@ -277,6 +277,8 @@ const dispatchHandlers = { previousTrack: () => controllers.playback().previousTrack(), skip: (time) => controllers.playback().skip(time), skipTo: (time) => controllers.playback().skipTo(time), + preview: (time, x) => controllers.playback().preview(time, x), + clearPreview: () => controllers.playback().clearPreview(), changePlaybackRate: (dir) => controllers.playback().changePlaybackRate(dir), changeVolume: (delta) => controllers.playback().changeVolume(delta), setVolume: (vol) => controllers.playback().setVolume(vol), diff --git a/src/renderer/pages/player-page.js b/src/renderer/pages/player-page.js index a9a66695..dd233708 100644 --- a/src/renderer/pages/player-page.js +++ b/src/renderer/pages/player-page.js @@ -536,6 +536,8 @@ function renderPlayerControls (state) { const nextClass = Playlist.hasNext(state) ? '' : 'disabled' const elements = [ + renderPreview(state), +
{formatTime(state.playing.preview.time, state.playing.duration)}
+