Updates #116: add tool tips to buttons and various UI elements

This commit is contained in:
Drew Weymouth
2024-08-03 08:25:38 -07:00
parent 7fcbfdd456
commit 7c94a4c694
12 changed files with 137 additions and 44 deletions
+7 -3
View File
@@ -15,6 +15,7 @@ import (
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
ttwidget "github.com/dweymouth/fyne-tooltip/widget"
"github.com/dweymouth/supersonic/backend/mediaprovider"
"github.com/dweymouth/supersonic/sharedutil"
myTheme "github.com/dweymouth/supersonic/ui/theme"
@@ -22,7 +23,7 @@ import (
)
type AlbumFilterButton struct {
widget.Button
ttwidget.Button
OnChanged func()
GenreDisabled bool
@@ -37,10 +38,13 @@ type AlbumFilterButton struct {
func NewAlbumFilterButton(filter mediaprovider.AlbumFilter, fetchGenresFunc func() ([]*mediaprovider.Genre, error)) *AlbumFilterButton {
a := &AlbumFilterButton{
filter: filter,
Button: widget.Button{
Icon: theme.NewThemedResource(myTheme.FilterIcon),
Button: ttwidget.Button{
Button: widget.Button{
Icon: theme.NewThemedResource(myTheme.FilterIcon),
},
},
}
a.SetToolTip(lang.L("Filter albums"))
a.OnTapped = a.showFilterDialog
a.ExtendBaseWidget(a)
a.genreListChan = make(chan []string)
+4
View File
@@ -3,6 +3,7 @@ package widgets
import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/lang"
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
@@ -31,7 +32,9 @@ func NewAuxControls(initialVolume int) *AuxControls {
showQueue: NewIconButton(myTheme.PlayQueueIcon, nil),
}
a.loop.IconSize = IconButtonSizeSmaller
a.loop.SetToolTip(lang.L("Shuffle"))
a.showQueue.IconSize = IconButtonSizeSmaller
a.showQueue.SetToolTip(lang.L("Show play queue"))
a.container = container.NewHBox(
layout.NewSpacer(),
container.NewVBox(
@@ -125,6 +128,7 @@ func NewVolumeControl(initialVol int) *VolumeControl {
v := &VolumeControl{}
v.ExtendBaseWidget(v)
v.icon = NewIconButton(theme.VolumeUpIcon(), v.toggleMute)
v.icon.SetToolTip("Mute")
v.icon.IconSize = IconButtonSizeSmaller
v.slider = NewVolumeSlider(100)
v.lastVol = initialVol
+7 -3
View File
@@ -7,6 +7,7 @@ import (
"fyne.io/fyne/v2/driver/desktop"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
ttwidget "github.com/dweymouth/fyne-tooltip/widget"
myTheme "github.com/dweymouth/supersonic/ui/theme"
)
@@ -20,7 +21,7 @@ const (
)
type IconButton struct {
widget.BaseWidget
ttwidget.ToolTipWidget
Highlighted bool
IconSize IconButtonSize
@@ -84,7 +85,8 @@ func (i *IconButton) TypedKey(e *fyne.KeyEvent) {
func (i *IconButton) TypedRune(r rune) {
}
func (i *IconButton) MouseIn(*desktop.MouseEvent) {
func (i *IconButton) MouseIn(e *desktop.MouseEvent) {
i.ToolTipWidget.MouseIn(e)
if !i.hovered {
defer i.Refresh()
}
@@ -92,13 +94,15 @@ func (i *IconButton) MouseIn(*desktop.MouseEvent) {
}
func (i *IconButton) MouseOut() {
i.ToolTipWidget.MouseOut()
if i.hovered {
defer i.Refresh()
}
i.hovered = false
}
func (i *IconButton) MouseMoved(*desktop.MouseEvent) {
func (i *IconButton) MouseMoved(e *desktop.MouseEvent) {
i.ToolTipWidget.MouseMoved(e)
}
func (i *IconButton) MinSize() fyne.Size {
+6
View File
@@ -5,6 +5,7 @@ import (
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/lang"
"fyne.io/fyne/v2/layout"
"fyne.io/fyne/v2/theme"
"fyne.io/fyne/v2/widget"
@@ -128,8 +129,11 @@ func NewPlayerControls() *PlayerControls {
}
pc.prev = NewIconButton(theme.MediaSkipPreviousIcon(), func() {})
pc.prev.SetToolTip(lang.L("Previous"))
pc.next = NewIconButton(theme.MediaSkipNextIcon(), func() {})
pc.next.SetToolTip(lang.L("Next"))
pc.playpause = NewIconButton(theme.MediaPlayIcon(), func() {})
pc.playpause.SetToolTip(lang.L("Play"))
pc.playpause.IconSize = IconButtonSizeBigger
buttons := container.NewHBox(layout.NewSpacer(), pc.prev, pc.playpause, pc.next, layout.NewSpacer())
@@ -165,8 +169,10 @@ func (pc *PlayerControls) OnPlayPause(f func()) {
func (pc *PlayerControls) SetPlaying(playing bool) {
if playing {
pc.playpause.SetIcon(theme.MediaPauseIcon())
pc.playpause.SetToolTip(lang.L("Pause"))
} else {
pc.playpause.SetIcon(theme.MediaPlayIcon())
pc.playpause.SetToolTip(lang.L("Play"))
}
}