diff --git a/src/i18n/lang/en-US/download.ts b/src/i18n/lang/en-US/download.ts index 47765bf..b9db7e7 100644 --- a/src/i18n/lang/en-US/download.ts +++ b/src/i18n/lang/en-US/download.ts @@ -58,6 +58,14 @@ export default { success: 'Download records cleared', failed: 'Failed to clear download records' }, + save: { + title: 'Save Settings', + message: 'Current download settings are not saved. Do you want to save the changes?', + confirm: 'Save', + cancel: 'Cancel', + discard: 'Discard', + saveSuccess: 'Download settings saved' + }, message: { downloadComplete: '{filename} download completed', downloadFailed: '{filename} download failed: {error}' diff --git a/src/i18n/lang/ja-JP/download.ts b/src/i18n/lang/ja-JP/download.ts index a49f0f6..a2bd47a 100644 --- a/src/i18n/lang/ja-JP/download.ts +++ b/src/i18n/lang/ja-JP/download.ts @@ -58,6 +58,14 @@ export default { success: 'ダウンロード記録をクリアしました', failed: 'ダウンロード記録のクリアに失敗しました' }, + save: { + title: '設定を保存', + message: '現在のダウンロード設定が保存されていません。変更を保存しますか?', + confirm: '保存', + cancel: 'キャンセル', + discard: '破棄', + saveSuccess: 'ダウンロード設定を保存しました' + }, message: { downloadComplete: '{filename}のダウンロードが完了しました', downloadFailed: '{filename}のダウンロードに失敗しました: {error}' diff --git a/src/i18n/lang/ko-KR/download.ts b/src/i18n/lang/ko-KR/download.ts index 92fbb0c..46247f5 100644 --- a/src/i18n/lang/ko-KR/download.ts +++ b/src/i18n/lang/ko-KR/download.ts @@ -58,6 +58,14 @@ export default { success: '다운로드 기록이 지워졌습니다', failed: '다운로드 기록 삭제에 실패했습니다' }, + save: { + title: '설정 저장', + message: '현재 다운로드 설정이 저장되지 않았습니다. 변경 사항을 저장하시겠습니까?', + confirm: '저장', + cancel: '취소', + discard: '포기', + saveSuccess: '다운로드 설정이 저장됨' + }, message: { downloadComplete: '{filename} 다운로드 완료', downloadFailed: '{filename} 다운로드 실패: {error}' diff --git a/src/i18n/lang/zh-CN/download.ts b/src/i18n/lang/zh-CN/download.ts index d139d0f..0e8aec3 100644 --- a/src/i18n/lang/zh-CN/download.ts +++ b/src/i18n/lang/zh-CN/download.ts @@ -57,6 +57,14 @@ export default { success: '下载记录已清空', failed: '清空下载记录失败' }, + save: { + title: '保存设置', + message: '当前下载设置未保存,是否保存更改?', + confirm: '保存', + cancel: '取消', + discard: '放弃', + saveSuccess: '下载设置已保存' + }, message: { downloadComplete: '{filename} 下载完成', downloadFailed: '{filename} 下载失败: {error}' diff --git a/src/i18n/lang/zh-Hant/download.ts b/src/i18n/lang/zh-Hant/download.ts index c6ffcf2..ddefaed 100644 --- a/src/i18n/lang/zh-Hant/download.ts +++ b/src/i18n/lang/zh-Hant/download.ts @@ -57,6 +57,14 @@ export default { success: '下載記錄已清空', failed: '清空下載記錄失敗' }, + save: { + title: '儲存設定', + message: '目前下載設定尚未儲存,是否儲存變更?', + confirm: '儲存', + cancel: '取消', + discard: '放棄', + saveSuccess: '下載設定已儲存' + }, message: { downloadComplete: '{filename} 下載完成', downloadFailed: '{filename} 下載失敗: {error}' diff --git a/src/renderer/router/other.ts b/src/renderer/router/other.ts index ce2e4b8..5d800f2 100644 --- a/src/renderer/router/other.ts +++ b/src/renderer/router/other.ts @@ -53,7 +53,8 @@ const otherRouter = [ showInMenu: false, back: true }, - component: () => import('@/views/artist/detail.vue') + component: () => import('@/views/artist/detail.vue'), + props: (route) => ({ key: route.params.id }) }, { path: '/music-list/:id?', diff --git a/src/renderer/store/modules/playlist.ts b/src/renderer/store/modules/playlist.ts index 194bacb..155eb55 100644 --- a/src/renderer/store/modules/playlist.ts +++ b/src/renderer/store/modules/playlist.ts @@ -585,8 +585,7 @@ export const usePlaylistStore = defineStore( // Toggle play/pause for current song if ( playerCore.playMusic.id === song.id && - playerCore.playMusic.playMusicUrl === song.playMusicUrl && - !song.isFirstPlay + playerCore.playMusic.playMusicUrl === song.playMusicUrl ) { if (playerCore.play) { playerCore.setPlayMusic(false); diff --git a/src/renderer/views/download/DownloadPage.vue b/src/renderer/views/download/DownloadPage.vue index 2110320..2d2cd44 100644 --- a/src/renderer/views/download/DownloadPage.vue +++ b/src/renderer/views/download/DownloadPage.vue @@ -325,8 +325,38 @@ @positive-click="clearDownloadRecords" /> + + + + + - +
@@ -705,12 +735,40 @@ const clearDownloadRecords = async () => { // ── Download settings ─────────────────────────────────────────────────────── const showSettingsDrawer = ref(false); +const showNotSaveConfirm = ref(false); const downloadSettings = ref({ path: '', nameFormat: '{songName} - {artistName}', separator: ' - ', saveLyric: false }); +const originalDownloadSettings = ref({ ...downloadSettings.value }); + +watch(showSettingsDrawer, (newVal) => { + if (newVal) { + originalDownloadSettings.value = { ...downloadSettings.value }; + } +}); + +const handleDrawerUpdate = (show: boolean) => { + if (show) { + showSettingsDrawer.value = true; + return; + } + const isModified = + JSON.stringify(downloadSettings.value) !== JSON.stringify(originalDownloadSettings.value); + if (isModified) { + showNotSaveConfirm.value = true; + } else { + showSettingsDrawer.value = false; + } +}; + +const discardDownloadSettings = () => { + downloadSettings.value = { ...originalDownloadSettings.value }; + showNotSaveConfirm.value = false; + showSettingsDrawer.value = false; +}; const formatComponents = ref([ { id: 1, type: 'songName' }, @@ -824,7 +882,9 @@ const saveDownloadSettings = () => { downloadStore.refreshCompleted(); } + originalDownloadSettings.value = { ...downloadSettings.value }; message.success(t('download.settingsPanel.saveSuccess')); + showNotSaveConfirm.value = false; showSettingsDrawer.value = false; };