mirror of
https://github.com/issadarkthing/gomu.git
synced 2025-04-28 13:48:53 +08:00
Refactor updateCurrentSong into 3 different functions and now it's more clear
This commit is contained in:
parent
d5ee151c34
commit
a30e18c787
33
playlist.go
33
playlist.go
@ -270,7 +270,7 @@ func (p *Playlist) deleteSong(audioFile *AudioFile) (err error) {
|
|||||||
|
|
||||||
// Here we remove the song from queue
|
// Here we remove the song from queue
|
||||||
gomu.queue.updateQueuePath()
|
gomu.queue.updateQueuePath()
|
||||||
gomu.queue.updateCurrentSong(audioFile, nil, true)
|
gomu.queue.updateCurrentSongDelete(audioFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
})
|
})
|
||||||
@ -804,14 +804,21 @@ func (p *Playlist) paste() error {
|
|||||||
defaultTimedPopup(" Success ", p.yankFile.name+"\n has been pasted to\n"+newPathDir)
|
defaultTimedPopup(" Success ", p.yankFile.name+"\n has been pasted to\n"+newPathDir)
|
||||||
|
|
||||||
// keep queue references updated
|
// keep queue references updated
|
||||||
p.refresh()
|
|
||||||
gomu.queue.updateQueuePath()
|
|
||||||
|
|
||||||
newAudio := oldAudio
|
newAudio := oldAudio
|
||||||
newAudio.path = newPathFull
|
newAudio.path = newPathFull
|
||||||
err = gomu.queue.updateCurrentSong(oldAudio, newAudio, false)
|
|
||||||
if err != nil {
|
p.refresh()
|
||||||
return tracerr.Wrap(err)
|
gomu.queue.updateQueuePath()
|
||||||
|
if p.yankFile.isAudioFile {
|
||||||
|
err = gomu.queue.updateCurrentSongName(oldAudio, newAudio)
|
||||||
|
if err != nil {
|
||||||
|
return tracerr.Wrap(err)
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
err = gomu.queue.updateCurrentSongPath(oldAudio, newAudio)
|
||||||
|
if err != nil {
|
||||||
|
return tracerr.Wrap(err)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
p.yankFile = nil
|
p.yankFile = nil
|
||||||
@ -851,12 +858,16 @@ func (p *Playlist) refreshAfterRename(node *AudioFile, newName string) error {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
return tracerr.Wrap(err)
|
return tracerr.Wrap(err)
|
||||||
}
|
}
|
||||||
|
err = gomu.queue.updateCurrentSongName(node, newNode)
|
||||||
|
if err != nil {
|
||||||
|
return tracerr.Wrap(err)
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
gomu.queue.updateQueuePath()
|
gomu.queue.updateQueuePath()
|
||||||
}
|
err := gomu.queue.updateCurrentSongPath(node, newNode)
|
||||||
err := gomu.queue.updateCurrentSong(node, newNode, false)
|
if err != nil {
|
||||||
if err != nil {
|
return tracerr.Wrap(err)
|
||||||
return tracerr.Wrap(err)
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return nil
|
return nil
|
||||||
|
5
popup.go
5
popup.go
@ -141,12 +141,13 @@ func confirmDeleteAllPopup(selPlaylist *tview.TreeNode) (err error) {
|
|||||||
gomu.popups.pop()
|
gomu.popups.pop()
|
||||||
|
|
||||||
if confirmationText == "DELETE" {
|
if confirmationText == "DELETE" {
|
||||||
err = gomu.playlist.deletePlaylist(selPlaylist.GetReference().(*AudioFile))
|
audioFile := selPlaylist.GetReference().(*AudioFile)
|
||||||
|
err = gomu.playlist.deletePlaylist(audioFile)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
errorPopup(err)
|
errorPopup(err)
|
||||||
}
|
}
|
||||||
gomu.queue.updateQueuePath()
|
gomu.queue.updateQueuePath()
|
||||||
gomu.queue.updateCurrentSong(selPlaylist.GetReference().(*AudioFile), nil, true)
|
gomu.queue.updateCurrentSongDelete(audioFile)
|
||||||
}
|
}
|
||||||
|
|
||||||
case tcell.KeyEscape:
|
case tcell.KeyEscape:
|
||||||
|
128
queue.go
128
queue.go
@ -500,7 +500,6 @@ func (q *Queue) updateQueuePath() {
|
|||||||
audioFile, err := gomu.playlist.findAudioFile(v)
|
audioFile, err := gomu.playlist.findAudioFile(v)
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
logError(err)
|
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
q.enqueue(audioFile)
|
q.enqueue(audioFile)
|
||||||
@ -509,8 +508,8 @@ func (q *Queue) updateQueuePath() {
|
|||||||
q.updateTitle()
|
q.updateTitle()
|
||||||
}
|
}
|
||||||
|
|
||||||
// update current playing song info to reflect the changes during rename and paste
|
// update current playing song name to reflect the changes during rename and paste
|
||||||
func (q *Queue) updateCurrentSong(oldAudio *AudioFile, newAudio *AudioFile, isDelete bool) error {
|
func (q *Queue) updateCurrentSongName(oldAudio *AudioFile, newAudio *AudioFile) error {
|
||||||
|
|
||||||
if !gomu.player.IsRunning() && !gomu.player.IsPaused() {
|
if !gomu.player.IsRunning() && !gomu.player.IsPaused() {
|
||||||
return nil
|
return nil
|
||||||
@ -520,61 +519,11 @@ func (q *Queue) updateCurrentSong(oldAudio *AudioFile, newAudio *AudioFile, isDe
|
|||||||
position := gomu.playingBar.getProgress()
|
position := gomu.playingBar.getProgress()
|
||||||
paused := gomu.player.IsPaused()
|
paused := gomu.player.IsPaused()
|
||||||
|
|
||||||
if !oldAudio.isAudioFile {
|
|
||||||
// Here we check the situation when currentsong is under oldAudio folder
|
|
||||||
// if strings.Contains(currentSong.Path(), oldAudio.path) || strings.Contains(currentSong.Path(), oldAudio.name) {
|
|
||||||
if strings.Contains(currentSong.Path(), oldAudio.path) {
|
|
||||||
if isDelete {
|
|
||||||
tmpLoop := q.isLoop
|
|
||||||
q.isLoop = false
|
|
||||||
gomu.player.Skip()
|
|
||||||
if paused {
|
|
||||||
gomu.player.TogglePause()
|
|
||||||
}
|
|
||||||
q.isLoop = tmpLoop
|
|
||||||
q.updateTitle()
|
|
||||||
|
|
||||||
return nil
|
|
||||||
} else {
|
|
||||||
// Here is the handling of folder rename and paste
|
|
||||||
currentSong, err := gomu.playlist.findAudioFile(sha1Hex(getName(currentSong.Name())))
|
|
||||||
if err != nil {
|
|
||||||
return tracerr.Wrap(err)
|
|
||||||
}
|
|
||||||
gomu.queue.pushFront(currentSong)
|
|
||||||
tmpLoop := q.isLoop
|
|
||||||
q.isLoop = false
|
|
||||||
gomu.player.Skip()
|
|
||||||
gomu.player.Seek(position)
|
|
||||||
if paused {
|
|
||||||
gomu.player.TogglePause()
|
|
||||||
}
|
|
||||||
q.isLoop = tmpLoop
|
|
||||||
q.updateTitle()
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if oldAudio.name != currentSong.Name() {
|
if oldAudio.name != currentSong.Name() {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// if newAudio is empty, we simply skip current song
|
// we insert it in the first of queue, then play it
|
||||||
if newAudio == nil {
|
|
||||||
tmpLoop := q.isLoop
|
|
||||||
q.isLoop = false
|
|
||||||
gomu.player.Skip()
|
|
||||||
if paused {
|
|
||||||
gomu.player.TogglePause()
|
|
||||||
}
|
|
||||||
q.isLoop = tmpLoop
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// if newAudio is not empty, we insert it in the first of queue, then play it
|
|
||||||
gomu.queue.pushFront(newAudio)
|
gomu.queue.pushFront(newAudio)
|
||||||
tmpLoop := q.isLoop
|
tmpLoop := q.isLoop
|
||||||
q.isLoop = false
|
q.isLoop = false
|
||||||
@ -588,3 +537,74 @@ func (q *Queue) updateCurrentSong(oldAudio *AudioFile, newAudio *AudioFile, isDe
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// update current playing song path to reflect the changes during rename and paste
|
||||||
|
func (q *Queue) updateCurrentSongPath(oldAudio *AudioFile, newAudio *AudioFile) error {
|
||||||
|
|
||||||
|
if !gomu.player.IsRunning() && !gomu.player.IsPaused() {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
currentSong := gomu.player.GetCurrentSong()
|
||||||
|
position := gomu.playingBar.getProgress()
|
||||||
|
paused := gomu.player.IsPaused()
|
||||||
|
|
||||||
|
// Here we check the situation when currentsong is under oldAudio folder
|
||||||
|
if !strings.Contains(currentSong.Path(), oldAudio.path) {
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
|
||||||
|
// Here is the handling of folder rename and paste
|
||||||
|
currentSongAudioFile, err := gomu.playlist.findAudioFile(sha1Hex(getName(currentSong.Name())))
|
||||||
|
if err != nil {
|
||||||
|
return tracerr.Wrap(err)
|
||||||
|
}
|
||||||
|
gomu.queue.pushFront(currentSongAudioFile)
|
||||||
|
tmpLoop := q.isLoop
|
||||||
|
q.isLoop = false
|
||||||
|
gomu.player.Skip()
|
||||||
|
gomu.player.Seek(position)
|
||||||
|
if paused {
|
||||||
|
gomu.player.TogglePause()
|
||||||
|
}
|
||||||
|
q.isLoop = tmpLoop
|
||||||
|
|
||||||
|
q.updateTitle()
|
||||||
|
return nil
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// update current playing song simply delete it
|
||||||
|
func (q *Queue) updateCurrentSongDelete(oldAudio *AudioFile) {
|
||||||
|
if !gomu.player.IsRunning() && !gomu.player.IsPaused() {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
currentSong := gomu.player.GetCurrentSong()
|
||||||
|
paused := gomu.player.IsPaused()
|
||||||
|
|
||||||
|
var delete bool
|
||||||
|
if oldAudio.isAudioFile {
|
||||||
|
if oldAudio.name == currentSong.Name() {
|
||||||
|
delete = true
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
if strings.Contains(currentSong.Path(), oldAudio.path) {
|
||||||
|
delete = true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if !delete {
|
||||||
|
return
|
||||||
|
}
|
||||||
|
|
||||||
|
tmpLoop := q.isLoop
|
||||||
|
q.isLoop = false
|
||||||
|
gomu.player.Skip()
|
||||||
|
if paused {
|
||||||
|
gomu.player.TogglePause()
|
||||||
|
}
|
||||||
|
q.isLoop = tmpLoop
|
||||||
|
q.updateTitle()
|
||||||
|
|
||||||
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user