新增播放详情页歌词右键菜单,新增歌词偏移设置

This commit is contained in:
lyswhut
2022-03-22 16:55:44 +08:00
parent 82ea1935de
commit bc301c27c2
18 changed files with 572 additions and 62 deletions
+39 -21
View File
@@ -1,9 +1,9 @@
import { onBeforeUnmount, watch, markRawList } from '@renderer/utils/vueTools'
import Lyric from '@renderer/utils/lyric-font-player'
import { getCurrentTime } from '@renderer/plugins/player'
import { getCurrentTime as getPlayerCurrentTime } from '@renderer/plugins/player'
import { setDesktopLyricInfo, onGetDesktopLyricInfo } from '@renderer/utils/tools'
import { player } from '@renderer/event/names'
import { lyric, setText, setLines } from '@renderer/core/share/lyric'
import { player as eventPlayerNames } from '@renderer/event/names'
import { lyric, setText, setLines, setOffset } from '@renderer/core/share/lyric'
import { musicInfo, setStatusText, isPlay, playMusicInfo } from '@renderer/core/share/player'
export default ({ setting }) => {
@@ -12,19 +12,24 @@ export default ({ setting }) => {
fontClassName: 'font',
shadowContent: false,
activeLineClassName: 'active',
onPlay: (line, text) => {
onPlay(line, text) {
setText(text, line)
setStatusText(text)
// console.log(line, text)
},
onSetLyric: lines => { // listening lyrics seting event
onSetLyric(lines) { // listening lyrics seting event
// console.log(lines) // lines is array of all lyric text
setLines(markRawList([...lines]))
setText(lines[0] ?? '', 0)
setOffset(0) // 重置临时延迟
},
// offset: 80,
})
const getCurrentTime = () => {
return getPlayerCurrentTime() * 1000 + lyric.offset
}
const setPlayInfo = ({ musicInfo }) => {
setDesktopLyricInfo('music_info', {
@@ -45,7 +50,18 @@ export default ({ setting }) => {
if (isPlay.value && (musicInfo.url || playMusicInfo.listId == 'download')) {
setTimeout(() => {
const time = getCurrentTime() * 1000
const time = getCurrentTime()
setDesktopLyricInfo('play', time)
lrc.play(time)
})
}
}
const setLyricOffset = offset => {
setOffset(offset)
if (isPlay.value && (musicInfo.url || playMusicInfo.listId == 'download')) {
setTimeout(() => {
const time = getCurrentTime()
setDesktopLyricInfo('play', time)
lrc.play(time)
})
@@ -54,7 +70,7 @@ export default ({ setting }) => {
const handlePlay = () => {
if (!musicInfo.lrc) return
const currentTime = getCurrentTime() * 1000
const currentTime = getCurrentTime()
lrc.play(currentTime)
setDesktopLyricInfo('play', currentTime)
}
@@ -85,14 +101,14 @@ export default ({ setting }) => {
lxlrc: musicInfo.lxlrc,
isPlay: isPlay.value,
line: lyric.line,
played_time: getCurrentTime() * 1000,
played_time: getCurrentTime(),
}, info)
break
case 'status':
setDesktopLyricInfo('status', {
isPlay: isPlay.value,
line: lyric.line,
played_time: getCurrentTime() * 1000,
played_time: getCurrentTime(),
}, info)
break
@@ -102,20 +118,22 @@ export default ({ setting }) => {
})
window.eventHub.on(player.play, handlePlay)
window.eventHub.on(player.pause, handlePause)
window.eventHub.on(player.stop, handleStop)
window.eventHub.on(player.error, handlePause)
window.eventHub.on(player.setPlayInfo, setPlayInfo)
window.eventHub.on(player.updateLyric, setLyric)
window.eventHub.on(eventPlayerNames.play, handlePlay)
window.eventHub.on(eventPlayerNames.pause, handlePause)
window.eventHub.on(eventPlayerNames.stop, handleStop)
window.eventHub.on(eventPlayerNames.error, handlePause)
window.eventHub.on(eventPlayerNames.setPlayInfo, setPlayInfo)
window.eventHub.on(eventPlayerNames.updateLyric, setLyric)
window.eventHub.on(eventPlayerNames.updateLyricOffset, setLyricOffset)
onBeforeUnmount(() => {
rGetDesktopLyricInfo()
window.eventHub.off(player.play, handlePlay)
window.eventHub.off(player.pause, handlePause)
window.eventHub.off(player.stop, handleStop)
window.eventHub.off(player.error, handlePause)
window.eventHub.off(player.setPlayInfo, setPlayInfo)
window.eventHub.off(player.updateLyric, setLyric)
window.eventHub.off(eventPlayerNames.play, handlePlay)
window.eventHub.off(eventPlayerNames.pause, handlePause)
window.eventHub.off(eventPlayerNames.stop, handleStop)
window.eventHub.off(eventPlayerNames.error, handlePause)
window.eventHub.off(eventPlayerNames.setPlayInfo, setPlayInfo)
window.eventHub.off(eventPlayerNames.updateLyric, setLyric)
window.eventHub.off(eventPlayerNames.updateLyricOffset, setLyricOffset)
})
}