Merge branch 'develop' of https://github.com/Apple-Music-Electron/Cider into develop
This commit is contained in:
commit
22e226d983
15 changed files with 210 additions and 50 deletions
|
@ -21,6 +21,10 @@
|
||||||
"start:win32": "yarn build && set ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers",
|
"start:win32": "yarn build && set ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers",
|
||||||
"start:linux": "yarn build && ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers",
|
"start:linux": "yarn build && ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers",
|
||||||
"start:darwin": "yarn build && ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers",
|
"start:darwin": "yarn build && ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers",
|
||||||
|
"start-renderer": "run-script-os",
|
||||||
|
"start-renderer:win32": "set ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers",
|
||||||
|
"start-renderer:linux": "ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers",
|
||||||
|
"start-renderer:darwin": "ELECTRON_ENABLE_LOGGING=true && electron ./build/index.js --enable-accelerated-mjpeg-decode --enable-accelerated-video --disable-gpu-driver-bug-workarounds --ignore-gpu-blacklist --enable-native-gpu-memory-buffers",
|
||||||
"pack": "electron-builder --dir",
|
"pack": "electron-builder --dir",
|
||||||
"dist": "yarn build && electron-builder",
|
"dist": "yarn build && electron-builder",
|
||||||
"dist:macarm": "yarn build && electron-builder --mac --arm64",
|
"dist:macarm": "yarn build && electron-builder --mac --arm64",
|
||||||
|
|
|
@ -116,3 +116,9 @@ Update 12/02/2022 12:00 UTC
|
||||||
* `settings.notyf.visual.theme.install.error`: Added for `en_US`.
|
* `settings.notyf.visual.theme.install.error`: Added for `en_US`.
|
||||||
* `term.defaultPresets`: Added for `en_US`.
|
* `term.defaultPresets`: Added for `en_US`.
|
||||||
* `term.userPresets`: Added for `en_US`.
|
* `term.userPresets`: Added for `en_US`.
|
||||||
|
|
||||||
|
Update 16/02/2022 21:45 UTC
|
||||||
|
|
||||||
|
* `term.audioControls`: Added for `en_US`.
|
||||||
|
* `settings.option.audio.volumeStep`: Added for `en_US`.
|
||||||
|
* `settings.option.audio.maxVolume`: Added for `en_US`.`
|
|
@ -109,6 +109,7 @@
|
||||||
"term.fullscreenView": "Fullscreen View",
|
"term.fullscreenView": "Fullscreen View",
|
||||||
"term.defaultView": "Default View",
|
"term.defaultView": "Default View",
|
||||||
"term.audioSettings": "Audio Settings",
|
"term.audioSettings": "Audio Settings",
|
||||||
|
"term.audioControls": "Audio Controls",
|
||||||
"term.clearAll": "Clear All",
|
"term.clearAll": "Clear All",
|
||||||
"term.recentStations": "Recent Stations",
|
"term.recentStations": "Recent Stations",
|
||||||
"term.language": "Language",
|
"term.language": "Language",
|
||||||
|
@ -251,6 +252,8 @@
|
||||||
// Settings - Audio
|
// Settings - Audio
|
||||||
"settings.header.audio": "Audio",
|
"settings.header.audio": "Audio",
|
||||||
"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.maxVolume": "Max Volume",
|
||||||
"settings.option.audio.quality": "Audio Quality", // Dropdown
|
"settings.option.audio.quality": "Audio Quality", // Dropdown
|
||||||
"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",
|
||||||
|
|
|
@ -53,6 +53,7 @@ export class BrowserWindow {
|
||||||
"components/sidebar-playlist",
|
"components/sidebar-playlist",
|
||||||
"components/spatial-properties",
|
"components/spatial-properties",
|
||||||
"components/audio-settings",
|
"components/audio-settings",
|
||||||
|
"components/audio-controls",
|
||||||
"components/qrcode-modal",
|
"components/qrcode-modal",
|
||||||
"components/equalizer",
|
"components/equalizer",
|
||||||
"components/add-to-playlist",
|
"components/add-to-playlist",
|
||||||
|
|
|
@ -69,6 +69,10 @@ ipcMain.on('nowPlayingItemDidChange', (_event, attributes) => {
|
||||||
CiderPlug.callPlugins('onNowPlayingItemDidChange', attributes);
|
CiderPlug.callPlugins('onNowPlayingItemDidChange', attributes);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
ipcMain.on('nowPlayingItemDidChangeLastFM', (_event, attributes) => {
|
||||||
|
CiderPlug.callPlugin('lastfm', 'nowPlayingItemDidChangeLastFM', attributes);
|
||||||
|
})
|
||||||
|
|
||||||
app.on('before-quit', () => {
|
app.on('before-quit', () => {
|
||||||
CiderPlug.callPlugins('onBeforeQuit');
|
CiderPlug.callPlugins('onBeforeQuit');
|
||||||
console.warn(`${app.getName()} exited.`);
|
console.warn(`${app.getName()} exited.`);
|
||||||
|
|
|
@ -118,7 +118,8 @@ export default class LastFMPlugin {
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
return console.log('[LastFM] Did not add ', attributes.name, '—', artist, 'because now playing a other song.');
|
return console.log('[LastFM] Did not add ', attributes.name, '—', artist, 'because now playing a other song.');
|
||||||
}},Math.round(attributes.durationInMillis * (self._store.lastfm.scrobble_after / 100)));
|
}
|
||||||
|
}, Math.round(attributes.durationInMillis * (self._store.lastfm.scrobble_after / 100)));
|
||||||
}
|
}
|
||||||
|
|
||||||
private async updateNowPlayingSong(attributes: any) {
|
private async updateNowPlayingSong(attributes: any) {
|
||||||
|
@ -258,17 +259,19 @@ export default class LastFMPlugin {
|
||||||
*/
|
*/
|
||||||
onPlaybackStateDidChange(attributes: object): void {
|
onPlaybackStateDidChange(attributes: object): void {
|
||||||
this.updateNowPlayingSong(attributes)
|
this.updateNowPlayingSong(attributes)
|
||||||
this.scrobbleSong(attributes)
|
// this.scrobbleSong(attributes)
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Runs on song change
|
* Runs on song change
|
||||||
* @param attributes Music Attributes
|
* @param attributes Music Attributes
|
||||||
*/
|
*/
|
||||||
onNowPlayingItemDidChange(attributes: object): void {
|
nowPlayingItemDidChangeLastFM(attributes: any): void {
|
||||||
|
attributes.status = true
|
||||||
if (!this._store.lastfm.filterLoop) {
|
if (!this._store.lastfm.filterLoop) {
|
||||||
this._lastfm.cachedNowPlayingAttributes = false;
|
this._lastfm.cachedNowPlayingAttributes = false;
|
||||||
this._lastfm.cachedAttributes = false}
|
this._lastfm.cachedAttributes = false
|
||||||
|
}
|
||||||
this.updateNowPlayingSong(attributes)
|
this.updateNowPlayingSong(attributes)
|
||||||
this.scrobbleSong(attributes)
|
this.scrobbleSong(attributes)
|
||||||
}
|
}
|
||||||
|
|
|
@ -7,9 +7,10 @@ let cache = {playParams: {id: 0}, status: null, remainingTime: 0},
|
||||||
const MusicKitInterop = {
|
const MusicKitInterop = {
|
||||||
init: function () {
|
init: function () {
|
||||||
MusicKit.getInstance().addEventListener(MusicKit.Events.playbackStateDidChange, () => {
|
MusicKit.getInstance().addEventListener(MusicKit.Events.playbackStateDidChange, () => {
|
||||||
if (MusicKitInterop.filterTrack(MusicKitInterop.getAttributes(), true, false)) {
|
const attributes = MusicKitInterop.getAttributes()
|
||||||
global.ipcRenderer.send('playbackStateDidChange', MusicKitInterop.getAttributes())
|
if (MusicKitInterop.filterTrack(attributes, true, false)) {
|
||||||
ipcRenderer.send('wsapi-updatePlaybackState', MusicKitInterop.getAttributes());
|
global.ipcRenderer.send('playbackStateDidChange', attributes)
|
||||||
|
ipcRenderer.send('wsapi-updatePlaybackState', attributes);
|
||||||
// if (typeof _plugins != "undefined") {
|
// if (typeof _plugins != "undefined") {
|
||||||
// _plugins.execute("OnPlaybackStateChanged", {Attributes: MusicKitInterop.getAttributes()})
|
// _plugins.execute("OnPlaybackStateChanged", {Attributes: MusicKitInterop.getAttributes()})
|
||||||
// }
|
// }
|
||||||
|
@ -23,9 +24,17 @@ const MusicKitInterop = {
|
||||||
/** wsapi */
|
/** wsapi */
|
||||||
|
|
||||||
MusicKit.getInstance().addEventListener(MusicKit.Events.nowPlayingItemDidChange, async () => {
|
MusicKit.getInstance().addEventListener(MusicKit.Events.nowPlayingItemDidChange, async () => {
|
||||||
|
const attributes = MusicKitInterop.getAttributes()
|
||||||
|
const trackFilter = MusicKitInterop.filterTrack(attributes, false, true)
|
||||||
|
|
||||||
|
if (trackFilter) {
|
||||||
|
global.ipcRenderer.send('nowPlayingItemDidChange', attributes);
|
||||||
|
}
|
||||||
|
|
||||||
|
// LastFM's Custom Call
|
||||||
// await MusicKitInterop.modifyNamesOnLocale();
|
// await MusicKitInterop.modifyNamesOnLocale();
|
||||||
if (MusicKitInterop.filterTrack(MusicKitInterop.getAttributes(), false, true) || !app.cfg.lastfm.filterLoop) {
|
if (trackFilter || !app.cfg.lastfm.filterLoop) {
|
||||||
global.ipcRenderer.send('nowPlayingItemDidChange', MusicKitInterop.getAttributes());
|
global.ipcRenderer.send('nowPlayingItemDidChangeLastFM', attributes);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
@ -67,7 +76,7 @@ const MusicKitInterop = {
|
||||||
const attributes = (nowPlayingItem != null ? nowPlayingItem.attributes : {});
|
const attributes = (nowPlayingItem != null ? nowPlayingItem.attributes : {});
|
||||||
|
|
||||||
attributes.status = isPlayingExport ?? false;
|
attributes.status = isPlayingExport ?? false;
|
||||||
attributes.name = attributes?.name ?? 'No Title Found';
|
attributes.name = attributes?.name ?? 'no-title-found';
|
||||||
attributes.artwork = attributes?.artwork ?? {url: ''};
|
attributes.artwork = attributes?.artwork ?? {url: ''};
|
||||||
attributes.artwork.url = (attributes?.artwork?.url ?? '').replace(`{f}`, "png");
|
attributes.artwork.url = (attributes?.artwork?.url ?? '').replace(`{f}`, "png");
|
||||||
attributes.playParams = attributes?.playParams ?? {id: 'no-id-found'};
|
attributes.playParams = attributes?.playParams ?? {id: 'no-id-found'};
|
||||||
|
@ -96,7 +105,7 @@ const MusicKitInterop = {
|
||||||
},
|
},
|
||||||
|
|
||||||
filterTrack: function (a, playbackCheck, mediaCheck) {
|
filterTrack: function (a, playbackCheck, mediaCheck) {
|
||||||
if (a.title === "No Title Found" || a.playParams.id === "no-id-found") {
|
if (a.name === 'no-title-found' || a.playParams.id === "no-id-found") {
|
||||||
return;
|
return;
|
||||||
} else if (mediaCheck && a.playParams.id === cache.playParams.id) {
|
} else if (mediaCheck && a.playParams.id === cache.playParams.id) {
|
||||||
return;
|
return;
|
||||||
|
|
|
@ -233,6 +233,7 @@ const app = new Vue({
|
||||||
qrcode: false,
|
qrcode: false,
|
||||||
equalizer: false,
|
equalizer: false,
|
||||||
audioSettings: false,
|
audioSettings: false,
|
||||||
|
audioControls: false,
|
||||||
showPlaylist: false,
|
showPlaylist: false,
|
||||||
},
|
},
|
||||||
socialBadges: {
|
socialBadges: {
|
||||||
|
@ -272,7 +273,7 @@ const app = new Vue({
|
||||||
artistPage: () => {
|
artistPage: () => {
|
||||||
document.getElementById("app-content").scrollTo(0, 0);
|
document.getElementById("app-content").scrollTo(0, 0);
|
||||||
app.resetState()
|
app.resetState()
|
||||||
},
|
}
|
||||||
},
|
},
|
||||||
methods: {
|
methods: {
|
||||||
songLinkShare(amUrl) {
|
songLinkShare(amUrl) {
|
||||||
|
@ -3321,7 +3322,7 @@ const app = new Vue({
|
||||||
console.log('setting max volume')
|
console.log('setting max volume')
|
||||||
} else {
|
} else {
|
||||||
console.log('volume up')
|
console.log('volume up')
|
||||||
app.mk.volume += app.cfg.audio.volumeStep;
|
app.mk.volume = ((app.mk.volume * 100) + (app.cfg.audio.volumeStep * 100)) / 100
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
volumeDown() {
|
volumeDown() {
|
||||||
|
@ -3330,11 +3331,11 @@ const app = new Vue({
|
||||||
console.log('setting volume to 0')
|
console.log('setting volume to 0')
|
||||||
} else {
|
} else {
|
||||||
console.log('volume down')
|
console.log('volume down')
|
||||||
app.mk.volume -= app.cfg.audio.volumeStep;
|
app.mk.volume = ((app.mk.volume * 100) - (app.cfg.audio.volumeStep * 100)) / 100
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
volumeWheel(event) {
|
volumeWheel(event) {
|
||||||
app.checkScrollDirectionIsUp(event) ? app.volumeUp() : app.volumeDown()
|
app.checkScrollDirectionIsUp(event) ? this.volumeUp() : this.volumeDown()
|
||||||
},
|
},
|
||||||
muteButtonPressed() {
|
muteButtonPressed() {
|
||||||
if (this.cfg.audio.muted) {
|
if (this.cfg.audio.muted) {
|
||||||
|
|
|
@ -3134,5 +3134,25 @@ body[platform='darwin'] {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.percent {
|
||||||
|
display: inline-block;
|
||||||
|
position: relative;
|
||||||
|
}
|
||||||
|
|
||||||
|
.percent::after {
|
||||||
|
position: relative;
|
||||||
|
right: 2em;
|
||||||
|
transition: all .05s ease-in-out;
|
||||||
|
}
|
||||||
|
|
||||||
|
.percent:hover::after,
|
||||||
|
.percent:focus-within::after {
|
||||||
|
right: 3.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.percent::after {
|
||||||
|
content: '%';
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
@import url("less/compact.less");
|
@import url("less/compact.less");
|
||||||
|
|
|
@ -16,6 +16,9 @@
|
||||||
<transition name="modal">
|
<transition name="modal">
|
||||||
<spatial-properties v-if="modals.spatialProperties"></spatial-properties>
|
<spatial-properties v-if="modals.spatialProperties"></spatial-properties>
|
||||||
</transition>
|
</transition>
|
||||||
|
<transition name="modal">
|
||||||
|
<audio-controls v-if="modals.audioControls"></audio-controls>
|
||||||
|
</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>
|
||||||
|
|
|
@ -152,7 +152,7 @@
|
||||||
<div class="input-container">
|
<div class="input-container">
|
||||||
<button class="volume-button--small volume" @click="muteButtonPressed()"
|
<button class="volume-button--small volume" @click="muteButtonPressed()"
|
||||||
:class="{'active': this.cfg.audio.volume == 0}"></button>
|
:class="{'active': this.cfg.audio.volume == 0}"></button>
|
||||||
<input type="range" class="" @wheel="volumeWheel" step="0.01" min="0"
|
<input type="range" class="" @wheel="volumeWheel" :step="cfg.audio.volumeStep" min="0"
|
||||||
:max="cfg.audio.maxVolume"
|
:max="cfg.audio.maxVolume"
|
||||||
v-model="mk.volume" v-if="typeof mk.volume != 'undefined'"
|
v-model="mk.volume" v-if="typeof mk.volume != 'undefined'"
|
||||||
@change="checkMuteChange()">
|
@change="checkMuteChange()">
|
||||||
|
|
87
src/renderer/views/components/audio-controls.ejs
Normal file
87
src/renderer/views/components/audio-controls.ejs
Normal file
|
@ -0,0 +1,87 @@
|
||||||
|
<script type="text/x-template" id="audio-controls">
|
||||||
|
<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('term.audioControls')}}</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('term.volume')}}
|
||||||
|
</div>
|
||||||
|
<div class="md-option-segment md-option-segment_auto percent">
|
||||||
|
<input type="number"
|
||||||
|
style="width: 100%; text-align: center; margin-right: 5px;" min="0"
|
||||||
|
step="5" v-model="volume"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="md-option-line">
|
||||||
|
<div class="md-option-segment">
|
||||||
|
{{app.getLz('settings.option.audio.volumeStep')}}
|
||||||
|
</div>
|
||||||
|
<div class="md-option-segment md-option-segment_auto percent">
|
||||||
|
<input type="number" style="width: 100%; text-align: center; margin-right: 5px;" min="0"
|
||||||
|
v-model="volumeStep"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<div class="md-option-line">
|
||||||
|
<div class="md-option-segment">
|
||||||
|
{{app.getLz('settings.option.audio.maxVolume')}}
|
||||||
|
</div>
|
||||||
|
<div class="md-option-segment md-option-segment_auto percent">
|
||||||
|
<input type="number" style="width: 100%; text-align: center; margin-right: 5px;" min="0"
|
||||||
|
v-model="maxVolume"/>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
Vue.component('audio-controls', {
|
||||||
|
template: '#audio-controls',
|
||||||
|
data: function () {
|
||||||
|
return {
|
||||||
|
app: this.$root,
|
||||||
|
maxVolume: this.$root.cfg.audio.maxVolume * 100,
|
||||||
|
volumeStep: this.$root.cfg.audio.volumeStep * 100,
|
||||||
|
volume: this.$root.cfg.audio.volume * 100
|
||||||
|
}
|
||||||
|
},
|
||||||
|
watch: {
|
||||||
|
maxVolume: function (newValue, _oldValue) {
|
||||||
|
if (newValue > 100) {
|
||||||
|
newValue = 100
|
||||||
|
} else {
|
||||||
|
newValue = Math.round(newValue)
|
||||||
|
}
|
||||||
|
this.$root.cfg.audio.maxVolume = newValue / 100
|
||||||
|
this.maxVolume = newValue
|
||||||
|
console.log(newValue, _oldValue)
|
||||||
|
},
|
||||||
|
volume: function (newValue, _oldValue) {
|
||||||
|
if (newValue > this.maxVolume) {
|
||||||
|
newValue = 100
|
||||||
|
} else {
|
||||||
|
newValue = Math.round(newValue)
|
||||||
|
}
|
||||||
|
this.$root.mk.volume = newValue / 100
|
||||||
|
this.volume = newValue
|
||||||
|
console.log(newValue, _oldValue)
|
||||||
|
},
|
||||||
|
volumeStep: function (newValue, _oldValue) {
|
||||||
|
if (newValue > this.maxVolume) {
|
||||||
|
newValue = 100
|
||||||
|
} else {
|
||||||
|
newValue = Math.round(newValue)
|
||||||
|
}
|
||||||
|
this.$root.cfg.audio.volumeStep = newValue / 100
|
||||||
|
this.volumeStep = newValue
|
||||||
|
console.log(newValue, _oldValue)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
</script>
|
|
@ -17,6 +17,11 @@
|
||||||
<div class="icon"><%- include("../svg/speaker.svg") %></div>
|
<div class="icon"><%- include("../svg/speaker.svg") %></div>
|
||||||
<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"
|
||||||
|
@click="openAudioControls" style="width:100%;">
|
||||||
|
<div class="icon"><%- include("../svg/speaker.svg") %></div>
|
||||||
|
<div class="name">{{app.getLz('term.audioControls')}}</div>
|
||||||
|
</button>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
@ -46,6 +51,10 @@
|
||||||
notyf.error(app.getLz('spatial.notTurnedOn'))
|
notyf.error(app.getLz('spatial.notTurnedOn'))
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
openAudioControls() {
|
||||||
|
app.modals.audioControls = true
|
||||||
|
app.modals.audioSettings = false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
|
@ -80,7 +80,7 @@
|
||||||
<div class="app-chrome-item volume display--large">
|
<div class="app-chrome-item volume display--large">
|
||||||
<div class="input-container">
|
<div class="input-container">
|
||||||
<button class="volume-button--small volume" @click="app.muteButtonPressed()" :class="{'active': app.cfg.audio.volume == 0}"></button>
|
<button class="volume-button--small volume" @click="app.muteButtonPressed()" :class="{'active': app.cfg.audio.volume == 0}"></button>
|
||||||
<input type="range" class="slider" @wheel="app.volumeWheel" :step="app.cfg.audio.volumeStep" min="0" :max="$root.cfg.audio.maxVolume" v-model="app.mk.volume"
|
<input type="range" class="slider" @wheel="app.volumeWheel" :step="app.cfg.audio.volumeStep" min="0" :max="app.cfg.audio.maxVolume" v-model="app.mk.volume"
|
||||||
v-if="typeof app.mk.volume != 'undefined'" @change="app.checkMuteChange()">
|
v-if="typeof app.mk.volume != 'undefined'" @change="app.checkMuteChange()">
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|
|
@ -42,6 +42,16 @@
|
||||||
</select>
|
</select>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
<div class="md-option-line">
|
||||||
|
<div class="md-option-segment">
|
||||||
|
{{$root.getLz('term.audioControls')}}
|
||||||
|
</div>
|
||||||
|
<div class="md-option-segment md-option-segment_auto">
|
||||||
|
<button class="md-btn" onclick="app.modals.audioControls = true">
|
||||||
|
{{$root.getLz('term.audioControls')}}
|
||||||
|
</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