diff --git a/src/main/base/store.ts b/src/main/base/store.ts index 4c573a93..79df0198 100644 --- a/src/main/base/store.ts +++ b/src/main/base/store.ts @@ -24,6 +24,8 @@ export class ConfigStore { }, "audio": { "volume": 1, + "lastVolume": 1, + "muted": false, "quality": "990", "seamless_audio": true, "normalization": false, diff --git a/src/renderer/assets/feather/volume-2.svg b/src/renderer/assets/feather/volume-2.svg new file mode 100644 index 00000000..eaf07b56 --- /dev/null +++ b/src/renderer/assets/feather/volume-2.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/renderer/assets/feather/volume.svg b/src/renderer/assets/feather/volume.svg new file mode 100644 index 00000000..a6282072 --- /dev/null +++ b/src/renderer/assets/feather/volume.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/src/renderer/assets/volume-down.svg b/src/renderer/assets/volume-down.svg deleted file mode 100644 index 87c9f9fc..00000000 --- a/src/renderer/assets/volume-down.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/renderer/assets/volume-up.svg b/src/renderer/assets/volume-up.svg deleted file mode 100644 index 05db44e8..00000000 --- a/src/renderer/assets/volume-up.svg +++ /dev/null @@ -1 +0,0 @@ - \ No newline at end of file diff --git a/src/renderer/index.js b/src/renderer/index.js index dae9efcd..45c3a65d 100644 --- a/src/renderer/index.js +++ b/src/renderer/index.js @@ -525,8 +525,17 @@ const app = new Vue({ } } MusicKitInterop.init() - // Set the volume - this.mk.volume = this.cfg.audio.volume + // Set the volume + + // Check the value of this.cfg.audio.muted + if( !this.cfg.audio.muted ) + { + // Set the mk.volume to the last stored volume data + this.mk.volume = this.cfg.audio.volume + } else if( this.cfg.audio.muted ) { + // Set mk.volume to -1 (setting to 0 wont work, so temp solution setting to -1) + this.mk.volume = -1; + } // ipcRenderer.invoke('getStoreValue', 'audio.volume').then((value) => { // self.mk.volume = value // }) @@ -2997,6 +3006,17 @@ const app = new Vue({ } } }, + muteButtonPressed() { + if( this.cfg.audio.muted ) { + this.mk.volume = this.cfg.audio.lastVolume; + this.cfg.audio.muted = false; + } else { + this.cfg.audio.lastVolume = this.cfg.audio.volume; + this.mk.volume = 0; + this.cfg.audio.muted = true; + } + }, + async apiCall(url, callback) { const xmlHttp = new XMLHttpRequest(); diff --git a/src/renderer/style.less b/src/renderer/style.less index 08d48f25..8b9ad700 100644 --- a/src/renderer/style.less +++ b/src/renderer/style.less @@ -854,12 +854,43 @@ input[type=range].web-slider::-webkit-slider-runnable-track { margin-right: 6px; } -.app-chrome-item.volume-icon { - opacity: 0.7; - background-image: url(http://localhost:9000/assets/volume-up.svg); +.volume-button { + background-image: url("./assets/feather/volume-2.svg"); height: 15px; width: 30px; + padding: 0px; + background: transparent; + border: 0px; + border-radius: 0px; + box-shadow: unset; + background-size: 12px; + background-position: center; background-repeat: no-repeat; + opacity: 0.70; + border-radius: 6px; +} + +.volume-button:active, .volume-button--small:active { + transform: scale(0.9); +} + +.volume-button.active, .volume-button--small.active { + background-image: url("./assets/feather/volume.svg"); +} + +.volume-button--small { + border-radius: 6px; + color: inherit; + background-size: 16px; + background-repeat: no-repeat; + background-position: center; + background-color: transparent; + height: 15px; + width: 30px; + border: 0px; + box-shadow: unset; + opacity: 0.70; + background-image: url("./assets/feather/volume-2.svg"); } .app-chrome .app-chrome-item.volume > input[type=range]::-webkit-slider-thumb { @@ -1399,6 +1430,7 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb { height: 32px; border: 0px; box-shadow: unset; + opacity: 0.70; } .playback-button:hover, @@ -1474,12 +1506,12 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb { } .player-volume-glyph.decrease { - background-image: url("./assets/volume-down.svg"); + background-image: url("./assets/volume.svg"); opacity: 0.5; } .player-volume-glyph.increase { - background-image: url("./assets/volume-up.svg"); + background-image: url("./assets/volume-2.svg"); opacity: 0.5; } @@ -4207,6 +4239,29 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb { width: 100% } + .volume-button--small { + border-radius: 6px; + color: inherit; + background-size: 16px; + background-repeat: no-repeat; + background-position: center; + background-color: transparent; + height: 15px; + width: 30px; + border: 0px; + box-shadow: unset; + opacity: 0.70; + background-image: url("./assets/feather/volume-2.svg"); + } + + .volume-button--small:active { + transform: scale(0.9); + } + + .volume-button--small.active { + background-image: url("./assets/feather/volume.svg"); + } + input[type=range] { -webkit-appearance: none; height: 4px; @@ -4332,6 +4387,15 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb { height: 5vh; justify-content: space-evenly; + .volume { + background-image: url("./assets/feathers/volume.svg"); + padding: 0.5vh; + width: 2vh; + height: 2vh; + background-origin: content-box; + background-repeat: no-repeat; + } + .queue { background-image: url("./assets/list.svg"); padding: 0.5vh; @@ -4395,6 +4459,7 @@ input[type="range"].web-slider.display--small::-webkit-slider-thumb { .song-artist { font-size: 0.875em; + font-weight: 400; } .song-name { diff --git a/src/renderer/views/components/fullscreen.ejs b/src/renderer/views/components/fullscreen.ejs index 796eb955..2c0e8257 100644 --- a/src/renderer/views/components/fullscreen.ejs +++ b/src/renderer/views/components/fullscreen.ejs @@ -78,8 +78,8 @@