添加音频可视化与音频输出设备冲突的提示

pull/930/merge
lyswhut 2022-03-08 14:51:29 +08:00
parent 6253368f05
commit 05f6a953ea
8 changed files with 60 additions and 6 deletions

View File

@ -6,6 +6,7 @@
### 优化
- 优化Windows任务栏缩略图工具栏控制按钮在浅色任务栏下的显示效果
- 添加音频可视化与音频输出设备冲突的提示
### 修复

View File

@ -1,6 +1,7 @@
{
"action": "Manage",
"agree": "Accept",
"alert_button_text": "All right",
"audio_visualization": "Audio visualization (experimental)",
"back": "Back",
"cancel_button_text": "Cancel",
@ -339,10 +340,12 @@
"setting__play_mediaDevice": "Audio output",
"setting__play_mediaDevice_remove_stop_play": "Pause the song when the current sound output device is changed",
"setting__play_mediaDevice_title": "Select a media device for audio output",
"setting__play_media_device_tip": "This function conflicts with the audio visualization function. You have enabled audio visualization. This setting is temporarily unavailable. Please go to the playback details page to close the audio visualization and restart the software before modifying this setting.",
"setting__play_quality": "Play 320K quality songs first (if supported)",
"setting__play_save_play_time": "Remember playback progress",
"setting__play_task_bar": "Show playing progress on the taskbar",
"setting__play_timeout": "Timed pause",
"setting__player_audio_visualization_tip": "The custom audio output device will conflict with the audio visualization function. After the audio visualization is enabled, the audio output device will be reset to the default output device. At present, this problem cannot be solved. Do you still want to enable it?",
"setting__search": "Search",
"setting__search_focus_search_box": "Automatically focus the search box on startup",
"setting__search_history": "Search history",

View File

@ -1,6 +1,7 @@
{
"action": "操作",
"agree": "接受",
"alert_button_text": "好吧",
"audio_visualization": "音频可视化(实验性)",
"back": "返回",
"cancel_button_text": "我不",
@ -339,10 +340,12 @@
"setting__play_mediaDevice": "音频输出",
"setting__play_mediaDevice_remove_stop_play": "当前的声音输出设备被改变时暂停播放歌曲",
"setting__play_mediaDevice_title": "选择声音输出的媒体设备",
"setting__play_media_device_tip": "此功能与音频可视化功能冲突,你已开启音频可视化,此设置暂不可用,请先去播放详情页关闭音频可视化 并 重启软件后,再来修改此设置。",
"setting__play_quality": "优先播放320K品质的歌曲如果支持",
"setting__play_save_play_time": "记住播放进度",
"setting__play_task_bar": "在任务栏上显示当前歌曲播放进度",
"setting__play_timeout": "定时暂停",
"setting__player_audio_visualization_tip": "自定义音频输出设备与音频可视化功能会冲突,启用了音频可视化后音频输出设备将会被重置为默认的输出设备,目前此问题暂无法解决,是否仍要开启?",
"setting__search": "搜索设置",
"setting__search_focus_search_box": "启动时自动聚焦搜索框",
"setting__search_history": "显示历史搜索记录",

View File

@ -1,6 +1,7 @@
{
"action": "操作",
"agree": "接受",
"alert_button_text": "好吧",
"audio_visualization": "音頻可視化(實驗性)",
"back": "返回",
"cancel_button_text": "取消",
@ -339,10 +340,12 @@
"setting__play_mediaDevice": "音頻輸出",
"setting__play_mediaDevice_remove_stop_play": "當前的聲音輸出設備被改變時暫停播放歌曲",
"setting__play_mediaDevice_title": "選擇聲音輸出的媒體設備",
"setting__play_media_device_tip": "此功能與音頻可視化功能衝突,你已開啟音頻可視化,此設置暫不可用,請先去播放詳情頁關閉音頻可視化 並 重啟軟件後,再來修改此設置。",
"setting__play_quality": "優先播放320K品質的歌曲如果支持",
"setting__play_save_play_time": "記住播放進度",
"setting__play_task_bar": "在任務欄上顯示當前歌曲播放進度",
"setting__play_timeout": "定時暫停",
"setting__player_audio_visualization_tip": "自定義音頻輸出設備與音頻可視化功能會衝突,啟用了音頻可視化後音頻輸出設備將會被重置為默認的輸出設備,目前此問題暫無法解決,是否仍要開啟?",
"setting__search": "搜索設置",
"setting__search_focus_search_box": "啟動時自動聚焦搜索框",
"setting__search_history": "顯示歷史搜索記錄",

View File

@ -46,12 +46,15 @@ import {
import useNextTogglePlay from '@renderer/utils/compositions/useNextTogglePlay'
import useToggleDesktopLyric from '@renderer/utils/compositions/useToggleDesktopLyric'
import { dialog } from '@renderer/plugins/Dialog'
import { setMediaDeviceId } from '@renderer/plugins/player'
export default {
setup() {
const { t } = useI18n()
const setting = useRefGetter('setting')
const setAudioVisualization = useCommit('setAudioVisualization')
const saveMediaDeviceId = useCommit('setMediaDeviceId')
const toggleVisibleLrc = () => {
setShowPlayLrcSelectContentLrc(!isShowLrcSelectContent.value)
@ -72,8 +75,19 @@ export default {
const isShowAddMusicTo = ref(false)
const toggleAudioVisualization = () => {
setAudioVisualization(!setting.value.player.audioVisualization)
const toggleAudioVisualization = async() => {
const newSetting = !setting.value.player.audioVisualization
if (newSetting && setting.value.player.mediaDeviceId != 'default') {
const confirm = await dialog.confirm({
message: t('setting__player_audio_visualization_tip'),
cancelButtonText: t('cancel_button_text'),
confirmButtonText: t('confirm_button_text'),
})
if (!confirm) return
saveMediaDeviceId('default')
await setMediaDeviceId('default').catch(_ => _)
}
setAudioVisualization(newSetting)
}
return {

View File

@ -115,6 +115,9 @@ export default {
watch(() => setting.value.player.togglePlayMethod, val => {
currentStting.value.player.togglePlayMethod = val
})
watch(() => setting.value.player.audioVisualization, val => {
currentStting.value.player.audioVisualization = val
})
},
data() {
return {

View File

@ -18,18 +18,21 @@ dd
dd(:tips="$t('setting__play_mediaDevice_title')")
h3#play_mediaDevice {{$t('setting__play_mediaDevice')}}
div
base-selection.gap-left(:list="mediaDevices" v-model="currentStting.player.mediaDeviceId" item-key="deviceId" item-name="label")
base-selection.gap-left(:list="mediaDevices" v-model="mediaDeviceId" @change="handleMediaDeviceIdChnage" item-key="deviceId" item-name="label")
</template>
<script>
import { ref, onBeforeUnmount, watch, nextTick } from '@renderer/utils/vueTools'
import { ref, onBeforeUnmount, watch, nextTick, useI18n } from '@renderer/utils/vueTools'
import { setTaskBarProgress } from '@renderer/utils/tools'
import { dialog } from '@renderer/plugins/Dialog'
import { currentStting } from '../setting'
export default {
name: 'SettingPlay',
setup() {
const { t } = useI18n()
const mediaDevices = ref([])
const getMediaDevice = async() => {
const devices = await navigator.mediaDevices.enumerateDevices()
@ -51,10 +54,28 @@ export default {
})
})
const mediaDeviceId = ref(currentStting.value.player.mediaDeviceId)
const handleMediaDeviceIdChnage = async() => {
if (currentStting.value.player.audioVisualization) {
await dialog({
message: t('setting__play_media_device_tip'),
confirmButtonText: t('alert_button_text'),
})
mediaDeviceId.value = currentStting.value.player.mediaDeviceId
} else {
currentStting.value.player.mediaDeviceId = mediaDeviceId.value
}
}
watch(() => currentStting.value.player.mediaDeviceId, val => {
mediaDeviceId.value = val
})
return {
currentStting,
mediaDevices,
mediaDeviceId,
handleMediaDeviceIdChnage,
}
},
}

View File

@ -2,14 +2,20 @@ import { ref } from '@renderer/utils/vueTools'
export const currentStting = ref({
player: {
togglePlayMethod: 'random',
togglePlayMethod: 'listLoop',
highQuality: false,
isShowTaskProgess: true,
volume: 1,
isMute: false,
mediaDeviceId: 'default',
isMediaDeviceRemovedStopPlay: false,
isShowLyricTranslation: false,
isS2t: false, // 是否将歌词从简体转换为繁体
isPlayLxlrc: true,
isSavePlayTime: false,
audioVisualization: false,
waitPlayEndStop: true,
waitPlayEndStopTime: 0,
waitPlayEndStopTime: '',
},
playDetail: {
isZoomActiveLrc: true,