92 lines
2.0 KiB
JavaScript
92 lines
2.0 KiB
JavaScript
module.exports = {
|
|
disable,
|
|
enable,
|
|
onPlayerPause,
|
|
onPlayerPlay,
|
|
onPlayerUpdate
|
|
}
|
|
|
|
/**
|
|
* On Windows, add a "thumbnail toolbar" with a play/pause button in the taskbar.
|
|
* This provides users a way to access play/pause functionality without restoring
|
|
* or activating the window.
|
|
*/
|
|
|
|
const path = require('path')
|
|
const config = require('../config')
|
|
|
|
const windows = require('./windows')
|
|
|
|
const PREV_ICON = path.join(config.STATIC_PATH, 'PreviousTrackThumbnailBarButton.png')
|
|
const PLAY_ICON = path.join(config.STATIC_PATH, 'PlayThumbnailBarButton.png')
|
|
const PAUSE_ICON = path.join(config.STATIC_PATH, 'PauseThumbnailBarButton.png')
|
|
const NEXT_ICON = path.join(config.STATIC_PATH, 'NextTrackThumbnailBarButton.png')
|
|
|
|
// Array indices for each button
|
|
const PREV = 0
|
|
const PLAY_PAUSE = 1
|
|
const NEXT = 2
|
|
|
|
let buttons = []
|
|
|
|
/**
|
|
* Show the Windows thumbnail toolbar buttons.
|
|
*/
|
|
function enable () {
|
|
buttons = [
|
|
{
|
|
tooltip: 'Previous Track',
|
|
icon: PREV_ICON,
|
|
click: () => windows.main.dispatch('previousTrack')
|
|
},
|
|
{
|
|
tooltip: 'Pause',
|
|
icon: PAUSE_ICON,
|
|
click: () => windows.main.dispatch('playPause')
|
|
},
|
|
{
|
|
tooltip: 'Next Track',
|
|
icon: NEXT_ICON,
|
|
click: () => windows.main.dispatch('nextTrack')
|
|
}
|
|
]
|
|
update()
|
|
}
|
|
|
|
/**
|
|
* Hide the Windows thumbnail toolbar buttons.
|
|
*/
|
|
function disable () {
|
|
buttons = []
|
|
update()
|
|
}
|
|
|
|
function onPlayerPause () {
|
|
if (!isEnabled()) return
|
|
buttons[PLAY_PAUSE].tooltip = 'Play'
|
|
buttons[PLAY_PAUSE].icon = PLAY_ICON
|
|
update()
|
|
}
|
|
|
|
function onPlayerPlay () {
|
|
if (!isEnabled()) return
|
|
buttons[PLAY_PAUSE].tooltip = 'Pause'
|
|
buttons[PLAY_PAUSE].icon = PAUSE_ICON
|
|
update()
|
|
}
|
|
|
|
function onPlayerUpdate (state) {
|
|
if (!isEnabled()) return
|
|
buttons[PREV].flags = [ state.hasPrevious ? 'enabled' : 'disabled' ]
|
|
buttons[NEXT].flags = [ state.hasNext ? 'enabled' : 'disabled' ]
|
|
update()
|
|
}
|
|
|
|
function isEnabled () {
|
|
return buttons.length > 0
|
|
}
|
|
|
|
function update () {
|
|
windows.main.win.setThumbarButtons(buttons)
|
|
}
|