From 781eba126c645e574212dc221ad58ca3011feb7d Mon Sep 17 00:00:00 2001
From: 14Kay <619113277@qq.com>
Date: Wed, 19 Mar 2025 18:33:57 +0800
Subject: [PATCH] =?UTF-8?q?feat:=20=E6=98=BE=E7=A4=BA=E5=BD=93=E5=89=8D?=
=?UTF-8?q?=E6=92=AD=E6=94=BE=E7=9A=84=E5=9C=A8=E7=BA=BF=E6=AD=8C=E6=9B=B2?=
=?UTF-8?q?=E7=9A=84=E9=9F=B3=E8=B4=A8?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/lang/en-us.json | 1 +
src/lang/zh-cn.json | 1 +
src/lang/zh-tw.json | 1 +
.../layout/PlayBar/FullWidthProgress.vue | 5 ++++-
.../layout/PlayBar/MiddleWidthProgress.vue | 4 +++-
.../layout/PlayBar/MiniWidthProgress.vue | 7 ++++++-
.../components/layout/PlayBar/Quality.vue | 18 ++++++++++++++++++
src/renderer/core/player/action.ts | 2 ++
src/renderer/store/player/action.ts | 17 +++++++++++++++--
src/renderer/store/player/state.ts | 5 +++++
src/renderer/types/player.d.ts | 4 ++++
11 files changed, 60 insertions(+), 5 deletions(-)
create mode 100644 src/renderer/components/layout/PlayBar/Quality.vue
diff --git a/src/lang/en-us.json b/src/lang/en-us.json
index 0de3267b..7b470fb8 100644
--- a/src/lang/en-us.json
+++ b/src/lang/en-us.json
@@ -650,6 +650,7 @@
"sync__overwrite_label": "Overwrite",
"sync__overwrite_tip": "Overwrite: ",
"sync_status_disabled": "not connected",
+ "tag__low_quality": "LQ",
"tag__high_quality": "HQ",
"tag__lossless": "SQ",
"tag__lossless_24bit": "24bit",
diff --git a/src/lang/zh-cn.json b/src/lang/zh-cn.json
index 6a9152ab..febb0b5f 100644
--- a/src/lang/zh-cn.json
+++ b/src/lang/zh-cn.json
@@ -650,6 +650,7 @@
"sync__overwrite_label": "覆盖",
"sync__overwrite_tip": "覆盖:",
"sync_status_disabled": "未连接",
+ "tag__low_quality": "LQ",
"tag__high_quality": "HQ",
"tag__lossless": "SQ",
"tag__lossless_24bit": "24bit",
diff --git a/src/lang/zh-tw.json b/src/lang/zh-tw.json
index c43ba08b..41587236 100644
--- a/src/lang/zh-tw.json
+++ b/src/lang/zh-tw.json
@@ -650,6 +650,7 @@
"sync__overwrite_label": "覆寫",
"sync__overwrite_tip": "覆寫:",
"sync_status_disabled": "未連線",
+ "tag__low_quality": "LQ",
"tag__high_quality": "HQ",
"tag__lossless": "SQ",
"tag__lossless_24bit": "24bit",
diff --git a/src/renderer/components/layout/PlayBar/FullWidthProgress.vue b/src/renderer/components/layout/PlayBar/FullWidthProgress.vue
index d92d968f..ba4fec71 100644
--- a/src/renderer/components/layout/PlayBar/FullWidthProgress.vue
+++ b/src/renderer/components/layout/PlayBar/FullWidthProgress.vue
@@ -9,7 +9,7 @@
- {{ title }}
+ {{ title }}
{{ statusText }}
@@ -48,6 +48,8 @@ import { computed } from '@common/utils/vueTools'
import { useRouter } from '@common/utils/vueRouter'
import { clipboardWriteText } from '@common/utils/electron'
import ControlBtns from './ControlBtns.vue'
+import Quality from './Quality.vue'
+
// import PlayProgress from './PlayProgress'
import usePlayProgress from '@renderer/utils/compositions/usePlayProgress'
// import { lyric } from '@renderer/core/share/lyric'
@@ -71,6 +73,7 @@ export default {
name: 'CorePlayBar',
components: {
ControlBtns,
+ Quality,
// PlayProgress,
},
setup() {
diff --git a/src/renderer/components/layout/PlayBar/MiddleWidthProgress.vue b/src/renderer/components/layout/PlayBar/MiddleWidthProgress.vue
index f996a332..2e21816e 100644
--- a/src/renderer/components/layout/PlayBar/MiddleWidthProgress.vue
+++ b/src/renderer/components/layout/PlayBar/MiddleWidthProgress.vue
@@ -6,7 +6,7 @@
- {{ title }}
+ {{ title }}
{{ statusText }}
@@ -48,6 +48,7 @@ import { computed } from '@common/utils/vueTools'
import { useRouter } from '@common/utils/vueRouter'
import { clipboardWriteText } from '@common/utils/electron'
import ControlBtns from './ControlBtns.vue'
+import Quality from './Quality.vue'
// import PlayProgress from './PlayProgress'
import usePlayProgress from '@renderer/utils/compositions/usePlayProgress'
// import { lyric } from '@renderer/core/share/lyric'
@@ -71,6 +72,7 @@ export default {
name: 'CorePlayBar',
components: {
ControlBtns,
+ Quality,
// PlayProgress,
},
setup() {
diff --git a/src/renderer/components/layout/PlayBar/MiniWidthProgress.vue b/src/renderer/components/layout/PlayBar/MiniWidthProgress.vue
index 668e9a8b..8d0c17d0 100644
--- a/src/renderer/components/layout/PlayBar/MiniWidthProgress.vue
+++ b/src/renderer/components/layout/PlayBar/MiniWidthProgress.vue
@@ -6,7 +6,7 @@
- {{ title }}
+ {{ title }}
{{ statusText }}
@@ -51,6 +51,7 @@ import { useRouter } from '@common/utils/vueRouter'
import { clipboardWriteText } from '@common/utils/electron'
import ControlBtns from './ControlBtns.vue'
import PlayProgress from './PlayProgress.vue'
+import Quality from './Quality.vue'
import usePlayProgress from '@renderer/utils/compositions/usePlayProgress'
// import { lyric } from '@renderer/core/share/lyric'
import {
@@ -74,6 +75,7 @@ export default {
components: {
ControlBtns,
PlayProgress,
+ Quality,
},
setup() {
const router = useRouter()
@@ -118,6 +120,8 @@ export default {
: ''
})
+ const quality = computed(() => playMusicInfo.quality)
+
// onBeforeUnmount(() => {
// window.eventHub.emit(eventPlayerNames.setTogglePlay)
// })
@@ -140,6 +144,7 @@ export default {
playPrev,
handleToMusicLocation,
isShowPlayerDetail,
+ quality,
}
},
}
diff --git a/src/renderer/components/layout/PlayBar/Quality.vue b/src/renderer/components/layout/PlayBar/Quality.vue
new file mode 100644
index 00000000..4e111753
--- /dev/null
+++ b/src/renderer/components/layout/PlayBar/Quality.vue
@@ -0,0 +1,18 @@
+
+ {{ $t('tag__lossless_24bit') }}
+ {{ $t('tag__lossless') }}
+ {{ $t('tag__high_quality') }}
+ {{ $t('tag__low_quality') }}
+
+
+
diff --git a/src/renderer/core/player/action.ts b/src/renderer/core/player/action.ts
index 6c0e3eca..7e06d4f0 100644
--- a/src/renderer/core/player/action.ts
+++ b/src/renderer/core/player/action.ts
@@ -5,6 +5,7 @@ import {
clearPlayedList,
clearTempPlayeList,
setPlayMusicInfo,
+ setPlayMusicInfoQuality,
addPlayedList,
setMusicInfo,
setAllStatus,
@@ -133,6 +134,7 @@ export const setMusicUrl = (musicInfo: LX.Music.MusicInfo | LX.Download.ListItem
void getMusicPlayUrl(musicInfo, isRefresh).then((url) => {
if (!url) return
setResource(url)
+ setPlayMusicInfoQuality(musicInfo)
}).catch((err: any) => {
console.log(err)
setAllStatus(err.message)
diff --git a/src/renderer/store/player/action.ts b/src/renderer/store/player/action.ts
index 87977fc1..085f5166 100644
--- a/src/renderer/store/player/action.ts
+++ b/src/renderer/store/player/action.ts
@@ -13,15 +13,16 @@ import {
playedList,
tempPlayList,
} from './state'
+import { appSetting } from '@renderer/store/setting'
import { getListMusicsFromCache } from '@renderer/store/list/action'
import { downloadList } from '@renderer/store/download/state'
import { setProgress } from './playProgress'
import { playNext } from '@renderer/core/player'
+import { getPlayQuality } from '@renderer/core/music/utils'
import { LIST_IDS } from '@common/constants'
import { toRaw } from '@common/utils/vueTools'
import { arrPush, arrUnshift } from '@common/utils/common'
-
type PlayerMusicInfoKeys = keyof typeof musicInfo
const musicInfoKeys: PlayerMusicInfoKeys[] = Object.keys(musicInfo) as PlayerMusicInfoKeys[]
@@ -196,7 +197,19 @@ export const setPlayMusicInfo = (listId: string | null, musicInfo: LX.Download.L
window.app_event.musicToggled()
}
}
-
+/**
+ * 设置当前播放歌曲的音质(如果是在线歌曲)
+ * @param musicInfo 歌曲信息
+ */
+export const setPlayMusicInfoQuality = (musicInfo: LX.Music.MusicInfo | LX.Download.ListItem) => {
+ if (!('progress' in musicInfo)) {
+ playMusicInfo.quality = musicInfo.source !== 'local'
+ ? getPlayQuality(appSetting['player.playQuality'], musicInfo)
+ : undefined
+ } else {
+ playMusicInfo.quality = undefined
+ }
+}
/**
* 将歌曲添加到已播放列表
* @param playMusicInfo playMusicInfo对象
diff --git a/src/renderer/store/player/state.ts b/src/renderer/store/player/state.ts
index 48aea238..2868d716 100644
--- a/src/renderer/store/player/state.ts
+++ b/src/renderer/store/player/state.ts
@@ -53,10 +53,15 @@ export const playMusicInfo = shallowReactive<{
* 是否属于 “稍后播放”
*/
isTempPlay: boolean
+ /**
+ * 当前播放音质
+ */
+ quality?: LX.Quality
}>({
listId: null,
musicInfo: null,
isTempPlay: false,
+ quality: undefined,
})
export const playInfo = shallowReactive({
playIndex: -1,
diff --git a/src/renderer/types/player.d.ts b/src/renderer/types/player.d.ts
index f627e71f..c23b4c15 100644
--- a/src/renderer/types/player.d.ts
+++ b/src/renderer/types/player.d.ts
@@ -14,6 +14,10 @@ declare namespace LX {
* 是否属于 “稍后播放”
*/
isTempPlay: boolean
+ /**
+ * 当前播放音质
+ */
+ quality?: LX.Quality
}
interface PlayInfo {