diff --git a/main/ipc.js b/main/ipc.js index b03d03b5..68efb862 100644 --- a/main/ipc.js +++ b/main/ipc.js @@ -15,6 +15,7 @@ var shell = require('./shell') var shortcuts = require('./shortcuts') var vlc = require('./vlc') var windows = require('./windows') +var thumbnail = require('./thumbnail') // Messages from the main process, to be sent once the WebTorrent process starts var messageQueueMainToWebTorrent = [] @@ -68,6 +69,10 @@ function init () { shortcuts.onPlayerOpen() }) + ipc.on('updateThumbnailBar', function (e, isPaused) { + thumbnail.updateThumbarButtons(isPaused) + }) + /** * Power Save Blocker */ diff --git a/main/menu.js b/main/menu.js index a79e0394..61f17417 100644 --- a/main/menu.js +++ b/main/menu.js @@ -16,6 +16,7 @@ var config = require('../config') var dialog = require('./dialog') var shell = require('./shell') var windows = require('./windows') +var thumbnail = require('./thumbnail') var menu @@ -33,6 +34,8 @@ function onPlayerClose () { getMenuItem('Increase Speed').enabled = false getMenuItem('Decrease Speed').enabled = false getMenuItem('Add Subtitles File...').enabled = false + + thumbnail.showPlayerThumbnailBar() } function onPlayerOpen () { @@ -44,6 +47,8 @@ function onPlayerOpen () { getMenuItem('Increase Speed').enabled = true getMenuItem('Decrease Speed').enabled = true getMenuItem('Add Subtitles File...').enabled = true + + thumbnail.hidePlayerThumbnailBar() } function onToggleAlwaysOnTop (flag) { diff --git a/main/thumbnail.js b/main/thumbnail.js new file mode 100644 index 00000000..d3336ed8 --- /dev/null +++ b/main/thumbnail.js @@ -0,0 +1,35 @@ +module.exports = { + showPlayerThumbnailBar, + hidePlayerThumbnailBar, + updateThumbarButtons +} + +var path = require('path') +var config = require('../config') + +var windows = require('./windows') + +// gets called on player open +function showPlayerThumbnailBar () { + updateThumbarButtons(false) +} + +// gets called on player close +function hidePlayerThumbnailBar () { + windows.main.win.setThumbarButtons([]) +} + +function updateThumbarButtons (isPaused) { + var icon = isPaused ? 'PlayThumbnailBarButton.png' : 'PauseThumbnailBarButton.png' + var tooltip = isPaused ? 'Play' : 'Pause' + var buttons = [ + { + tooltip: tooltip, + icon: path.join(config.STATIC_PATH, icon), + click: function () { + windows.main.send('dispatch', 'playPause') + } + } + ] + windows.main.win.setThumbarButtons(buttons) +} diff --git a/renderer/main.js b/renderer/main.js index de0968e2..0f4ad4eb 100644 --- a/renderer/main.js +++ b/renderer/main.js @@ -372,14 +372,18 @@ function pause () { function playPause () { if (state.location.url() !== 'player') return + if (state.playing.isPaused) { play() } else { pause() } + // force rerendering if window is hidden, // in order to bypass `raf` and play/pause media immediately if (!state.window.isVisible) render(state) + + ipcRenderer.send('updateThumbnailBar', state.playing.isPaused) } function jumpToTime (time) { diff --git a/static/PauseThumbnailBarButton.png b/static/PauseThumbnailBarButton.png new file mode 100644 index 00000000..74068eae Binary files /dev/null and b/static/PauseThumbnailBarButton.png differ diff --git a/static/PlayThumbnailBarButton.png b/static/PlayThumbnailBarButton.png new file mode 100644 index 00000000..f208795f Binary files /dev/null and b/static/PlayThumbnailBarButton.png differ