Updates #116: add tool tips to buttons and various UI elements
This commit is contained in:
@@ -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)
|
||||
|
||||
@@ -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,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 {
|
||||
|
||||
@@ -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"))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user