refactoring package organization

This commit is contained in:
Drew Weymouth
2023-01-04 17:33:44 -08:00
parent 9ac497e25b
commit 7b3aca6027
8 changed files with 36 additions and 29 deletions
+4 -3
View File
@@ -5,6 +5,7 @@ import (
"image"
"supersonic/backend"
"supersonic/player"
"supersonic/ui/browsing"
"supersonic/ui/widgets"
"fyne.io/fyne/v2"
@@ -66,7 +67,7 @@ type BottomPanel struct {
var _ fyne.Widget = (*BottomPanel)(nil)
func NewBottomPanel(p *player.Player, nav func(Route)) *BottomPanel {
func NewBottomPanel(p *player.Player, nav func(browsing.Route)) *BottomPanel {
bp := &BottomPanel{}
bp.ExtendBaseWidget(bp)
p.OnPaused(func() {
@@ -81,10 +82,10 @@ func NewBottomPanel(p *player.Player, nav func(Route)) *BottomPanel {
bp.NowPlaying = widgets.NewNowPlayingCard()
bp.NowPlaying.OnAlbumNameTapped(func() {
nav(AlbumRoute(bp.playbackManager.NowPlaying().AlbumID))
nav(browsing.AlbumRoute(bp.playbackManager.NowPlaying().AlbumID))
})
bp.NowPlaying.OnArtistNameTapped(func() {
nav(ArtistRoute(bp.playbackManager.NowPlaying().ArtistID))
nav(browsing.ArtistRoute(bp.playbackManager.NowPlaying().ArtistID))
})
bp.Controls = widgets.NewPlayerControls()
bp.Controls.OnPlayPause(func() {
+1 -1
View File
@@ -1,4 +1,4 @@
package ui
package browsing
import (
"fmt"
@@ -1,4 +1,4 @@
package ui
package browsing
import (
"supersonic/backend"
@@ -19,8 +19,8 @@ type AlbumsPage struct {
im *backend.ImageManager
lm *backend.LibraryManager
nav func(Route)
grid *AlbumGrid
searchGrid *AlbumGrid
grid *widgets.AlbumGrid
searchGrid *widgets.AlbumGrid
searchText string
titleDisp *widget.RichText
sortOrder *selectWidget
@@ -66,7 +66,7 @@ func NewAlbumsPage(title string, sortOrder string, lm *backend.LibraryManager, i
a.sortOrder.OnChanged = a.onSortOrderChanged
sortVbox := container.NewVBox(layout.NewSpacer(), a.sortOrder, layout.NewSpacer())
iter := lm.AlbumsIter(backend.AlbumSortOrder(a.sortOrder.Selected))
a.grid = NewAlbumGrid(iter, im.GetAlbumThumbnail, false /*showYear*/)
a.grid = widgets.NewAlbumGrid(iter, im.GetAlbumThumbnail, false /*showYear*/)
a.grid.OnPlayAlbum = a.onPlayAlbum
a.grid.OnShowArtistPage = a.onShowArtistPage
a.grid.OnShowAlbumPage = a.onShowAlbumPage
@@ -91,7 +91,7 @@ func (a *AlbumsPage) OnSearched(query string) {
return
}
if a.searchGrid == nil {
a.searchGrid = NewAlbumGrid(a.lm.SearchIter(query), a.im.GetAlbumThumbnail, false /*showYear*/)
a.searchGrid = widgets.NewAlbumGrid(a.lm.SearchIter(query), a.im.GetAlbumThumbnail, false /*showYear*/)
a.searchGrid.OnPlayAlbum = a.onPlayAlbum
a.searchGrid.OnShowAlbumPage = a.onShowAlbumPage
a.searchGrid.OnShowArtistPage = a.onShowArtistPage
@@ -1,8 +1,9 @@
package ui
package browsing
import (
"log"
"supersonic/backend"
"supersonic/ui/widgets"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
@@ -20,7 +21,7 @@ type ArtistPage struct {
im *backend.ImageManager
sm *backend.ServerManager
nav func(Route)
grid *AlbumGrid
grid *widgets.AlbumGrid
titleDisp *widget.RichText
container *fyne.Container
@@ -71,7 +72,7 @@ func (a *ArtistPage) loadAsync() {
}
a.titleDisp.Segments[0].(*widget.TextSegment).Text = artist.Name
a.titleDisp.Refresh()
ag := NewFixedAlbumGrid(artist.Album, a.im.GetAlbumThumbnail, true /*showYear*/)
ag := widgets.NewFixedAlbumGrid(artist.Album, a.im.GetAlbumThumbnail, true /*showYear*/)
ag.OnPlayAlbum = a.onPlayAlbum
ag.OnShowAlbumPage = a.onShowAlbumPage
a.container.Objects[0] = ag
@@ -1,4 +1,4 @@
package ui
package browsing
import (
"image/color"
+4 -2
View File
@@ -1,6 +1,8 @@
package ui
package browsing
import "supersonic/backend"
import (
"supersonic/backend"
)
type PageName int
+6 -5
View File
@@ -2,6 +2,7 @@ package ui
import (
"supersonic/backend"
"supersonic/ui/browsing"
"supersonic/ui/widgets"
"fyne.io/fyne/v2"
@@ -13,8 +14,8 @@ import (
type MainWindow struct {
Window fyne.Window
Router Router
BrowsingPane *BrowsingPane
Router browsing.Router
BrowsingPane *browsing.BrowsingPane
BottomPanel *BottomPanel
container *fyne.Container
@@ -23,9 +24,9 @@ type MainWindow struct {
func NewMainWindow(fyneApp fyne.App, appName string, app *backend.App) MainWindow {
m := MainWindow{
Window: fyneApp.NewWindow(appName),
BrowsingPane: NewBrowsingPane(app),
BrowsingPane: browsing.NewBrowsingPane(app),
}
m.Router = NewRouter(app, m.BrowsingPane)
m.Router = browsing.NewRouter(app, m.BrowsingPane)
m.BottomPanel = NewBottomPanel(app.Player, m.Router.OpenRoute)
m.BottomPanel.SetPlaybackManager(app.PlaybackManager)
m.BottomPanel.ImageManager = app.ImageManager
@@ -40,7 +41,7 @@ func NewMainWindow(fyneApp fyne.App, appName string, app *backend.App) MainWindo
m.Window.SetTitle(song.Title)
})
app.ServerManager.OnServerConnected(func() {
m.Router.OpenRoute(AlbumsRoute(backend.AlbumSortRecentlyAdded))
m.Router.OpenRoute(browsing.AlbumsRoute(backend.AlbumSortRecentlyAdded))
})
return m
}
+11 -9
View File
@@ -1,11 +1,9 @@
package ui
package widgets
import (
"context"
"image"
"log"
"supersonic/backend"
"supersonic/ui/widgets"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/widget"
@@ -14,12 +12,16 @@ import (
type ImageFetcher func(string) (image.Image, error)
type AlbumIterator interface {
NextN(int, func(*subsonic.AlbumID3))
}
type AlbumGrid struct {
widget.BaseWidget
grid *widget.GridWrapList
albums []*subsonic.AlbumID3
iter backend.AlbumIterator
iter AlbumIterator
fetching bool
done bool
showYear bool
@@ -44,7 +46,7 @@ func NewFixedAlbumGrid(albums []*subsonic.AlbumID3, fetch ImageFetcher, showYear
return ag
}
func NewAlbumGrid(iter backend.AlbumIterator, fetch ImageFetcher, showYear bool) *AlbumGrid {
func NewAlbumGrid(iter AlbumIterator, fetch ImageFetcher, showYear bool) *AlbumGrid {
ag := &AlbumGrid{
iter: iter,
imageFetcher: fetch,
@@ -63,7 +65,7 @@ func (ag *AlbumGrid) Clear() {
ag.done = true
}
func (ag *AlbumGrid) Reset(iter backend.AlbumIterator) {
func (ag *AlbumGrid) Reset(iter AlbumIterator) {
ag.albums = nil
ag.fetching = false
ag.done = false
@@ -78,7 +80,7 @@ func (ag *AlbumGrid) createGridWrapList() {
},
// create func
func() fyne.CanvasObject {
ac := widgets.NewAlbumCard(ag.showYear)
ac := NewAlbumCard(ag.showYear)
ac.OnPlay = func() {
if ag.OnPlayAlbum != nil {
ag.OnPlayAlbum(ac.AlbumID())
@@ -98,14 +100,14 @@ func (ag *AlbumGrid) createGridWrapList() {
},
// update func
func(itemID int, obj fyne.CanvasObject) {
ac := obj.(*widgets.AlbumCard)
ac := obj.(*AlbumCard)
ag.doUpdateAlbumCard(itemID, ac)
},
)
ag.grid = g
}
func (ag *AlbumGrid) doUpdateAlbumCard(albumIdx int, ac *widgets.AlbumCard) {
func (ag *AlbumGrid) doUpdateAlbumCard(albumIdx int, ac *AlbumCard) {
album := ag.albums[albumIdx]
if ac.PrevAlbumID == album.ID {
// nothing to do