diff --git a/common/lkt.js b/common/lkt.js index d010534372a2f66b8371d0c129ce6f55c95822b9..5f58ad1575d7979e5185b360a5a15b9e3151efb4 100644 --- a/common/lkt.js +++ b/common/lkt.js @@ -205,9 +205,9 @@ class LktClient { } static commandPlay() { - var status = LktClient.commandStatus(); - return status.then(LktClient.changePlayStatus, LktClient.errorStatus); + return LktClient.commandStatus().then(LktClient.changePlayStatus, LktClient.errorStatus); } + static changePlayStatus(status) { switch (status.state) { case 'play': @@ -224,24 +224,39 @@ class LktClient { } LktClient.setPlayState(status.state); } + static commandPlayPos(position) { return LktClient.__execSimple(`play ${position}`); } + static commandStop() { return LktClient.__execSimple('stop'); } + + static commandPause() { + return LktClient.__execSimple('pause 1'); + } + + static commandUnpause() { + return LktClient.__execSimple('pause 0'); + } + static commandPrev() { return LktClient.__execSimple('previous'); } + static commandNext() { return LktClient.__execSimple('next'); } + static commandShuffle() { return LktClient.__execSimple('shuffle'); } + static commandClear() { return LktClient.__execSimple('clear'); } + static commandMove(from, to) { return LktClient.__execSimple(`move ${from} ${to}`); } @@ -249,12 +264,15 @@ class LktClient { static commandQueueAddId(id) { return LktClient.__execSimple(`add id://${id}`); } + static commandQueueInsertId(id) { return LktClient.__execSimple(`__insert id://${id}`); } + static commandQueueDelPos(position) { return LktClient.__execSimple(`delete ${position}`); } + static commandQueueDelId(id) { return LktClient.__execSimple(`deleteid ${id}`); } diff --git a/instance/index.js b/instance/index.js index 748607ab826de4ad0d9a6375f9237b2d26279c67..613dc78194d624e84dce15c72eeeefc58c165dd4 100644 --- a/instance/index.js +++ b/instance/index.js @@ -163,7 +163,31 @@ window.onload = () => { }) .on('click', () => $('#context-menu-right').removeClass('show').hide()); - $('#context-menu a').on('click', () => $(this).parent().removeClass('show').hide()); + const clearMenu = () => $('#context-menu-right').removeClass('show').hide(); + $('#queue-play').click(() => { + clearMenu(); + logger.debug('instance', 'Queue play'); + ipcRenderer.send('cmd-unpause'); + }); + $('#queue-pause').click(() => { + clearMenu(); + logger.debug('instance', 'Queue pause'); + ipcRenderer.send('cmd-pause'); + }); + $('#queue-find').click(() => { + clearMenu(); + logger.debug('instance', 'Queue find'); + }); + $('#queue-shuffle').click(() => { + clearMenu(); + logger.debug('instance', 'Queue shuffle'); + ipcRenderer.send('cmd-shuffle'); + }); + $('#queue-clear').click(() => { + clearMenu(); + logger.debug('instance', 'Queue clear'); + ipcRenderer.send('cmd-clear'); + }); }; /* Create the left panel */ diff --git a/instance/views/menu/queue.ejs b/instance/views/menu/queue.ejs index 6910511df990874173ab4debc191a36c9925b076..cb5916d7903213d792052c59bb504e9f025bea76 100644 --- a/instance/views/menu/queue.ejs +++ b/instance/views/menu/queue.ejs @@ -1,11 +1,11 @@ <%# vim: ts=4 syntax=html The template for the right click menu on the queue %> <div class="dropdown-menu dropdown-menu-sm" id="context-menu-right"> - <a class="dropdown-item" href="#">Pause playback</a> - <a class="dropdown-item" href="#">Unpause playback</a> + <a class="dropdown-item" id="queue-pause" href="#">Pause playback</a> + <a class="dropdown-item" id="queue-play" href="#">Resume playback</a> <div><hr class="dropdown-divider"></div> - <a class="dropdown-item" href="#">Find kara</a> + <a class="dropdown-item" id="queue-find" href="#">Find kara</a> <div><hr class="dropdown-divider"></div> - <a class="dropdown-item" href="#">Shuffle queue</a> - <a class="dropdown-item" href="#">Clear queue</a> + <a class="dropdown-item" id="queue-shuffle" href="#">Shuffle queue</a> + <a class="dropdown-item" id="queue-clear" href="#">Clear queue</a> </div> diff --git a/instance/views/menubar.ejs b/instance/views/menubar.ejs index 6fad850efcc618c5c960f62706e5db0b46cb3042..785c6e084cd97d31839f43c546f21ad844a58170 100644 --- a/instance/views/menubar.ejs +++ b/instance/views/menubar.ejs @@ -16,8 +16,8 @@ <input id="filterInput" type="text" class="form-control filterInput" placeholder="Filter..."> </div> <div class="btn-group" role="group"><%- include('menubar/buttons.ejs', {type: 'secondary', buttons: [ - {id: 'btn-settings', tooltip: 'Open settings', name: 'cogs'}, {id: 'openMdtView', tooltip: 'Open metadata view', name: 'music'}, + {id: 'btn-settings', tooltip: 'Open settings', name: 'cogs'}, {id: 'closeButton', tooltip: 'Quit Amadeus', name: 'window-close'}, ]}); %></div> </div> diff --git a/main.js b/main.js index 544d242088497da044bdd317dac6da7dea397cdf..e9f03def1d1f8425b6c5e7bb6ab3981d89be7455 100644 --- a/main.js +++ b/main.js @@ -219,6 +219,9 @@ var songTimeData = { elapsed: 0, total: 100, state: 'stop', song: '0' }; var counterTime = 0; ipcMain.on('cmd-play', () => lkt.commandPlay().then(arg => logger.debug('main', 'Returned from cmd-play'))); +ipcMain.on('cmd-pause', () => lkt.commandPause().then(arg => logger.debug('main', 'Returned from cmd-pause'))); +ipcMain.on('cmd-unpause', () => lkt.commandUnpause().then(arg => logger.debug('main', 'Returned from cmd-unpause'))); +ipcMain.on('cmd-shuffle', () => lkt.commandShuffle().then(arg => logger.debug('main', 'Returned from cmd-shuffle'))); ipcMain.on('cmd-stop', () => lkt.commandStop().then(arg => logger.debug('main', 'Returned from cmd-stop'))); ipcMain.on('cmd-clear', () => lkt.commandClear().then(arg => logger.debug('main', 'Cleared queue with cmd-clear')));