2023-01-16 12:55:12 +00:00

181 lines
4.4 KiB
Go

package MusicPlayer
import (
"fmt"
"log"
"github.com/cuu/gogame/event"
"github.com/cuu/gogame/rect"
"github.com/cuu/gogame/surface"
"github.com/veandco/go-sdl2/ttf"
"github.com/cuu/gogame/color"
"github.com/clockworkpi/LauncherGoDev/sysgo"
"github.com/clockworkpi/LauncherGoDev/sysgo/UI"
"github.com/fhs/gompd/v2/mpd"
)
type MusicPlayerPage struct {
UI.Page
ListFontObj *ttf.Font
URLColor *color.Color
TextColor *color.Color
Labels map[string]UI.LabelInterface
Icons map[string]UI.IconItemInterface
IP string
MyMusicLibListPage *MusicLibListPage //also use the MpdClient *mpd.Client
//MyList []UI.ListItemInterface
MyStack *UI.FolderStack
BGwidth int
BGheight int //70
Scroller *UI.ListScroller
Scrolled int
MpdClient *mpd.Client
}
func NewMusicPlayerPage() *MusicPlayerPage {
p := &MusicPlayerPage{}
p.PageIconMargin = 20
p.SelectedIconTopOffset = 20
p.EasingDur = 10
p.Align = UI.ALIGN["SLeft"]
p.FootMsg = [5]string{"Nav","Remove","RTA","Back","Play/Pause"}
p.URLColor = UI.MySkinManager.GiveColor("URL")
p.TextColor = UI.MySkinManager.GiveColor("Text")
p.ListFontObj = UI.MyLangManager.TrFont("notosanscjk15")
p.Labels = make(map[string]UI.LabelInterface)
p.Icons = make(map[string]UI.IconItemInterface)
p.BGwidth = 56
p.BGheight = 70
return p
}
func (self *MusicPlayerPage) OnLoadCb() {
self.PosY = 0
if self.MpdClient == nil {
conn, err := mpd.Dial("unix", sysgo.MPD_socket)
if err != nil {
log.Fatalln(err)
}
self.MpdClient = conn
fmt.Println("Start mpd client")
}
}
func (self *MusicPlayerPage) OnPopUpCb() {
if self.MpdClient != nil {
self.MpdClient.Close()
self.MpdClient = nil
fmt.Println("Close mpd client")
}
}
func (self *MusicPlayerPage) SetCoords() {
}
func (self *MusicPlayerPage) SetLabels() {
}
func (self *MusicPlayerPage) Init() {
if self.Screen == nil {
panic("No Screen")
}
if self.Screen.CanvasHWND != nil && self.CanvasHWND == nil {
self.HWND = self.Screen.CanvasHWND
self.CanvasHWND = surface.Surface(self.Screen.Width, self.Screen.Height)
}
self.PosX = self.Index * self.Screen.Width
self.Width = self.Screen.Width
self.Height = self.Screen.Height
ps := UI.NewInfoPageSelector()
ps.Width = UI.Width - 12
ps.PosX = 2
ps.Parent = self
self.Ps = ps
self.PsIndex = 0
bgpng := UI.NewIconItem()
bgpng.ImgSurf = UI.MyIconPool.GetImgSurf("empty")
bgpng.MyType = UI.ICON_TYPES["STAT"]
bgpng.Parent = self
bgpng.AddLabel("Please upload data over Wi-Fi", UI.Fonts["varela22"])
bgpng.SetLabelColor(&color.Color{204, 204, 204, 255})
bgpng.Adjust(0, 0, self.BGwidth, self.BGheight, 0)
self.Icons["bg"] = bgpng
icon_for_list := UI.NewMultiIconItem()
icon_for_list.ImgSurf = UI.MyIconPool.GetImgSurf("sys")
icon_for_list.MyType = UI.ICON_TYPES["STAT"]
icon_for_list.Parent = self
icon_for_list.Adjust(0, 0, 18, 18, 0)
self.Icons["sys"] = icon_for_list
self.Scroller = UI.NewListScroller()
self.Scroller.Parent = self
self.Scroller.PosX = self.Width - 10
self.Scroller.PosY = 2
self.Scroller.Init()
self.MyMusicLibListPage = NewMusicLibListPage()
self.MyMusicLibListPage.Screen = self.Screen
self.MyMusicLibListPage.Name = "Music Library"
self.MyMusicLibListPage.Parent = self
self.MyMusicLibListPage.Init()
self.MyStack = UI.NewFolderStack()
self.MyStack.SetRootPath("/")
}
func (self *MusicPlayerPage) KeyDown(ev *event.Event) {
if ev.Data["Key"] == UI.CurKeys["Right"] {
self.Screen.PushPage(self.MyMusicLibListPage)
self.Screen.Draw()
self.Screen.SwapAndShow()
}
if ev.Data["Key"] == UI.CurKeys["A"] || ev.Data["Key"] == UI.CurKeys["Menu"] {
self.ReturnToUpLevelPage()
self.Screen.Draw()
self.Screen.SwapAndShow()
}
return
}
func (self *MusicPlayerPage) Draw() {
self.ClearCanvas()
if len(self.MyList) == 0 {
self.Icons["bg"].NewCoord(self.Width/2, self.Height/2)
self.Icons["bg"].Draw()
}
if self.HWND != nil {
surface.Fill(self.HWND, UI.MySkinManager.GiveColor("White"))
rect_ := rect.Rect(self.PosX, self.PosY, self.Width, self.Height)
surface.Blit(self.HWND, self.CanvasHWND, &rect_, nil)
}
}