enable drag and drop reordering
This commit is contained in:
@@ -33,6 +33,9 @@ type TracklistOptions struct {
|
||||
// or to use the number from the track's metadata
|
||||
AutoNumber bool
|
||||
|
||||
// Reorderable sets whether the tracklist supports drag-and-drop reordering.
|
||||
Reorderable bool
|
||||
|
||||
// ShowDiscNumber sets whether to display the disc number as part of the '#' column,
|
||||
// (with format %d.%02d). Only applies if AutoNumber==false.
|
||||
ShowDiscNumber bool
|
||||
@@ -74,6 +77,7 @@ type Tracklist struct {
|
||||
OnDownload func(tracks []*mediaprovider.Track, downloadName string)
|
||||
OnShare func(trackID string)
|
||||
OnPlaySongRadio func(track *mediaprovider.Track)
|
||||
OnReorderTracks func(trackIDs []string, insertPos int)
|
||||
|
||||
OnShowArtistPage func(artistID string)
|
||||
OnShowAlbumPage func(albumID string)
|
||||
@@ -182,6 +186,17 @@ func NewTracklist(tracks []*mediaprovider.Track, im *backend.ImageManager, useCo
|
||||
t.OnTrackShown(itemID)
|
||||
}
|
||||
})
|
||||
t.list.OnDragBegin = func(id int) {
|
||||
if !t.tracks[id].Selected {
|
||||
t.selectTrack(id)
|
||||
t.list.Refresh()
|
||||
}
|
||||
}
|
||||
t.list.OnDragEnd = func(dragged, insertPos int) {
|
||||
if t.OnReorderTracks != nil {
|
||||
t.OnReorderTracks(t.SelectedTrackIDs(), insertPos)
|
||||
}
|
||||
}
|
||||
t.container = container.NewBorder(t.hdr, nil, nil, nil, t.list)
|
||||
return t
|
||||
}
|
||||
@@ -371,6 +386,7 @@ func (t *Tracklist) CreateRenderer() fyne.WidgetRenderer {
|
||||
}
|
||||
|
||||
func (t *Tracklist) Refresh() {
|
||||
t.list.EnableDragging = t.Options.Reorderable
|
||||
t.hdr.DisableSorting = t.Options.DisableSorting
|
||||
t.BaseWidget.Refresh()
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user