add setting to disable waveform seekbar

This commit is contained in:
Drew Weymouth
2025-08-01 09:07:52 -07:00
parent e0cb2a57ac
commit 5209c08444
7 changed files with 121 additions and 84 deletions
+2 -2
View File
@@ -28,7 +28,7 @@ type BottomPanel struct {
var _ fyne.Widget = (*BottomPanel)(nil)
func NewBottomPanel(pm *backend.PlaybackManager, im *backend.ImageManager, contr *controller.Controller) *BottomPanel {
func NewBottomPanel(pm *backend.PlaybackManager, im *backend.ImageManager, contr *controller.Controller, useWaveformSeekbar bool) *BottomPanel {
bp := &BottomPanel{}
bp.ExtendBaseWidget(bp)
@@ -86,7 +86,7 @@ func NewBottomPanel(pm *backend.PlaybackManager, im *backend.ImageManager, contr
contr.ShowShareDialog(tr.ID)
}
}
bp.Controls = widgets.NewPlayerControls()
bp.Controls = widgets.NewPlayerControls(useWaveformSeekbar)
bp.Controls.OnPlayPause(func() {
pm.PlayPause()
})
+8
View File
@@ -559,6 +559,12 @@ func (s *SettingsDialog) createAppearanceTab(window fyne.Window) *container.TabI
}
}
useWaveformSeekbar := widget.NewCheck(lang.L("Use waveform seekbar"), func(b bool) {
s.config.Playback.UseWaveformSeekbar = b
s.setRestartRequired()
})
useWaveformSeekbar.Checked = s.config.Playback.UseWaveformSeekbar
return container.NewTabItem(lang.L("Appearance"), container.NewVBox(
util.NewHSpace(0), // insert a theme.Padding amount of space at top
container.NewBorder(nil, nil, widget.NewLabel(lang.L("Theme")), /*left*/
@@ -570,6 +576,8 @@ func (s *SettingsDialog) createAppearanceTab(window fyne.Window) *container.TabI
container.NewBorder(nil, nil, widget.NewLabel(lang.L("Grid card size")), nil, gridCardSize),
disableDPI,
s.newSectionSeparator(),
useWaveformSeekbar,
s.newSectionSeparator(),
widget.NewRichText(&widget.TextSegment{Text: lang.L("Application font"), Style: util.BoldRichTextStyle}),
container.New(layout.NewFormLayout(),
widget.NewLabel(lang.L("Normal font")), container.NewBorder(nil, nil, nil, normalFontBrowse, normalFontEntry),
+1 -1
View File
@@ -90,7 +90,7 @@ func NewMainWindow(fyneApp fyne.App, appName, displayAppName, appVersion string,
))
}
m.BottomPanel = NewBottomPanel(app.PlaybackManager, app.ImageManager, m.Controller)
m.BottomPanel = NewBottomPanel(app.PlaybackManager, app.ImageManager, m.Controller, m.Controller.App.Config.Playback.UseWaveformSeekbar)
app.PlaybackManager.OnSongChange(func(item mediaprovider.MediaItem, _ *mediaprovider.Track) {
fyne.Do(func() { m.UpdateOnTrackChange(item) })
})
+15 -3
View File
@@ -82,6 +82,8 @@ func (t *TrackPosSlider) IsDragging() bool {
type PlayerControls struct {
widget.BaseWidget
UseWaveformSeekbar bool
slider *TrackPosSlider
waveform *WaveformSeekbar
curTimeLabel *labelMinSize
@@ -112,14 +114,18 @@ func NewLabelMinSize(text string, minWidth float32) *labelMinSize {
}
// NewPlayerControls sets up the seek bar, and transport buttons.
func NewPlayerControls() *PlayerControls {
pc := &PlayerControls{}
func NewPlayerControls(useWaveformSeekbar bool) *PlayerControls {
pc := &PlayerControls{UseWaveformSeekbar: useWaveformSeekbar}
pc.ExtendBaseWidget(pc)
pc.slider = NewTrackPosSlider()
pc.slider.Disable()
pc.slider.Hide()
pc.waveform = NewWaveformSeekbar()
if useWaveformSeekbar {
pc.slider.Hidden = true
} else {
pc.waveform.Hidden = true
}
pc.curTimeLabel = NewLabelMinSize(util.SecondsToMMSS(0), 55)
pc.curTimeLabel.Alignment = fyne.TextAlignTrailing
pc.totalTimeLabel = NewLabelMinSize(util.SecondsToMMSS(0), 55)
@@ -221,6 +227,12 @@ func (p *PlayerControls) UpdateWaveformImg(img *backend.WaveformImage) {
p.waveform.UpdateImage(img)
}
func (p *PlayerControls) Refresh() {
p.waveform.Hidden = !p.UseWaveformSeekbar
p.slider.Hidden = p.UseWaveformSeekbar
p.BaseWidget.Refresh()
}
func (p *PlayerControls) CreateRenderer() fyne.WidgetRenderer {
return widget.NewSimpleRenderer(p.container)
}