big refactor to prepare for removing server hard-coding

This commit is contained in:
Drew Weymouth
2022-12-19 19:28:19 -08:00
parent 8762fed9b3
commit 181554058a
9 changed files with 149 additions and 90 deletions
+14 -8
View File
@@ -2,8 +2,8 @@ package ui
import (
"fmt"
"gomuse/backend"
"gomuse/player"
"supersonic/backend"
"supersonic/player"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
@@ -67,14 +67,15 @@ type PlayerControls struct {
container *fyne.Container
totalTime float64
player *player.Player
playbackManager *backend.PlaybackManager
}
var _ fyne.Widget = (*PlayerControls)(nil)
// NewPlayerControls sets up the seek bar, and transport buttons, and returns the encompassing Container.
func NewPlayerControls(p *player.Player, pm *backend.PlaybackManager) *PlayerControls {
pc := &PlayerControls{playbackManager: pm}
func NewPlayerControls(p *player.Player) *PlayerControls {
pc := &PlayerControls{player: p}
pc.ExtendBaseWidget(pc)
pc.slider = NewTrackPosSlider()
@@ -115,14 +116,19 @@ func NewPlayerControls(p *player.Player, pm *backend.PlaybackManager) *PlayerCon
c := container.NewBorder(nil, nil, pc.curTimeLabel, pc.totalTimeLabel, pc.slider)
pc.container = container.NewVBox(c, b)
pm.OnPlayTimeUpdate(func(curTime float64, totalTime float64) {
pc.doPlayTimeUpdate(curTime, totalTime)
})
return pc
}
func (pc *PlayerControls) SetPlaybackManager(pm *backend.PlaybackManager) {
pc.playbackManager = pm
pm.OnPlayTimeUpdate(func(curTime float64, totalTime float64) {
pc.doPlayTimeUpdate(curTime, totalTime)
})
}
func (pc *PlayerControls) doPlayTimeUpdate(curTime, totalTime float64) {
// TODO: there is a bug with very long tracks (~20min) where the
// curtime label will bounce back and forth +- 1sec (rounding issue?)
pc.totalTime = totalTime
if !pc.playbackManager.IsSeeking() {
v := 0.0