Merge pull request #936 from ciderapp/develop
Merge to match UWP/MSFT Store
This commit is contained in:
commit
84038d263d
19 changed files with 235 additions and 24 deletions
|
@ -88,13 +88,14 @@ export default class RAOP {
|
||||||
|
|
||||||
`;
|
`;
|
||||||
|
|
||||||
private ondeviceup(name: any, host: any, port: any, addresses: any) {
|
private ondeviceup(name: any, host: any, port: any, addresses: any, text: any) {
|
||||||
if (this.castDevices.findIndex((item: any) => item.name === host && item.port === port && item.addresses === addresses) === -1) {
|
if (this.castDevices.findIndex((item: any) => item.name === host && item.port === port && item.addresses === addresses) === -1) {
|
||||||
this.castDevices.push({
|
this.castDevices.push({
|
||||||
name: host,
|
name: host,
|
||||||
host: addresses ? addresses[0] : '',
|
host: addresses ? addresses[0] : '',
|
||||||
port: port,
|
port: port,
|
||||||
addresses: addresses
|
addresses: addresses,
|
||||||
|
txt: text
|
||||||
});
|
});
|
||||||
if (this.devices.indexOf(host) === -1) {
|
if (this.devices.indexOf(host) === -1) {
|
||||||
this.devices.push(host);
|
this.devices.push(host);
|
||||||
|
@ -146,10 +147,11 @@ export default class RAOP {
|
||||||
|
|
||||||
browser.on('update', (service: any) => {
|
browser.on('update', (service: any) => {
|
||||||
if (service.addresses && service.fullname && service.fullname.includes('_raop._tcp')) {
|
if (service.addresses && service.fullname && service.fullname.includes('_raop._tcp')) {
|
||||||
|
console.log(service.txt)
|
||||||
this._win.webContents.executeJavaScript(`console.log(
|
this._win.webContents.executeJavaScript(`console.log(
|
||||||
"${service.name} ${service.host}:${service.port} ${service.addresses}"
|
"${service.name} ${service.host}:${service.port} ${service.addresses}"
|
||||||
)`);}
|
)`);
|
||||||
this.ondeviceup(service.name, service.host, service.port, service.addresses);
|
this.ondeviceup(service.name, service.host, service.port, service.addresses, service.txt);}
|
||||||
});
|
});
|
||||||
|
|
||||||
});
|
});
|
|
@ -38,7 +38,6 @@
|
||||||
"@sentry/electron": "^3.0.7",
|
"@sentry/electron": "^3.0.7",
|
||||||
"@sentry/integrations": "^6.19.6",
|
"@sentry/integrations": "^6.19.6",
|
||||||
"adm-zip": "0.4.10",
|
"adm-zip": "0.4.10",
|
||||||
"airtunes2": "git+https://github.com/vapormusic/node_airtunes2.git",
|
|
||||||
"castv2-client": "^1.2.0",
|
"castv2-client": "^1.2.0",
|
||||||
"chokidar": "^3.5.3",
|
"chokidar": "^3.5.3",
|
||||||
"discord-rpc": "^4.0.1",
|
"discord-rpc": "^4.0.1",
|
||||||
|
@ -76,7 +75,7 @@
|
||||||
"@types/express": "^4.17.13",
|
"@types/express": "^4.17.13",
|
||||||
"@types/qrcode-terminal": "^0.12.0",
|
"@types/qrcode-terminal": "^0.12.0",
|
||||||
"@types/ws": "^8.5.3",
|
"@types/ws": "^8.5.3",
|
||||||
"electron": "git+https://github.com/castlabs/electron-releases.git",
|
"electron": "git+https://github.com/castlabs/electron-releases.git#18-x-y",
|
||||||
"electron-builder": "^23.0.3",
|
"electron-builder": "^23.0.3",
|
||||||
"electron-builder-notarize-pkg": "^1.2.0",
|
"electron-builder-notarize-pkg": "^1.2.0",
|
||||||
"electron-webpack": "^2.8.2",
|
"electron-webpack": "^2.8.2",
|
||||||
|
@ -108,9 +107,9 @@
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"build": {
|
"build": {
|
||||||
"electronVersion": "18.0.4",
|
"electronVersion": "18.1.0",
|
||||||
"electronDownload": {
|
"electronDownload": {
|
||||||
"version": "18.0.4+wvcus",
|
"version": "18.1.0+wvcus",
|
||||||
"mirror": "https://github.com/castlabs/electron-releases/releases/download/v"
|
"mirror": "https://github.com/castlabs/electron-releases/releases/download/v"
|
||||||
},
|
},
|
||||||
"appId": "cider",
|
"appId": "cider",
|
||||||
|
|
|
@ -271,3 +271,22 @@ Update 22/04/2022 16:00 UTC
|
||||||
|
|
||||||
* `settings.option.visual.theme.github.openfolder`: Added for `en_US`
|
* `settings.option.visual.theme.github.openfolder`: Added for `en_US`
|
||||||
|
|
||||||
|
Update 24/04/2022 19:00 UTC
|
||||||
|
|
||||||
|
* `settings.option.audio.changePlaybackRate`: Added for `en_US`
|
||||||
|
* `settings.option.audio.playbackRate`: Added for `en_US`
|
||||||
|
* `settings.option.audio.playbackRate.change`: Added for `en_US`
|
||||||
|
|
||||||
|
Update 25/04/2022 00:21 UTC
|
||||||
|
|
||||||
|
* `settings.description.search`: Added for `en_US`
|
||||||
|
* `settings.description.albums`: Added for `en_US`
|
||||||
|
* `settings.description.artists`: Added for `en_US`
|
||||||
|
* `settings.description.browse`: Added for `en_US`
|
||||||
|
* `settings.description.private`: Added for `en_US`
|
||||||
|
* `settings.description.remote`: Added for `en_US`
|
||||||
|
* `settings.description.audio`: Added for `en_US`
|
||||||
|
* `settings.description.plugins`: Added for `en_US`
|
||||||
|
* `settings.description.cast`: Added for `en_US`
|
||||||
|
* `settings.description.settings`: Added for `en_US`
|
||||||
|
* `settings.description.developer`: Added for `en_US`
|
||||||
|
|
|
@ -281,6 +281,17 @@
|
||||||
"settings.option.general.customizeSidebar.customize": "Customize",
|
"settings.option.general.customizeSidebar.customize": "Customize",
|
||||||
"settings.option.general.keybindings": "Keybindings",
|
"settings.option.general.keybindings": "Keybindings",
|
||||||
"settings.option.general.keybindings.open": "Open",
|
"settings.option.general.keybindings.open": "Open",
|
||||||
|
"settings.description.search": "Search",
|
||||||
|
"settings.description.albums": "Library Albums",
|
||||||
|
"settings.description.artists": "Library Artists",
|
||||||
|
"settings.description.browse": "Browse",
|
||||||
|
"settings.description.private": "Toogle Private Session",
|
||||||
|
"settings.description.remote": "Web Remote",
|
||||||
|
"settings.description.audio": "Audio Settings",
|
||||||
|
"settings.description.plugins": "Plugins Menu",
|
||||||
|
"settings.description.cast": "Cast to Devices",
|
||||||
|
"settings.description.settings": "Settings",
|
||||||
|
"settings.description.developer": "Developer Tools",
|
||||||
"settings.notyf.updateCider.update-not-available": "No update available",
|
"settings.notyf.updateCider.update-not-available": "No update available",
|
||||||
"settings.notyf.updateCider.update-downloaded": "Update has been downloaded, restart to apply",
|
"settings.notyf.updateCider.update-downloaded": "Update has been downloaded, restart to apply",
|
||||||
"settings.notyf.updateCider.update-error": "Error updating Cider",
|
"settings.notyf.updateCider.update-error": "Error updating Cider",
|
||||||
|
@ -289,6 +300,9 @@
|
||||||
"settings.header.audio.description": "Adjust the audio settings for Cider.",
|
"settings.header.audio.description": "Adjust the audio settings for Cider.",
|
||||||
"settings.option.audio.volumeStep": "Volume Step",
|
"settings.option.audio.volumeStep": "Volume Step",
|
||||||
"settings.option.audio.maxVolume": "Max Volume",
|
"settings.option.audio.maxVolume": "Max Volume",
|
||||||
|
"settings.option.audio.changePlaybackRate": "Change Playback Rate",
|
||||||
|
"settings.option.audio.playbackRate": "Playback Rate",
|
||||||
|
"settings.option.audio.playbackRate.change": "Change",
|
||||||
"settings.option.audio.quality": "Audio Quality",
|
"settings.option.audio.quality": "Audio Quality",
|
||||||
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
|
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
|
||||||
"settings.header.audio.quality.hireslossless.description": "up to 24-bit/192 kHz",
|
"settings.header.audio.quality.hireslossless.description": "up to 24-bit/192 kHz",
|
||||||
|
@ -425,7 +439,7 @@
|
||||||
"settings.option.advanced.playlistTrackMapping": "Playlist Track Mapping",
|
"settings.option.advanced.playlistTrackMapping": "Playlist Track Mapping",
|
||||||
"settings.option.advanced.playlistTrackMapping.description": "Enables deep scanning of playlists to determine which tracks are in which playlists. Playlist cache build times can increase significantly.",
|
"settings.option.advanced.playlistTrackMapping.description": "Enables deep scanning of playlists to determine which tracks are in which playlists. Playlist cache build times can increase significantly.",
|
||||||
"settings.option.visual.transparent": "Transparent frame",
|
"settings.option.visual.transparent": "Transparent frame",
|
||||||
"settings.option.visual.transparent.description": "Transparent frame (needs Theme Support, requires relaunch)",
|
"settings.option.visual.transparent.description": "(needs Theme Support, requires relaunch)",
|
||||||
"settings.header.advanced": "Advanced",
|
"settings.header.advanced": "Advanced",
|
||||||
"settings.header.connect": "Sync",
|
"settings.header.connect": "Sync",
|
||||||
"settings.option.connect.link_account": "Enable Sync with Cider Connect",
|
"settings.option.connect.link_account": "Enable Sync with Cider Connect",
|
||||||
|
|
|
@ -289,6 +289,9 @@
|
||||||
"settings.header.audio.description": "A Cider hangbeállításainak módosítása.",
|
"settings.header.audio.description": "A Cider hangbeállításainak módosítása.",
|
||||||
"settings.option.audio.volumeStep": "Hangerő lépték",
|
"settings.option.audio.volumeStep": "Hangerő lépték",
|
||||||
"settings.option.audio.maxVolume": "Maximum hangerő",
|
"settings.option.audio.maxVolume": "Maximum hangerő",
|
||||||
|
"settings.option.audio.changePlaybackRate": "Lejátszási sebesség módosítása",
|
||||||
|
"settings.option.audio.playbackRate": "Sebesség",
|
||||||
|
"settings.option.audio.playbackRate.change": "Módosítás",
|
||||||
"settings.option.audio.quality": "Hangminőség",
|
"settings.option.audio.quality": "Hangminőség",
|
||||||
"settings.header.audio.quality.hireslossless": "Nagy felbontású veszteségmentes",
|
"settings.header.audio.quality.hireslossless": "Nagy felbontású veszteségmentes",
|
||||||
"settings.header.audio.quality.hireslossless.description": "max. 24-bit/192 kHz sebességen",
|
"settings.header.audio.quality.hireslossless.description": "max. 24-bit/192 kHz sebességen",
|
||||||
|
|
|
@ -281,6 +281,17 @@
|
||||||
"settings.option.general.customizeSidebar.customize": "Customize",
|
"settings.option.general.customizeSidebar.customize": "Customize",
|
||||||
"settings.option.general.keybindings": "Keybindings",
|
"settings.option.general.keybindings": "Keybindings",
|
||||||
"settings.option.general.keybindings.open": "Open",
|
"settings.option.general.keybindings.open": "Open",
|
||||||
|
"settings.description.search": "Search",
|
||||||
|
"settings.description.albums": "Library Albums",
|
||||||
|
"settings.description.artists": "Library Artists",
|
||||||
|
"settings.description.browse": "Browse",
|
||||||
|
"settings.description.private": "Toogle Private Session",
|
||||||
|
"settings.description.remote": "Web Remote",
|
||||||
|
"settings.description.audio": "Audio Settings",
|
||||||
|
"settings.description.plugins": "Plugins Menu",
|
||||||
|
"settings.description.cast": "Cast to Devices",
|
||||||
|
"settings.description.settings": "Settings",
|
||||||
|
"settings.description.developer": "Developer Tools",
|
||||||
"settings.notyf.updateCider.update-not-available": "No update available",
|
"settings.notyf.updateCider.update-not-available": "No update available",
|
||||||
"settings.notyf.updateCider.update-downloaded": "Update has been downloaded, restart to apply",
|
"settings.notyf.updateCider.update-downloaded": "Update has been downloaded, restart to apply",
|
||||||
"settings.notyf.updateCider.update-error": "Error updating Cider",
|
"settings.notyf.updateCider.update-error": "Error updating Cider",
|
||||||
|
@ -289,6 +300,9 @@
|
||||||
"settings.header.audio.description": "Adjust the audio settings for Cider.",
|
"settings.header.audio.description": "Adjust the audio settings for Cider.",
|
||||||
"settings.option.audio.volumeStep": "Volume Step",
|
"settings.option.audio.volumeStep": "Volume Step",
|
||||||
"settings.option.audio.maxVolume": "Max Volume",
|
"settings.option.audio.maxVolume": "Max Volume",
|
||||||
|
"settings.option.audio.changePlaybackRate": "Change Playback Rate",
|
||||||
|
"settings.option.audio.playbackRate": "Playback Rate",
|
||||||
|
"settings.option.audio.playbackRate.change": "Change",
|
||||||
"settings.option.audio.quality": "Audio Quality",
|
"settings.option.audio.quality": "Audio Quality",
|
||||||
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
|
"settings.header.audio.quality.hireslossless": "Hi-Res Lossless",
|
||||||
"settings.header.audio.quality.hireslossless.description": "up to 24-bit/192 kHz",
|
"settings.header.audio.quality.hireslossless.description": "up to 24-bit/192 kHz",
|
||||||
|
@ -425,7 +439,7 @@
|
||||||
"settings.option.advanced.playlistTrackMapping": "Playlist Track Mapping",
|
"settings.option.advanced.playlistTrackMapping": "Playlist Track Mapping",
|
||||||
"settings.option.advanced.playlistTrackMapping.description": "Enables deep scanning of playlists to determine which tracks are in which playlists. Playlist cache build times can increase significantly.",
|
"settings.option.advanced.playlistTrackMapping.description": "Enables deep scanning of playlists to determine which tracks are in which playlists. Playlist cache build times can increase significantly.",
|
||||||
"settings.option.visual.transparent": "Transparent frame",
|
"settings.option.visual.transparent": "Transparent frame",
|
||||||
"settings.option.visual.transparent.description": "Transparent frame (needs Theme Support, requires relaunch)",
|
"settings.option.visual.transparent.description": "(needs Theme Support, requires relaunch)",
|
||||||
"settings.header.advanced": "Advanced",
|
"settings.header.advanced": "Advanced",
|
||||||
"settings.header.connect": "Connect",
|
"settings.header.connect": "Connect",
|
||||||
"spatial.notTurnedOn": "Audio Spatialization is disabled. To use, please enable it first.",
|
"spatial.notTurnedOn": "Audio Spatialization is disabled. To use, please enable it first.",
|
||||||
|
|
|
@ -72,6 +72,7 @@ export class BrowserWindow {
|
||||||
"components/audio-settings",
|
"components/audio-settings",
|
||||||
"components/plugin-menu",
|
"components/plugin-menu",
|
||||||
"components/audio-controls",
|
"components/audio-controls",
|
||||||
|
"components/audio-playbackrate",
|
||||||
"components/qrcode-modal",
|
"components/qrcode-modal",
|
||||||
"components/moreinfo-modal",
|
"components/moreinfo-modal",
|
||||||
"components/equalizer",
|
"components/equalizer",
|
||||||
|
|
|
@ -68,6 +68,7 @@ export class Store {
|
||||||
"maxVolume": 1,
|
"maxVolume": 1,
|
||||||
"lastVolume": 1,
|
"lastVolume": 1,
|
||||||
"muted": false,
|
"muted": false,
|
||||||
|
"playbackRate": '1',
|
||||||
"quality": "HIGH",
|
"quality": "HIGH",
|
||||||
"seamless_audio": true,
|
"seamless_audio": true,
|
||||||
"normalization": false,
|
"normalization": false,
|
||||||
|
|
|
@ -37,6 +37,12 @@ const MusicKitInterop = {
|
||||||
if (trackFilter || !app.cfg.lastfm.filterLoop) {
|
if (trackFilter || !app.cfg.lastfm.filterLoop) {
|
||||||
global.ipcRenderer.send('nowPlayingItemDidChangeLastFM', attributes);
|
global.ipcRenderer.send('nowPlayingItemDidChangeLastFM', attributes);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (MusicKit.getInstance().nowPlayingItem) {
|
||||||
|
await this.sleep(1000);
|
||||||
|
console.log("Auto-updating Playback Rate from " + MusicKit.getInstance().playbackRate + " x to " + app.cfg.audio.playbackRate + " x");
|
||||||
|
MusicKit.getInstance().playbackRate = app.cfg.audio.playbackRate;
|
||||||
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
MusicKit.getInstance().addEventListener(MusicKit.Events.authorizationStatusDidChange, () => {
|
MusicKit.getInstance().addEventListener(MusicKit.Events.authorizationStatusDidChange, () => {
|
||||||
|
@ -47,6 +53,13 @@ const MusicKitInterop = {
|
||||||
console.warn(`[mediaPlaybackError] ${e}`);
|
console.warn(`[mediaPlaybackError] ${e}`);
|
||||||
})
|
})
|
||||||
},
|
},
|
||||||
|
|
||||||
|
sleep(ms) {
|
||||||
|
return new Promise((resolve) => {
|
||||||
|
setTimeout(resolve, ms);
|
||||||
|
});
|
||||||
|
},
|
||||||
|
|
||||||
async modifyNamesOnLocale() {
|
async modifyNamesOnLocale() {
|
||||||
if (app.mklang === '' || app.mklang == null) {
|
if (app.mklang === '' || app.mklang == null) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -18,7 +18,9 @@ const Events = {
|
||||||
});
|
});
|
||||||
|
|
||||||
document.addEventListener('keydown', async function (event) {
|
document.addEventListener('keydown', async function (event) {
|
||||||
|
// CTRL + F
|
||||||
if (event.keyCode === 70 && event.ctrlKey) {
|
if (event.keyCode === 70 && event.ctrlKey) {
|
||||||
|
app.appRoute('search')
|
||||||
app.$refs.searchInput.focus()
|
app.$refs.searchInput.focus()
|
||||||
app.$refs.searchInput.select()
|
app.$refs.searchInput.select()
|
||||||
}
|
}
|
||||||
|
@ -36,6 +38,22 @@ const Events = {
|
||||||
event.preventDefault()
|
event.preventDefault()
|
||||||
window.location.reload()
|
window.location.reload()
|
||||||
}
|
}
|
||||||
|
// CTRL + S
|
||||||
|
if (event.keyCode === 83 && event.ctrlKey) {
|
||||||
|
app.appRoute("settings")
|
||||||
|
}
|
||||||
|
// CTRL + A
|
||||||
|
if (event.keyCode === 65 && event.ctrlKey) {
|
||||||
|
app.appRoute("library-albums")
|
||||||
|
}
|
||||||
|
// CTRL + B
|
||||||
|
if (event.keyCode === 66 && event.ctrlKey) {
|
||||||
|
app.appRoute("browse")
|
||||||
|
}
|
||||||
|
// CTRL + D
|
||||||
|
if (event.keyCode === 68 && event.ctrlKey) {
|
||||||
|
app.appRoute("library-artists")
|
||||||
|
}
|
||||||
// CTRL + E
|
// CTRL + E
|
||||||
if (event.keyCode === 69 && event.ctrlKey) {
|
if (event.keyCode === 69 && event.ctrlKey) {
|
||||||
app.invokeDrawer('queue')
|
app.invokeDrawer('queue')
|
||||||
|
|
|
@ -203,6 +203,7 @@ const app = new Vue({
|
||||||
audioSettings: false,
|
audioSettings: false,
|
||||||
pluginMenu: false,
|
pluginMenu: false,
|
||||||
audioControls: false,
|
audioControls: false,
|
||||||
|
audioPlaybackRate: false,
|
||||||
showPlaylist: false,
|
showPlaylist: false,
|
||||||
castMenu: false,
|
castMenu: false,
|
||||||
moreInfo: false,
|
moreInfo: false,
|
||||||
|
|
|
@ -12954,6 +12954,10 @@ body[platform='darwin'] .app-chrome .app-chrome-item > .app-mainmenu {
|
||||||
.percent::after {
|
.percent::after {
|
||||||
content: '%';
|
content: '%';
|
||||||
}
|
}
|
||||||
|
.playbackrate-text {
|
||||||
|
align-items: end;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
.spatialproperties-panel.modal-fullscreen {
|
.spatialproperties-panel.modal-fullscreen {
|
||||||
flex-direction: column;
|
flex-direction: column;
|
||||||
}
|
}
|
||||||
|
|
|
@ -3294,6 +3294,11 @@ body[platform='darwin'] {
|
||||||
content: '%';
|
content: '%';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.playbackrate-text {
|
||||||
|
align-items: end;
|
||||||
|
margin-right: 5px;
|
||||||
|
}
|
||||||
|
|
||||||
.modal .close {
|
.modal .close {
|
||||||
color: transparent;
|
color: transparent;
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,9 @@
|
||||||
<transition name="modal">
|
<transition name="modal">
|
||||||
<audio-controls v-if="modals.audioControls"></audio-controls>
|
<audio-controls v-if="modals.audioControls"></audio-controls>
|
||||||
</transition>
|
</transition>
|
||||||
|
<transition name="modal">
|
||||||
|
<audio-playbackrate v-if="modals.audioPlaybackRate"></audio-playbackrate>
|
||||||
|
</transition>
|
||||||
<transition name="modal">
|
<transition name="modal">
|
||||||
<audio-settings v-if="modals.audioSettings"></audio-settings>
|
<audio-settings v-if="modals.audioSettings"></audio-settings>
|
||||||
</transition>
|
</transition>
|
||||||
|
|
43
src/renderer/views/components/audio-playbackrate.ejs
Normal file
43
src/renderer/views/components/audio-playbackrate.ejs
Normal file
|
@ -0,0 +1,43 @@
|
||||||
|
<script type="text/x-template" id="audio-playbackrate">
|
||||||
|
<div class="modal-fullscreen addtoplaylist-panel" @click.self="app.resetState()"
|
||||||
|
@contextmenu.self="app.resetState()">
|
||||||
|
<div class="modal-window">
|
||||||
|
<div class="modal-header">
|
||||||
|
<div class="modal-title">{{app.getLz('settings.option.audio.changePlaybackRate')}}</div>
|
||||||
|
<button class="close-btn" @click="app.resetState()"></button>
|
||||||
|
</div>
|
||||||
|
<div class="modal-content">
|
||||||
|
<div class="md-option-line">
|
||||||
|
<div class="md-option-segment">
|
||||||
|
{{app.getLz('settings.option.audio.playbackRate')}}
|
||||||
|
</div>
|
||||||
|
<div class="md-option-segment playbackrate-text" v-if="this.playbackRate">
|
||||||
|
{{playbackRate}} ×
|
||||||
|
</div>
|
||||||
|
<div class="md-option-segment md-option-segment_auto">
|
||||||
|
<input type="range" :step="0.05" min="0.25" :max="2" v-model="playbackRate">
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
Vue.component('audio-playbackrate', {
|
||||||
|
template: '#audio-playbackrate',
|
||||||
|
data: function () {
|
||||||
|
return {
|
||||||
|
app: this.$root,
|
||||||
|
playbackRate: this.$root.cfg.audio.playbackRate
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
playbackRate: function (newValue, _oldValue) {
|
||||||
|
this.$root.mk.playbackRate = newValue
|
||||||
|
this.$root.cfg.audio.playbackRate = newValue
|
||||||
|
this.playbackRate = newValue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -18,10 +18,15 @@
|
||||||
<div class="name">{{app.getLz('settings.option.audio.enableAdvancedFunctionality.audioSpatialization')}}</div>
|
<div class="name">{{app.getLz('settings.option.audio.enableAdvancedFunctionality.audioSpatialization')}}</div>
|
||||||
</button>
|
</button>
|
||||||
<button class="playlist-item"
|
<button class="playlist-item"
|
||||||
@click="openAudioControls" style="width:100%;">
|
@click="openAudioControls()" style="width:100%;">
|
||||||
<div class="icon"><%- include("../svg/speaker.svg") %></div>
|
<div class="icon"><%- include("../svg/speaker.svg") %></div>
|
||||||
<div class="name">{{app.getLz('term.audioControls')}}</div>
|
<div class="name">{{app.getLz('term.audioControls')}}</div>
|
||||||
</button>
|
</button>
|
||||||
|
<button class="playlist-item"
|
||||||
|
@click="openAudioPlaybackRate()" style="width:100%;">
|
||||||
|
<div class="icon"><%- include("../svg/speaker.svg") %></div>
|
||||||
|
<div class="name">{{app.getLz('settings.option.audio.changePlaybackRate')}}</div>
|
||||||
|
</button>
|
||||||
<button class="playlist-item"
|
<button class="playlist-item"
|
||||||
@click="$root.appRoute('audiolabs')" style="width:100%;">
|
@click="$root.appRoute('audiolabs')" style="width:100%;">
|
||||||
<div class="icon"><%- include("../svg/speaker.svg") %></div>
|
<div class="icon"><%- include("../svg/speaker.svg") %></div>
|
||||||
|
@ -60,6 +65,10 @@
|
||||||
app.modals.audioControls = true
|
app.modals.audioControls = true
|
||||||
app.modals.audioSettings = false
|
app.modals.audioSettings = false
|
||||||
},
|
},
|
||||||
|
openAudioPlaybackRate() {
|
||||||
|
app.modals.audioPlaybackRate = true
|
||||||
|
app.modals.audioSettings = false
|
||||||
|
},
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
);
|
);
|
||||||
|
|
|
@ -109,6 +109,18 @@
|
||||||
role: app.getLz('term.developer'),
|
role: app.getLz('term.developer'),
|
||||||
avatar: 'https://avatars.githubusercontent.com/u/71800112?v=4'
|
avatar: 'https://avatars.githubusercontent.com/u/71800112?v=4'
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
name: 'GamingLiamStudios',
|
||||||
|
link: 'https://github.com/GamingLiamStudios',
|
||||||
|
role: app.getLz('term.developer'),
|
||||||
|
avatar: 'https://avatars.githubusercontent.com/u/58615717?v=4'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: 'Amaru',
|
||||||
|
link: 'https://github.com/Amaru8',
|
||||||
|
role: app.getLz('term.developer'),
|
||||||
|
avatar: 'https://avatars.githubusercontent.com/u/52407090?v=4'
|
||||||
|
},
|
||||||
{
|
{
|
||||||
name: 'Void',
|
name: 'Void',
|
||||||
link: 'https://twitter.com/MoonyVoid',
|
link: 'https://twitter.com/MoonyVoid',
|
||||||
|
|
|
@ -9,11 +9,7 @@
|
||||||
</template>
|
</template>
|
||||||
<template v-if="app.playlists.loadingState == 1">
|
<template v-if="app.playlists.loadingState == 1">
|
||||||
<div class="playlist-display"
|
<div class="playlist-display"
|
||||||
@mouseover.self="minClass(false)"
|
@mouseover.self="minClass(false)">
|
||||||
:style="{
|
|
||||||
'--bgColor': (data.attributes.artwork != null && data.attributes.artwork['bgColor'] != null) ? ('#' + data.attributes.artwork.bgColor) : '',
|
|
||||||
'--textColor': (data.attributes.artwork != null && data.attributes.artwork['textColor1'] != null) ? ('#' + data.attributes.artwork.textColor1) : ''
|
|
||||||
}">
|
|
||||||
<div class="playlistInfo">
|
<div class="playlistInfo">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-auto flex-center" @mouseover="minClass(false)">
|
<div class="col-auto flex-center" @mouseover="minClass(false)">
|
||||||
|
@ -150,7 +146,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="playlist-body scrollbody">
|
<div class="playlist-body scrollbody">
|
||||||
|
|
||||||
<b-tabs pills class="track-pills pilldim" align="center" content-class="mt-3">
|
<b-tabs pills class="track-pills pilldim" align="center" content-class="mt-3" :nav-wrapper-class="navClass(data)">
|
||||||
<b-tab :title="$root.getLz('term.tracks')">
|
<b-tab :title="$root.getLz('term.tracks')">
|
||||||
<div @wheel="minClass(true)" @scroll="minClass(true)">
|
<div @wheel="minClass(true)" @scroll="minClass(true)">
|
||||||
<div class="">
|
<div class="">
|
||||||
|
@ -717,6 +713,10 @@
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
},
|
||||||
|
navClass(data) {
|
||||||
|
if (data && typeof data.views != "undefined") return "";
|
||||||
|
return "d-none";
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -136,7 +136,39 @@
|
||||||
<div class="settings-option-body">
|
<div class="settings-option-body">
|
||||||
<div class="md-option-line">
|
<div class="md-option-line">
|
||||||
<div class="md-option-segment">
|
<div class="md-option-segment">
|
||||||
Toggle Private Session
|
{{$root.getLz('settings.description.search')}}
|
||||||
|
</div>
|
||||||
|
<div class="md-option-segment md-option-segment_auto keybindings-border">
|
||||||
|
<p class="keybinding-text">{{ getCommandOrControl() }} + F</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="md-option-line">
|
||||||
|
<div class="md-option-segment">
|
||||||
|
{{$root.getLz('settings.description.albums')}}
|
||||||
|
</div>
|
||||||
|
<div class="md-option-segment md-option-segment_auto keybindings-border">
|
||||||
|
<p class="keybinding-text">{{ getCommandOrControl() }} + A</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="md-option-line">
|
||||||
|
<div class="md-option-segment">
|
||||||
|
{{$root.getLz('settings.description.artists')}}
|
||||||
|
</div>
|
||||||
|
<div class="md-option-segment md-option-segment_auto keybindings-border">
|
||||||
|
<p class="keybinding-text">{{ getCommandOrControl() }} + D</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="md-option-line">
|
||||||
|
<div class="md-option-segment">
|
||||||
|
{{$root.getLz('settings.description.browse')}}
|
||||||
|
</div>
|
||||||
|
<div class="md-option-segment md-option-segment_auto keybindings-border">
|
||||||
|
<p class="keybinding-text">{{ getCommandOrControl() }} + B</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="md-option-line">
|
||||||
|
<div class="md-option-segment">
|
||||||
|
{{$root.getLz('settings.description.private')}}
|
||||||
</div>
|
</div>
|
||||||
<div class="md-option-segment md-option-segment_auto keybindings-border">
|
<div class="md-option-segment md-option-segment_auto keybindings-border">
|
||||||
<p class="keybinding-text">{{ getCommandOrControl() }} + P</p>
|
<p class="keybinding-text">{{ getCommandOrControl() }} + P</p>
|
||||||
|
@ -144,7 +176,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="md-option-line">
|
<div class="md-option-line">
|
||||||
<div class="md-option-segment">
|
<div class="md-option-segment">
|
||||||
Web Remote
|
{{$root.getLz('settings.description.remote')}}
|
||||||
</div>
|
</div>
|
||||||
<div class="md-option-segment md-option-segment_auto keybindings-border">
|
<div class="md-option-segment md-option-segment_auto keybindings-border">
|
||||||
<p class="keybinding-text">{{ getCommandOrControl() }} + Shift + W</p>
|
<p class="keybinding-text">{{ getCommandOrControl() }} + Shift + W</p>
|
||||||
|
@ -152,7 +184,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="md-option-line">
|
<div class="md-option-line">
|
||||||
<div class="md-option-segment">
|
<div class="md-option-segment">
|
||||||
Audio Settings
|
{{$root.getLz('settings.description.audio')}}
|
||||||
</div>
|
</div>
|
||||||
<div class="md-option-segment md-option-segment_auto keybindings-border">
|
<div class="md-option-segment md-option-segment_auto keybindings-border">
|
||||||
<p class="keybinding-text">{{ getCommandOrControl() }} + Shift + A</p>
|
<p class="keybinding-text">{{ getCommandOrControl() }} + Shift + A</p>
|
||||||
|
@ -160,7 +192,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="md-option-line">
|
<div class="md-option-line">
|
||||||
<div class="md-option-segment">
|
<div class="md-option-segment">
|
||||||
Plugin Menu
|
{{$root.getLz('settings.description.plugins')}}
|
||||||
</div>
|
</div>
|
||||||
<div class="md-option-segment md-option-segment_auto keybindings-border">
|
<div class="md-option-segment md-option-segment_auto keybindings-border">
|
||||||
<p class="keybinding-text">{{ getCommandOrControl() }} + Shift + P</p>
|
<p class="keybinding-text">{{ getCommandOrControl() }} + Shift + P</p>
|
||||||
|
@ -168,7 +200,7 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="md-option-line">
|
<div class="md-option-line">
|
||||||
<div class="md-option-segment">
|
<div class="md-option-segment">
|
||||||
Cast to Devices
|
{{$root.getLz('settings.description.cast')}}
|
||||||
</div>
|
</div>
|
||||||
<div class="md-option-segment md-option-segment_auto keybindings-border">
|
<div class="md-option-segment md-option-segment_auto keybindings-border">
|
||||||
<p class="keybinding-text">{{ getCommandOrControl() }} + Shift + C</p>
|
<p class="keybinding-text">{{ getCommandOrControl() }} + Shift + C</p>
|
||||||
|
@ -176,7 +208,15 @@
|
||||||
</div>
|
</div>
|
||||||
<div class="md-option-line">
|
<div class="md-option-line">
|
||||||
<div class="md-option-segment">
|
<div class="md-option-segment">
|
||||||
Open Developer Tools
|
{{$root.getLz('settings.description.settings')}}
|
||||||
|
</div>
|
||||||
|
<div class="md-option-segment md-option-segment_auto keybindings-border">
|
||||||
|
<p class="keybinding-text">{{ getCommandOrControl() }} + S</p>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="md-option-line">
|
||||||
|
<div class="md-option-segment">
|
||||||
|
{{$root.getLz('settings.description.developer')}}
|
||||||
</div>
|
</div>
|
||||||
<div class="md-option-segment md-option-segment_auto keybindings-border">
|
<div class="md-option-segment md-option-segment_auto keybindings-border">
|
||||||
<p class="keybinding-text">{{ getCommandOrControl() }} + {{ getOptionOrShift() }} + I</p>
|
<p class="keybinding-text">{{ getCommandOrControl() }} + {{ getOptionOrShift() }} + I</p>
|
||||||
|
@ -219,6 +259,16 @@
|
||||||
</button>
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="md-option-line">
|
||||||
|
<div class="md-option-segment">
|
||||||
|
{{$root.getLz('settings.option.audio.changePlaybackRate')}}
|
||||||
|
</div>
|
||||||
|
<div class="md-option-segment md-option-segment_auto">
|
||||||
|
<button class="md-btn" onclick="app.modals.audioPlaybackRate = true">
|
||||||
|
{{$root.getLz('settings.option.audio.playbackRate.change')}}
|
||||||
|
</button>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
<div class="md-option-line">
|
<div class="md-option-line">
|
||||||
<div class="md-option-segment">
|
<div class="md-option-segment">
|
||||||
{{$root.getLz('settings.option.audio.seamlessTransition')}}
|
{{$root.getLz('settings.option.audio.seamlessTransition')}}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue