Add icons to menu items
This commit is contained in:
+26
-18
@@ -6,9 +6,11 @@ import (
|
||||
|
||||
"github.com/dweymouth/supersonic/backend/mediaprovider"
|
||||
"github.com/dweymouth/supersonic/sharedutil"
|
||||
myTheme "github.com/dweymouth/supersonic/ui/theme"
|
||||
"github.com/dweymouth/supersonic/ui/util"
|
||||
|
||||
"fyne.io/fyne/v2"
|
||||
"fyne.io/fyne/v2/theme"
|
||||
"fyne.io/fyne/v2/widget"
|
||||
)
|
||||
|
||||
@@ -311,24 +313,30 @@ func (g *GridView) cancelFetch() {
|
||||
func (g *GridView) showContextMenu(card *GridViewItem, pos fyne.Position) {
|
||||
g.menuGridViewItemId = card.ItemID()
|
||||
if g.menu == nil {
|
||||
g.menu = widget.NewPopUpMenu(fyne.NewMenu("",
|
||||
fyne.NewMenuItem("Play", func() { g.onPlay(g.menuGridViewItemId, false) }),
|
||||
fyne.NewMenuItem("Shuffle", func() { g.onPlay(g.menuGridViewItemId, true) }),
|
||||
fyne.NewMenuItem("Add to queue", func() {
|
||||
if g.OnAddToQueue != nil {
|
||||
g.OnAddToQueue(g.menuGridViewItemId)
|
||||
}
|
||||
}),
|
||||
fyne.NewMenuItem("Add to playlist...", func() {
|
||||
if g.OnAddToPlaylist != nil {
|
||||
g.OnAddToPlaylist(g.menuGridViewItemId)
|
||||
}
|
||||
}),
|
||||
fyne.NewMenuItem("Download...", func() {
|
||||
if g.OnDownload != nil {
|
||||
g.OnDownload(g.menuGridViewItemId)
|
||||
}
|
||||
})),
|
||||
play := fyne.NewMenuItem("Play", func() { g.onPlay(g.menuGridViewItemId, false) })
|
||||
play.Icon = theme.MediaPlayIcon()
|
||||
shuffle := fyne.NewMenuItem("Shuffle", func() { g.onPlay(g.menuGridViewItemId, true) })
|
||||
shuffle.Icon = myTheme.ShuffleIcon
|
||||
queue := fyne.NewMenuItem("Add to queue", func() {
|
||||
if g.OnAddToQueue != nil {
|
||||
g.OnAddToQueue(g.menuGridViewItemId)
|
||||
}
|
||||
})
|
||||
queue.Icon = theme.ContentAddIcon()
|
||||
playlist := fyne.NewMenuItem("Add to playlist...", func() {
|
||||
if g.OnAddToPlaylist != nil {
|
||||
g.OnAddToPlaylist(g.menuGridViewItemId)
|
||||
}
|
||||
})
|
||||
playlist.Icon = myTheme.PlaylistIcon
|
||||
download := fyne.NewMenuItem("Download...", func() {
|
||||
if g.OnDownload != nil {
|
||||
g.OnDownload(g.menuGridViewItemId)
|
||||
}
|
||||
})
|
||||
download.Icon = theme.DownloadIcon()
|
||||
|
||||
g.menu = widget.NewPopUpMenu(fyne.NewMenu("", play, shuffle, queue, playlist, download),
|
||||
fyne.CurrentApp().Driver().CanvasForObject(g))
|
||||
}
|
||||
g.menu.ShowAtPosition(pos)
|
||||
|
||||
@@ -4,6 +4,7 @@ import (
|
||||
"image"
|
||||
|
||||
"github.com/dweymouth/supersonic/ui/layouts"
|
||||
myTheme "github.com/dweymouth/supersonic/ui/theme"
|
||||
"github.com/dweymouth/supersonic/ui/util"
|
||||
|
||||
"fyne.io/fyne/v2"
|
||||
@@ -129,11 +130,14 @@ func (n *NowPlayingCard) Update(track string, artists, artistIDs []string, album
|
||||
func (n *NowPlayingCard) showMenu(e *fyne.PointEvent) {
|
||||
if n.menu == nil {
|
||||
n.ratingMenu = util.NewRatingSubmenu(n.onSetRating)
|
||||
m := fyne.NewMenu("",
|
||||
fyne.NewMenuItem("Set favorite", func() { n.onSetFavorite(true) }),
|
||||
fyne.NewMenuItem("Unset favorite", func() { n.onSetFavorite(false) }),
|
||||
n.ratingMenu,
|
||||
fyne.NewMenuItem("Add to playlist...", func() { n.onAddToPlaylist() }))
|
||||
favorite := fyne.NewMenuItem("Set favorite", func() { n.onSetFavorite(true) })
|
||||
favorite.Icon = myTheme.FavoriteIcon
|
||||
unfavorite := fyne.NewMenuItem("Unset favorite", func() { n.onSetFavorite(false) })
|
||||
unfavorite.Icon = myTheme.NotFavoriteIcon
|
||||
playlist := fyne.NewMenuItem("Add to playlist...", func() { n.onAddToPlaylist() })
|
||||
playlist.Icon = myTheme.PlaylistIcon
|
||||
|
||||
m := fyne.NewMenu("", favorite, unfavorite, n.ratingMenu, playlist)
|
||||
n.menu = widget.NewPopUpMenu(m, fyne.CurrentApp().Driver().CanvasForObject(n))
|
||||
}
|
||||
n.ratingMenu.Disabled = n.DisableRating
|
||||
|
||||
+40
-36
@@ -534,44 +534,48 @@ func (t *Tracklist) onShowContextMenu(e *fyne.PointEvent, trackIdx int) {
|
||||
if t.ctxMenu == nil {
|
||||
t.ctxMenu = fyne.NewMenu("")
|
||||
if !t.Options.DisablePlaybackMenu {
|
||||
t.ctxMenu.Items = append(t.ctxMenu.Items,
|
||||
fyne.NewMenuItem("Play", func() {
|
||||
if t.OnPlaySelection != nil {
|
||||
t.OnPlaySelection(t.selectedTracks(), false)
|
||||
}
|
||||
}))
|
||||
t.ctxMenu.Items = append(t.ctxMenu.Items,
|
||||
fyne.NewMenuItem("Shuffle", func() {
|
||||
if t.OnPlaySelection != nil {
|
||||
t.OnPlaySelection(t.selectedTracks(), true)
|
||||
}
|
||||
}))
|
||||
t.ctxMenu.Items = append(t.ctxMenu.Items,
|
||||
fyne.NewMenuItem("Add to queue", func() {
|
||||
if t.OnPlaySelection != nil {
|
||||
t.OnAddToQueue(t.selectedTracks())
|
||||
}
|
||||
}))
|
||||
}
|
||||
t.ctxMenu.Items = append(t.ctxMenu.Items,
|
||||
fyne.NewMenuItem("Add to playlist...", func() {
|
||||
if t.OnAddToPlaylist != nil {
|
||||
t.OnAddToPlaylist(t.SelectedTrackIDs())
|
||||
play := fyne.NewMenuItem("Play", func() {
|
||||
if t.OnPlaySelection != nil {
|
||||
t.OnPlaySelection(t.selectedTracks(), false)
|
||||
}
|
||||
}))
|
||||
t.ctxMenu.Items = append(t.ctxMenu.Items,
|
||||
fyne.NewMenuItem("Download...", func() {
|
||||
t.onDownload(t.selectedTracks(), "Selected tracks")
|
||||
}))
|
||||
})
|
||||
play.Icon = theme.MediaPlayIcon()
|
||||
shuffle := fyne.NewMenuItem("Shuffle", func() {
|
||||
if t.OnPlaySelection != nil {
|
||||
t.OnPlaySelection(t.selectedTracks(), true)
|
||||
}
|
||||
})
|
||||
shuffle.Icon = myTheme.ShuffleIcon
|
||||
add := fyne.NewMenuItem("Add to queue", func() {
|
||||
if t.OnPlaySelection != nil {
|
||||
t.OnAddToQueue(t.selectedTracks())
|
||||
}
|
||||
})
|
||||
add.Icon = theme.ContentAddIcon()
|
||||
t.ctxMenu.Items = append(t.ctxMenu.Items,
|
||||
play, shuffle, add)
|
||||
}
|
||||
playlist := fyne.NewMenuItem("Add to playlist...", func() {
|
||||
if t.OnAddToPlaylist != nil {
|
||||
t.OnAddToPlaylist(t.SelectedTrackIDs())
|
||||
}
|
||||
})
|
||||
playlist.Icon = myTheme.PlaylistIcon
|
||||
download := fyne.NewMenuItem("Download...", func() {
|
||||
t.onDownload(t.selectedTracks(), "Selected tracks")
|
||||
})
|
||||
download.Icon = theme.DownloadIcon()
|
||||
favorite := fyne.NewMenuItem("Set favorite", func() {
|
||||
t.onSetFavorites(t.selectedTracks(), true, true)
|
||||
})
|
||||
favorite.Icon = myTheme.FavoriteIcon
|
||||
unfavorite := fyne.NewMenuItem("Unset favorite", func() {
|
||||
t.onSetFavorites(t.selectedTracks(), false, true)
|
||||
})
|
||||
unfavorite.Icon = myTheme.NotFavoriteIcon
|
||||
t.ctxMenu.Items = append(t.ctxMenu.Items, playlist, download)
|
||||
t.ctxMenu.Items = append(t.ctxMenu.Items, fyne.NewMenuItemSeparator())
|
||||
t.ctxMenu.Items = append(t.ctxMenu.Items,
|
||||
fyne.NewMenuItem("Set favorite", func() {
|
||||
t.onSetFavorites(t.selectedTracks(), true, true)
|
||||
}))
|
||||
t.ctxMenu.Items = append(t.ctxMenu.Items,
|
||||
fyne.NewMenuItem("Unset favorite", func() {
|
||||
t.onSetFavorites(t.selectedTracks(), false, true)
|
||||
}))
|
||||
t.ctxMenu.Items = append(t.ctxMenu.Items, favorite, unfavorite)
|
||||
t.ratingSubmenu = util.NewRatingSubmenu(func(rating int) {
|
||||
t.onSetRatings(t.selectedTracks(), rating, true)
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user