diff --git a/src/lang/en-us.json b/src/lang/en-us.json index 039e7631..b8531eed 100644 --- a/src/lang/en-us.json +++ b/src/lang/en-us.json @@ -222,6 +222,8 @@ "player__refresh_url": "Music URL expired, refreshing...", "player__stop": "Paused", "player__volume": "Volume: ", + "player__volume_mute_label": "Mute", + "player__volume_muted": "muted", "search": "Search", "search__hot_search": "Top Searches", "search__type_music": "Song", diff --git a/src/lang/zh-cn.json b/src/lang/zh-cn.json index c54b878b..5e978803 100644 --- a/src/lang/zh-cn.json +++ b/src/lang/zh-cn.json @@ -222,6 +222,8 @@ "player__refresh_url": "URL过期,正在刷新URL...", "player__stop": "暂停播放", "player__volume": "当前音量:", + "player__volume_mute_label": "静音", + "player__volume_muted": "已静音", "search": "搜索", "search__hot_search": "热门搜索", "search__type_music": "歌曲", diff --git a/src/lang/zh-tw.json b/src/lang/zh-tw.json index 4a73e3b0..4f04d4e5 100644 --- a/src/lang/zh-tw.json +++ b/src/lang/zh-tw.json @@ -222,6 +222,8 @@ "player__refresh_url": "URL過期,正在刷新URL...", "player__stop": "暫停播放", "player__volume": "當前音量:", + "player__volume_mute_label": "靜音", + "player__volume_muted": "已靜音", "search": "搜索", "search__hot_search": "熱門搜索", "search__type_music": "歌曲", diff --git a/src/renderer/assets/svgs/volume-high-outline.svg b/src/renderer/assets/svgs/volume-high-outline.svg new file mode 100644 index 00000000..c2f840e7 --- /dev/null +++ b/src/renderer/assets/svgs/volume-high-outline.svg @@ -0,0 +1 @@ +Volume High \ No newline at end of file diff --git a/src/renderer/assets/svgs/volume-low-outline.svg b/src/renderer/assets/svgs/volume-low-outline.svg new file mode 100644 index 00000000..db7124e5 --- /dev/null +++ b/src/renderer/assets/svgs/volume-low-outline.svg @@ -0,0 +1 @@ +Volume Low \ No newline at end of file diff --git a/src/renderer/assets/svgs/volume-medium-outline.svg b/src/renderer/assets/svgs/volume-medium-outline.svg new file mode 100644 index 00000000..3a8866c8 --- /dev/null +++ b/src/renderer/assets/svgs/volume-medium-outline.svg @@ -0,0 +1 @@ +Volume Medium \ No newline at end of file diff --git a/src/renderer/assets/svgs/volume-mute-outline.svg b/src/renderer/assets/svgs/volume-mute-outline.svg new file mode 100644 index 00000000..06fc2cc9 --- /dev/null +++ b/src/renderer/assets/svgs/volume-mute-outline.svg @@ -0,0 +1,9 @@ + + Volume Mute + + + + diff --git a/src/renderer/assets/svgs/volume-off-outline.svg b/src/renderer/assets/svgs/volume-off-outline.svg new file mode 100644 index 00000000..50047d5b --- /dev/null +++ b/src/renderer/assets/svgs/volume-off-outline.svg @@ -0,0 +1 @@ +Volume Off \ No newline at end of file diff --git a/src/renderer/components/base/Popup.vue b/src/renderer/components/base/Popup.vue new file mode 100644 index 00000000..67a7cd3e --- /dev/null +++ b/src/renderer/components/base/Popup.vue @@ -0,0 +1,150 @@ + + + + + + diff --git a/src/renderer/components/common/ProgressBar.vue b/src/renderer/components/common/ProgressBar.vue index d11a112a..1678104a 100644 --- a/src/renderer/components/common/ProgressBar.vue +++ b/src/renderer/components/common/ProgressBar.vue @@ -102,7 +102,7 @@ export default { background-color: var(--color-primary-light-100-alpha-800); // background-color: #f5f5f5; position: relative; - border-radius: 20px; + // border-radius: 20px; } .progress-mask { position: absolute; @@ -119,7 +119,7 @@ export default { width: 100%; height: 100%; transform-origin: 0; - border-radius: 20px; + // border-radius: 20px; } .progress-bar1 { background-color: var(--color-primary-light-100-alpha-600); diff --git a/src/renderer/components/common/TogglePlayModeBtn.vue b/src/renderer/components/common/TogglePlayModeBtn.vue new file mode 100644 index 00000000..8c10d07b --- /dev/null +++ b/src/renderer/components/common/TogglePlayModeBtn.vue @@ -0,0 +1,147 @@ + + + + + diff --git a/src/renderer/components/common/VolumeBar.vue b/src/renderer/components/common/VolumeBar.vue index 384e2288..4515235d 100644 --- a/src/renderer/components/common/VolumeBar.vue +++ b/src/renderer/components/common/VolumeBar.vue @@ -1,9 +1,9 @@ @@ -39,7 +39,7 @@ export default { window.app_event.setVolume(volumeEvent.msDownVolume = val) - if (isMute.value) window.app_event.setVolumeIsMute(false) + // if (isMute.value) window.app_event.setVolumeIsMute(false) } const handleVolumeMsUp = () => { volumeEvent.isMsDown = false @@ -76,8 +76,9 @@ export default { .volume-content { flex: none; position: relative; - width: 80px; - margin-right: 10px; + width: 100px; + padding: 5px 0; + // margin-right: 10px; display: flex; align-items: center; opacity: .5; @@ -90,20 +91,20 @@ export default { .volume { // cursor: pointer; width: 100%; - height: 0.25em; - border-radius: 10px; + height: 5px; + // border-radius: 10px; // overflow: hidden; transition: @transition-normal; transition-property: background-color, opacity; - background-color: var(--color-button-background); + background-color: var(--color-primary-alpha-700); // background-color: #f5f5f5; position: relative; - border-radius: @radius-progress-border; + // border-radius: @radius-progress-border; } -.muted { - opacity: .5; -} +// .muted { +// opacity: .5; +// } .volume-bar { position: absolute; @@ -115,9 +116,9 @@ export default { transition-timing-function: ease; width: 100%; height: 100%; - border-radius: @radius-progress-border; + // border-radius: @radius-progress-border; transition-duration: 0.2s; - background-color: var(--color-button-background); + background-color: var(--color-button-font); box-shadow: 0 0 2px rgba(0, 0, 0, 0.2); } diff --git a/src/renderer/components/common/VolumeBtn.vue b/src/renderer/components/common/VolumeBtn.vue new file mode 100644 index 00000000..b39e0116 --- /dev/null +++ b/src/renderer/components/common/VolumeBtn.vue @@ -0,0 +1,94 @@ + + + + + diff --git a/src/renderer/components/layout/Icons.vue b/src/renderer/components/layout/Icons.vue index 93c958cf..4a32a5ba 100644 --- a/src/renderer/components/layout/Icons.vue +++ b/src/renderer/components/layout/Icons.vue @@ -170,13 +170,12 @@ - - - + + - - + + diff --git a/src/renderer/components/layout/PlayBar/ControlBtns.vue b/src/renderer/components/layout/PlayBar/ControlBtns.vue index b3e284d4..4601342f 100644 --- a/src/renderer/components/layout/PlayBar/ControlBtns.vue +++ b/src/renderer/components/layout/PlayBar/ControlBtns.vue @@ -1,43 +1,27 @@ + + diff --git a/src/renderer/components/layout/PlayBar/index.vue b/src/renderer/components/layout/PlayBar/index.vue index b12360ce..cf9d649a 100644 --- a/src/renderer/components/layout/PlayBar/index.vue +++ b/src/renderer/components/layout/PlayBar/index.vue @@ -1,26 +1,25 @@ @@ -157,29 +144,51 @@ export default { @import '@renderer/assets/styles/layout.less'; .player { + position: relative; height: @height-player; - background-color: var(--color-main-background); - border-top: 1px solid var(--color-primary-alpha-900); + // border-top: 1px solid var(--color-primary-alpha-900); box-sizing: border-box; display: flex; + flex-flow: row nowrap; + align-items: center; contain: strict; - padding: 5px 0; + padding: 11px 6px 6px; z-index: 2; // box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.1); * { box-sizing: border-box; } + + &:before { + .mixin-after; + left: 0; + top: 0; + width: 100%; + height: 100%; + background-color: var(--color-main-background); + opacity: .8; + z-index: -1; + } } -.left { - width: @height-player - 2; +.progress { + position: absolute; + top: 0; + left: 0; + width: 100%; + padding-bottom: 5px; + // height: 15px; +} + +.picContent { height: 100%; + aspect-ratio: 1 / 1; + // color: var(--color-primary); // transition: @transition-normal; // transition-property: color; flex: none; - padding: 2PX; opacity: 1; - // transition: @transition-normal; + transition: opacity @transition-fast; // transition-property: opacity; display: flex; justify-content: center; @@ -190,9 +199,9 @@ export default { opacity: .8; } - svg { - fill: currentColor; - } + // svg { + // fill: currentColor; + // } img { box-shadow: 0 0 2px rgba(0, 0, 0, 0.3); max-width: 100%; @@ -203,58 +212,77 @@ export default { border-radius: @radius-border; // border: 2px solid @color-theme_2-background_1; } + + .emptyPic { + background-color: var(--color-primary-light-900-alpha-200); + border-radius: @radius-border; + width: 100%; + height: 100%; + display: flex; + align-items: center; + justify-content: center; + color: var(--color-primary-light-400-alpha-200); + user-select: none; + font-size: 20px; + font-family: Consolas, "Courier New", monospace; + + span { + padding-left: 3px; + } + } } -.middle { + +.infoContent { + padding-left: 10px; flex: auto; - height: 100%; - padding: 2px 10px 2px 8px; display: flex; flex-flow: column nowrap; + justify-content: center; + align-items: flex-start; + font-size: 14px; + color: var(--color-font); + min-width: 0; } -.right { + +.title { + max-width: 100%; + font-size: 13px; + color: var(--color-font-label); + .mixin-ellipsis-1; +} +.status { + padding-top: 5px; + height: 23px; + .mixin-ellipsis-1; + line-height: 1.5; + max-width: 100%; +} + +.timeContent { + flex: none; + color: var(--color-font); + font-size: 13px; + padding-left: 10px; +} + +.playBtnContent { height: 100%; flex: none; display: flex; flex-flow: row nowrap; align-items: center; - padding-left: 15px; - padding-right: 20px; -} -.column1 { - flex: auto; - position: relative; - font-size: 16px; - .container { - position: absolute; - left: 0; - width: 100%; - height: 100%; - display: flex; - flex-flow: row nowrap; - justify-content: space-between; - } -} - -.title { - flex: 0 1 auto; - min-width: 0; - padding-right: 5px; - font-size: 14px; - line-height: 18px; - .mixin-ellipsis-1; + padding-left: 10px; + padding-right: 15px; + gap: 18px; } .play-btn { - + .play-btn { - margin-left: 15px; - } flex: none; - height: 46%; + height: 52%; // margin-top: -2px; - // transition: @transition-normal; - // transition-property: color; + transition: @transition-fast; + transition-property: color, opacity; color: var(--color-button-font); - transition: opacity 0.2s ease; opacity: 1; cursor: pointer; @@ -270,54 +298,4 @@ export default { } } -.column2 { - flex: none; - padding: 3px 0; - height: 10px; - position: relative; -} - - -.column3 { - transition: @transition-normal; - transition-property: color; - color: var(--color-font); - flex: none; - font-size: 12px; - display: flex; - padding-top: 2px; - // justify-content: space-between; - height: 22px; - align-items: center; -} - -.status-text { - font-size: 0.98em; - transition: @transition-normal; - transition-property: color; - color: var(--color-font-label); - .mixin-ellipsis-1; - // padding: 0 5px; - padding-right: 5px; - flex: 1 1 0; - // text-align: center; - line-height: 1.2; - width: 0; -} - -#icon-pic { - // color: var(--color-primary); - .c1 { - transition: @transition-normal; - transition-property: fill; - // fill: @color-player-pic-c1; - } - .c2 { - transition: @transition-normal; - transition-property: fill; - // fill: @color-player-pic-c2; - } -} - - diff --git a/src/renderer/components/layout/PlayDetail/PlayBar.vue b/src/renderer/components/layout/PlayDetail/PlayBar.vue index cc2d9df2..b44c742e 100644 --- a/src/renderer/components/layout/PlayDetail/PlayBar.vue +++ b/src/renderer/components/layout/PlayDetail/PlayBar.vue @@ -12,7 +12,7 @@ /> -
{{ status }}{{ nowPlayTimeStr }}/{{ maxPlayTimeStr }}
+
{{ status }}{{ nowPlayTimeStr }}/{{ maxPlayTimeStr }}
diff --git a/src/renderer/components/layout/PlayDetail/components/ControlBtns.vue b/src/renderer/components/layout/PlayDetail/components/ControlBtns.vue index a3a3e5fe..b464c9c3 100644 --- a/src/renderer/components/layout/PlayDetail/components/ControlBtns.vue +++ b/src/renderer/components/layout/PlayDetail/components/ControlBtns.vue @@ -1,32 +1,22 @@