新增播放歌曲时阻止电脑休眠(#1563)
This commit is contained in:
@@ -3,6 +3,7 @@ import { qualityList } from '@renderer/store'
|
||||
import { clearPlayedList } from '@renderer/store/player/action'
|
||||
import { appSetting } from '@renderer/store/setting'
|
||||
import { dislikeInfo } from '@renderer/store/dislikeList'
|
||||
import { setPowerSaveBlocker as setPowerSaveBlockerRemote } from '@renderer/utils/ipc'
|
||||
|
||||
export const getPlayType = (highQuality: boolean, musicInfo: LX.Music.MusicInfo | LX.Download.ListItem): LX.Quality | null => {
|
||||
if ('progress' in musicInfo || musicInfo.source == 'local') return null
|
||||
@@ -41,3 +42,24 @@ export const filterList = async({ playedList, listId, list, playerMusicInfo, isN
|
||||
return { filteredList: markRawList(filteredList), playerIndex }
|
||||
}
|
||||
|
||||
let timeout: NodeJS.Timer | null = null
|
||||
const clearTimer = () => {
|
||||
if (!timeout) return
|
||||
clearTimeout(timeout)
|
||||
timeout = null
|
||||
}
|
||||
export const setPowerSaveBlocker = (enabled: boolean, force = false) => {
|
||||
if (enabled) {
|
||||
clearTimer()
|
||||
if (!force && !appSetting['player.powerSaveBlocker']) return
|
||||
setPowerSaveBlockerRemote(true)
|
||||
} else if (force) {
|
||||
clearTimer()
|
||||
setPowerSaveBlockerRemote(false)
|
||||
} else {
|
||||
if (timeout) return
|
||||
timeout = setTimeout(() => {
|
||||
setPowerSaveBlockerRemote(false)
|
||||
}, 60_000 * 1.5)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,6 +32,7 @@ import { HOTKEY_PLAYER } from '@common/hotKey'
|
||||
import { playNext, pause, playPrev, togglePlay, collectMusic, uncollectMusic, dislikeMusic } from '@renderer/core/player'
|
||||
import usePlaybackRate from './usePlaybackRate'
|
||||
import useSoundEffect from './useSoundEffect'
|
||||
import { setPowerSaveBlocker } from '@renderer/core/player/utils'
|
||||
|
||||
|
||||
export default () => {
|
||||
@@ -53,12 +54,20 @@ export default () => {
|
||||
void playPrev()
|
||||
}
|
||||
|
||||
const addPowerSaveBlocker = () => {
|
||||
setPowerSaveBlocker(true)
|
||||
}
|
||||
const removePowerSaveBlocker = () => {
|
||||
setPowerSaveBlocker(false)
|
||||
}
|
||||
|
||||
const setPlayStatus = () => {
|
||||
setPlay(true)
|
||||
}
|
||||
const setPauseStatus = () => {
|
||||
setPlay(false)
|
||||
if (window.lx.isPlayedStop) pause()
|
||||
removePowerSaveBlocker()
|
||||
}
|
||||
|
||||
const handleUpdatePlayInfo = () => {
|
||||
@@ -88,6 +97,7 @@ export default () => {
|
||||
setTitle(null)
|
||||
setAllStatus('')
|
||||
setStop()
|
||||
removePowerSaveBlocker()
|
||||
}
|
||||
|
||||
watch(() => appSetting['player.togglePlayMethod'], newValue => {
|
||||
@@ -112,6 +122,8 @@ export default () => {
|
||||
window.app_event.on('stop', setStopStatus)
|
||||
window.app_event.on('musicToggled', handleUpdatePlayInfo)
|
||||
window.app_event.on('playerCanplay', handleCanplay)
|
||||
window.app_event.on('playerPlaying', addPowerSaveBlocker)
|
||||
window.app_event.on('playerEmptied', removePowerSaveBlocker)
|
||||
|
||||
window.app_event.on('playerEnded', handleEnded)
|
||||
|
||||
@@ -132,7 +144,9 @@ export default () => {
|
||||
window.app_event.off('error', setPauseStatus)
|
||||
window.app_event.off('stop', setStopStatus)
|
||||
window.app_event.off('musicToggled', handleUpdatePlayInfo)
|
||||
window.app_event.on('playerCanplay', handleCanplay)
|
||||
window.app_event.off('playerPlaying', addPowerSaveBlocker)
|
||||
window.app_event.off('playerEmptied', removePowerSaveBlocker)
|
||||
window.app_event.off('playerCanplay', handleCanplay)
|
||||
|
||||
window.app_event.off('playerEnded', handleEnded)
|
||||
})
|
||||
|
||||
@@ -687,6 +687,12 @@ export const showHideWindowToggle = () => {
|
||||
export const focusWindow = () => {
|
||||
rendererSend(WIN_MAIN_RENDERER_EVENT_NAME.focus)
|
||||
}
|
||||
/**
|
||||
* 是否启用电源锁
|
||||
*/
|
||||
export const setPowerSaveBlocker = (enabled: boolean) => {
|
||||
rendererSend<boolean>(WIN_MAIN_RENDERER_EVENT_NAME.set_power_save_blocker, enabled)
|
||||
}
|
||||
|
||||
/**
|
||||
* 窗口获取焦点事件
|
||||
|
||||
@@ -3,6 +3,8 @@ dt#play {{ $t('setting__play') }}
|
||||
dd
|
||||
.gap-top
|
||||
base-checkbox(id="setting_player_startup_auto_play" :model-value="appSetting['player.startupAutoPlay']" :label="$t('setting__play_startup_auto_play')" @update:model-value="updateSetting({'player.startupAutoPlay': $event})")
|
||||
.gap-top
|
||||
base-checkbox(id="setting_player_power_save_blocker" :model-value="appSetting['player.powerSaveBlocker']" :label="$t('setting__play_power_save_blocker')" @update:model-value="handleUpdatePowerSaveBlocker")
|
||||
.gap-top
|
||||
base-checkbox(id="setting_player_save_play_time" :model-value="appSetting['player.isSavePlayTime']" :label="$t('setting__play_save_play_time')" @update:model-value="updateSetting({'player.isSavePlayTime': $event})")
|
||||
.gap-top
|
||||
@@ -35,6 +37,8 @@ import { hasInitedAdvancedAudioFeatures } from '@renderer/plugins/player'
|
||||
import { dialog } from '@renderer/plugins/Dialog'
|
||||
import { useI18n } from '@renderer/plugins/i18n'
|
||||
import { appSetting, updateSetting } from '@renderer/store/setting'
|
||||
import { setPowerSaveBlocker } from '@renderer/core/player/utils'
|
||||
import { isPlay } from '@renderer/store/player/state'
|
||||
|
||||
|
||||
export default {
|
||||
@@ -84,6 +88,15 @@ export default {
|
||||
mediaDeviceId.value = val
|
||||
})
|
||||
|
||||
const handleUpdatePowerSaveBlocker = (enabled) => {
|
||||
if (enabled) {
|
||||
if (isPlay.value) setPowerSaveBlocker(true, true)
|
||||
} else {
|
||||
setPowerSaveBlocker(false, true)
|
||||
}
|
||||
updateSetting({ 'player.powerSaveBlocker': enabled })
|
||||
}
|
||||
|
||||
|
||||
return {
|
||||
appSetting,
|
||||
@@ -91,6 +104,7 @@ export default {
|
||||
mediaDevices,
|
||||
mediaDeviceId,
|
||||
handleMediaDeviceIdChnage,
|
||||
handleUpdatePowerSaveBlocker,
|
||||
}
|
||||
},
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user