新增定时暂停播放功能

This commit is contained in:
lyswhut
2022-02-14 15:38:27 +08:00
parent c891ed81e1
commit c12be6a1c8
18 changed files with 388 additions and 16 deletions
@@ -4,6 +4,7 @@ import {
import useMediaDevice from './useMediaDevice'
import usePlayerEvent from './usePlayerEvent'
import usePlayer from './usePlayer'
import { init as initPlayTimeoutStop } from '@renderer/utils/timeoutStop'
export default ({ setting }) => {
createAudio()
@@ -11,5 +12,7 @@ export default ({ setting }) => {
usePlayerEvent()
useMediaDevice({ setting }) // 初始化音频驱动输出设置
usePlayer({ setting })
initPlayTimeoutStop()
}
@@ -49,6 +49,7 @@ export default ({
}
const handleLoadstart = () => {
if (global.isPlayedStop) return
startLoadingTimeout()
setAllStatus(t('player__loading'))
}
@@ -77,6 +78,7 @@ export default ({
const handleError = errCode => {
if (!musicInfo.songmid) return
clearLoadingTimeout()
if (global.isPlayedStop) return
if (playMusicInfo.listId != 'download' && errCode !== 1 && retryNum < 2) { // 若音频URL无效则尝试刷新2次URL
// console.log(this.retryNum)
retryNum++
@@ -96,6 +98,11 @@ export default ({
clearLoadingTimeout()
}
const handlePlayedStop = () => {
clearDelayNextTimeout()
clearLoadingTimeout()
}
window.eventHub.on(eventPlayerNames.player_loadstart, handleLoadstart)
window.eventHub.on(eventPlayerNames.player_loadeddata, handleLoadeddata)
@@ -105,6 +112,7 @@ export default ({
window.eventHub.on(eventPlayerNames.player_emptied, handleEmpied)
window.eventHub.on(eventPlayerNames.error, handleError)
window.eventHub.on(eventPlayerNames.setPlayInfo, handleSetPlayInfo)
window.eventHub.on(eventPlayerNames.playedStop, handlePlayedStop)
onBeforeUnmount(() => {
window.eventHub.off(eventPlayerNames.player_loadstart, handleLoadstart)
@@ -115,5 +123,6 @@ export default ({
window.eventHub.off(eventPlayerNames.player_emptied, handleEmpied)
window.eventHub.off(eventPlayerNames.error, handleError)
window.eventHub.off(eventPlayerNames.setPlayInfo, handleSetPlayInfo)
window.eventHub.off(eventPlayerNames.playedStop, handlePlayedStop)
})
}
@@ -103,11 +103,13 @@ export default ({ setting }) => {
setAllStatus('Try toggle source...')
},
}).then(url => {
if (global.isPlayedStop) return
if (targetSong !== musicInfoItem.value || isPlay.value || type != getPlayType(setting.value.player.highQuality, musicInfoItem.value)) return
setMusicInfo({ url })
setResource(url)
}).catch(err => {
// console.log('err', err.message)
if (global.isPlayedStop) return
if (targetSong !== musicInfoItem.value || isPlay.value) return
if (err.message == requestMsg.cancelRequest) return
if (!isRetryed) return setUrl(targetSong, isRefresh, true)
@@ -198,6 +200,7 @@ export default ({ setting }) => {
const setPauseStatus = () => {
setPlay(false)
setTitle()
if (global.isPlayedStop) handlePause()
}
const setStopStatus = () => {
setPlay(false)
@@ -288,11 +291,16 @@ export default ({ setting }) => {
const handleEnded = () => {
setAllStatus(t('player__end'))
if (global.isPlayedStop) return
playNext()
}
// 播放、暂停播放切换
const handleTogglePlay = async() => {
const handlePause = () => {
setPlayerPause()
}
const handlePlay = async() => {
if (playMusicInfo.musicInfo == null) return
if (isPlayerEmpty()) {
if (playMusicInfo.listId == 'download') {
@@ -313,13 +321,24 @@ export default ({ setting }) => {
}
return
}
setPlayerPlay()
}
// 播放、暂停播放切换
const handleTogglePlay = () => {
if (global.isPlayedStop) global.isPlayedStop = false
if (isPlay.value) {
setPlayerPause()
handlePause()
} else {
setPlayerPlay()
handlePlay()
}
}
const handlePlayedStop = () => {
clearDelayNextTimeout()
clearLoadTimeout()
}
watch(() => setting.value.player.togglePlayMethod, newValue => {
setLoopPlay(newValue === 'singleLoop')
if (playedList.length) clearPlayedList()
@@ -339,13 +358,16 @@ export default ({ setting }) => {
window.eventHub.on(eventPlayerNames.stop, setStopStatus)
window.eventHub.on(eventPlayerNames.playMusic, playMusic)
window.eventHub.on(eventPlayerNames.setPlay, handlePlay)
window.eventHub.on(eventPlayerNames.setPause, handlePause)
window.eventHub.on(eventPlayerNames.setStop, handelStop)
window.eventHub.on(eventPlayerNames.setTogglePlay, handleTogglePlay)
window.eventHub.on(eventPlayerNames.setPlayPrev, playPrev)
window.eventHub.on(eventPlayerNames.setPlayNext, playNext)
window.eventHub.on(eventPlayerNames.setPlayInfo, handleSetPlayInfo)
window.eventHub.on(eventPlayerNames.setStop, handelStop)
window.eventHub.on(eventPlayerNames.player_ended, handleEnded)
window.eventHub.on(eventPlayerNames.playedStop, handlePlayedStop)
onBeforeUnmount(() => {
@@ -360,11 +382,14 @@ export default ({ setting }) => {
window.eventHub.off(eventPlayerNames.playMusic, playMusic)
window.eventHub.off(eventPlayerNames.setTogglePlay, handleTogglePlay)
window.eventHub.off(eventPlayerNames.setPlay, handlePlay)
window.eventHub.off(eventPlayerNames.setPause, handlePause)
window.eventHub.off(eventPlayerNames.setStop, handelStop)
window.eventHub.off(eventPlayerNames.setPlayPrev, playPrev)
window.eventHub.off(eventPlayerNames.setPlayNext, playNext)
window.eventHub.off(eventPlayerNames.setPlayInfo, handleSetPlayInfo)
window.eventHub.off(eventPlayerNames.setStop, handelStop)
window.eventHub.off(eventPlayerNames.player_ended, handleEnded)
window.eventHub.off(eventPlayerNames.playedStop, handlePlayedStop)
})
}
@@ -15,7 +15,7 @@ export default ({ playNext }) => {
const { playIndex } = updatePlayIndex()
if (playIndex < 0 && !playMusicInfo.isTempPlay) { // 歌曲被移除
if (getList(playMusicInfo.listId).length) {
if (getList(playMusicInfo.listId).length && !global.isPlayedStop) {
playNext()
} else {
window.eventHub.emit(eventPlayerNames.setStop)