diff --git a/instance/index.ejs b/instance/index.ejs index dde4e7fdea76bca064b75029bbb2886a332de38b..e874260257035d6f605f535d6f3690ee3badd2ad 100644 --- a/instance/index.ejs +++ b/instance/index.ejs @@ -18,11 +18,7 @@ <body> <%- include('views/settings.ejs'); %> <div id="mainFrame" class="container-fluid"> - <div - id="buttonPanelListLeft" - class="d-flex flex-row bd-highlight mb-3 row card" - style="-webkit-app-region: drag" - ></div> + <%- include('views/menubar.ejs'); %> <%- include('views/panels.ejs'); %> <%- include('views/progressBar.ejs'); %> </div> diff --git a/instance/main.js b/instance/main.js index f2f74989ac8ee53f685b6b84dae792ff2b830942..e80430817edcd023351ce09c8606e0bb539c632c 100644 --- a/instance/main.js +++ b/instance/main.js @@ -5,23 +5,6 @@ const { ipcRenderer } = require('electron'), ejs = require('ejs'), e = require('express'); -/* prettier-ignore */ -const buttonList = [ - [ 'left', `<i class="fas fa-play"></i>`, 'commandPlay', 'Play or pause Lektor' ], - [ 'left', `<i class="fas fa-stop"></i>`, 'commandStop', 'Stop lektor' ], - [ 'left', `<i class="fas fa-eraser"></i>`, 'commandClear', 'Clear the queue' ], - - [ 'sleft', `<i class="fas fa-search"></i>`, 'selectAdvence', 'Advence search' ], - [ 'sleft', `<i class="fas fa-database"></i>`, 'selectDatabase', 'Database search' ], - [ 'sleft', `<i class="fas fa-tag"></i>`, 'selectPlaylist', 'Playlist search' ], - [ 'sleft', `<i class="fas fa-bookmark"></i>`, 'selectPool', 'Pool search' ], - - [ 'right', `<i class="fas fa-compass"></i>`, 'openKurisu', 'Kurisu in a new page' ], - [ 'right', `<i class="fas fa-user-friends"></i>`, 'openUserView', 'Open client view' ], - [ 'right', `<i class="fas fa-music"></i>`, 'openMdtView', 'Open metadata view' ], - [ 'right', `<i class="fas fa-window-close"></i>`, 'closeButton', 'Quit Amadeus' ], -]; - /* Global variables */ var countKaraInQueue = 0; var currentSong = 0; @@ -68,8 +51,27 @@ function flushFillSettings() { } window.onload = () => { - createButtonList(buttonList); + /* Set things up for the settings modal*/ + var modal = document.getElementById('modal-settings'); + var btn = document.getElementById('btn-settings'); + var span = document.getElementsByClassName('modal-close')[0]; + + btn.onclick = function () { + modal.style.display = 'block'; + }; + + span.onclick = function () { + modal.style.display = 'none'; + flushFillSettings(); + }; + + window.onclick = function (event) { + if (event.target == modal) { + modal.style.display = 'none'; + } + }; + /* Add IPC to button list */ addIpcToButton('closeButton', ['close-app']); addIpcToButton('commandPlay', ['cmd-play']); @@ -135,73 +137,6 @@ window.onload = () => { autoFillSettings(); }; -/* Create the button list */ -function createButtonList(list) { - function action(ipc, argument) { - logger.error('instance', 'The action function builder for control buttons is not implemented'); - } - var renderHtmlLeft = ''; - var renderHtmlRight = ''; - var renderHtmlSLeft = ''; - list.forEach(btn => { - if (btn[0] == 'left') { - renderHtmlLeft = `${renderHtmlLeft} - <button id="${btn[2]}" type="button" class="btn btn-primary p-2 bd-highlight" - data-toggle="tooltip" data-placement="bottom" title="${btn[3]}" - style="-webkit-app-region: no-drag">${btn[1]}</button>`; - logger.debug('instance', `Create button for "${btn[1]}" with id "${btn[2]} at the left"`); - } else if (btn[0] == 'right') { - renderHtmlRight = `${renderHtmlRight} - <button id="${btn[2]}" type="button" class="btn btn-secondary p-2 bd-highlight" - data-toggle="tooltip" data-placement="bottom" title="${btn[3]}" - style="-webkit-app-region: no-drag">${btn[1]}</button>`; - logger.debug('instance', `Create button for "${btn[1]}" with id "${btn[2]} at the right"`); - } else if (btn[0] == 'sleft') { - renderHtmlSLeft = `${renderHtmlSLeft} - <button id="${btn[2]}" type="button" class="btn btn-secondary p-2 bd-highlight" - data-toggle="tooltip" data-placement="bottom" title="${btn[3]}" - style="-webkit-app-region: no-drag">${btn[1]}</button>`; - logger.debug('instance', `Create button for "${btn[1]}" with id "${btn[2]} at the right"`); - } else { - logger.warn('instance', `Unknown button type ${btn[0]} in top bar builder`); - } - }); - document.getElementById('buttonPanelListLeft').innerHTML = ` - <div class="btn-group" role="group">${renderHtmlLeft}</div> - <div class="btn-group" role="group">${renderHtmlSLeft}</div> - <div class="p-1 bd-highlight mb-1 mr-auto ml-auto" style="width: 60%;-webkit-app-region: no-drag;"> - <input id="filterInput" type="text" class="form-control filterInput" placeholder="Filter..."> - </div> - <div class="btn-group" role="group"> - <button id="btn-settings" type="button" class="btn btn-secondary p-2 bd-highlight" - style="-webkit-app-region: no-drag" data-toggle="tooltip" - data-placement="bottom" title="Open settings"> - <i class="fas fa-cogs"></i> - </button> - ${renderHtmlRight} - </div>`; - - /* Set things up for the settings modal*/ - var modal = document.getElementById('modal-settings'); - var btn = document.getElementById('btn-settings'); - var span = document.getElementsByClassName('modal-close')[0]; - - btn.onclick = function () { - modal.style.display = 'block'; - }; - - span.onclick = function () { - modal.style.display = 'none'; - flushFillSettings(); - }; - - window.onclick = function (event) { - if (event.target == modal) { - modal.style.display = 'none'; - } - }; -} - /* Create the left panel */ ipcRenderer.on('reload-db-responce', (event, arg) => { logger.debug('instance', `Web page got reload-db`); diff --git a/instance/views/menubar.ejs b/instance/views/menubar.ejs new file mode 100644 index 0000000000000000000000000000000000000000..b62e64c7b7db74428129ca6fc600a205ced284b1 --- /dev/null +++ b/instance/views/menubar.ejs @@ -0,0 +1,25 @@ +<%# vim: ts=4 syntax=html + The button list at the top of the window %> +<div id="buttonPanelListLeft" class="d-flex flex-row bd-highlight mb-3 row card" style="-webkit-app-region: drag"> + <div class="btn-group" role="group"><%- include('menubar/buttons.ejs', {type: 'primary', buttons: [ + {id: 'commandPlay', tooltip: 'Play or pause Lektor', name: 'play'}, + {id: 'commandStop', tooltip: 'Stop Lektor', name: 'stop'}, + {id: 'commandClear', tooltip: 'Clear the queue', name: 'eraser'}, + ]}); %></div> + <div class="btn-group" role="group"><%- include('menubar/buttons.ejs', {type: 'secondary', buttons: [ + {id: 'selectAdvence', tooltip: 'Advence search', name: 'search'}, + {id: 'selectDatabase', tooltip: 'Database search', name: 'database'}, + {id: 'selectPlaylist', tooltip: 'Playlist search', name: 'tag'}, + {id: 'selectPool', tooltip: "Kurisu's pool search", name: 'bookmark'}, + ]}); %></div> + <div class="p-1 bd-highlight mb-1 mr-auto ml-auto" style="width: 60%;-webkit-app-region: no-drag;"> + <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: 'openKurisu', tooltip: 'Open Kurisu in a new page', name: 'compass'}, + {id: 'openUserView', tooltip: 'Open client view in a new page', name: 'user-friends'}, + {id: 'openMdtView', tooltip: 'Open metadata view', name: 'music'}, + {id: 'closeButton', tooltip: 'Quit Amadeus', name: 'window-close'}, + ]}); %></div> +</div> diff --git a/instance/views/menubar/buttons.ejs b/instance/views/menubar/buttons.ejs new file mode 100644 index 0000000000000000000000000000000000000000..4c6f60d891f093a944918c76fe6d67887dd1d364 --- /dev/null +++ b/instance/views/menubar/buttons.ejs @@ -0,0 +1,11 @@ +<%# vim: ts=4 syntax=html + The buttons for the menubar at the top of the window %> +<% buttons.forEach(function(btn){ %> +<button + id="<%= btn.id %>" type="button" + class="btn btn-<%= type %> p-2 bd-highlight" + data-toggle="tooltip" data-placement="bottom" title="<%= btn.tooltip %>" + style="-webkit-app-region: no-drag"> + <i class="fas fa-<%= btn.name %>"></i> +</button> +<% })%>