move grid view context menu to GridView instead of GridViewItem for reuse

This commit is contained in:
Drew Weymouth
2023-07-12 17:18:54 -07:00
parent b433c4f34c
commit 2239023e0f
2 changed files with 50 additions and 64 deletions
+12 -44
View File
@@ -136,7 +136,6 @@ type GridViewItem struct {
secondaryID string
primaryText *CustomHyperlink
secondaryText *CustomHyperlink
menu *widget.PopUpMenu
container *fyne.Container
// updated by GridView
@@ -146,10 +145,8 @@ type GridViewItem struct {
PrevID string
ImgLoadCancel context.CancelFunc
OnPlay func(shuffle bool)
OnAddToQueue func()
OnAddToPlaylist func()
OnDownload func()
OnPlay func()
OnShowContextMenu func(fyne.Position)
OnShowItemPage func()
OnShowSecondaryPage func()
}
@@ -162,8 +159,16 @@ func NewGridViewItem(placeholderResource fyne.Resource) *GridViewItem {
}
g.primaryText.SetTextStyle(fyne.TextStyle{Bold: true})
g.ExtendBaseWidget(g)
g.Cover.OnPlay = func() { g.onPlay(false) }
g.Cover.OnShowContextMenu = g.showContextMenu
g.Cover.OnPlay = func() {
if g.OnPlay != nil {
g.OnPlay()
}
}
g.Cover.OnShowContextMenu = func(pos fyne.Position) {
if g.OnShowContextMenu != nil {
g.OnShowContextMenu(pos)
}
}
showItemFn := func() {
if g.OnShowItemPage != nil {
g.OnShowItemPage()
@@ -188,19 +193,6 @@ func (g *GridViewItem) createContainer() {
g.container = container.New(pad, c)
}
func (g *GridViewItem) showContextMenu(pos fyne.Position) {
if g.menu == nil {
g.menu = widget.NewPopUpMenu(fyne.NewMenu("",
fyne.NewMenuItem("Play", func() { g.onPlay(false) }),
fyne.NewMenuItem("Shuffle", func() { g.onPlay(true) }),
fyne.NewMenuItem("Add to queue", g.onAddToQueue),
fyne.NewMenuItem("Add to playlist...", g.onAddToPlaylist),
fyne.NewMenuItem("Download...", g.onDownload)),
fyne.CurrentApp().Driver().CanvasForObject(g))
}
g.menu.ShowAtPosition(pos)
}
func (g *GridViewItem) Update(model GridViewItemModel) {
g.itemID = model.ID
g.secondaryID = model.SecondaryID
@@ -226,27 +218,3 @@ func (g *GridViewItem) SecondaryID() string {
func (g *GridViewItem) CreateRenderer() fyne.WidgetRenderer {
return widget.NewSimpleRenderer(g.container)
}
func (g *GridViewItem) onPlay(shuffle bool) {
if g.OnPlay != nil {
g.OnPlay(shuffle)
}
}
func (g *GridViewItem) onAddToQueue() {
if g.OnAddToQueue != nil {
g.OnAddToQueue()
}
}
func (g *GridViewItem) onAddToPlaylist() {
if g.OnAddToPlaylist != nil {
g.OnAddToPlaylist()
}
}
func (g *GridViewItem) onDownload() {
if g.OnDownload != nil {
g.OnDownload()
}
}