diff --git a/src/renderer/controllers/playback-controller.js b/src/renderer/controllers/playback-controller.js index fc8b3205..2e6ec670 100644 --- a/src/renderer/controllers/playback-controller.js +++ b/src/renderer/controllers/playback-controller.js @@ -158,6 +158,20 @@ module.exports = class PlaybackController { else this.state.playing.jumpToTime = time } + // Show video preview + preview (x) { + if (!Number.isFinite(x)) { + console.error('Tried to preview a non-finite position ' + x) + return console.trace() + } + this.state.playing.previewXCoord = x + } + + // Hide video preview + clearPreview () { + this.state.playing.previewXCoord = 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 a98a6e0f..cbed5a19 100644 --- a/src/renderer/main.js +++ b/src/renderer/main.js @@ -274,6 +274,8 @@ const dispatchHandlers = { previousTrack: () => controllers.playback().previousTrack(), skip: (time) => controllers.playback().skip(time), skipTo: (time) => controllers.playback().skipTo(time), + preview: (x) => controllers.playback().preview(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..1d40385f 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), +
{renderLoadingBar(state)}
+
+
+

+ {formatTime(time, state.playing.duration)} +

+
+ ) +} + // Renders the loading bar. Shows which parts of the torrent are loaded, which // can be 'spongey' / non-contiguous function renderLoadingBar (state) {