start to add Music Player code

This commit is contained in:
cuu 2023-01-14 07:22:56 +00:00
parent 657e89dd58
commit 5b5cb5e39f
6 changed files with 408 additions and 0 deletions

View File

@ -0,0 +1,143 @@
package MusicPlayer
import (
//"fmt"
"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/UI"
)
type MusicLibListPage struct {
UI.Page
ListFontObj *ttf.Font
URLColor *color.Color
TextColor *color.Color
Labels map[string]UI.LabelInterface
Icons map[string]UI.IconItemInterface
IP string
MyList []UI.ListItemInterface
MyStack *MusicLibStack
BGwidth int
BGheight int //70
Scroller *UI.ListScroller
Scrolled int
Parent *MusicPlayerPage
}
func NewMusicLibListPage() *MusicLibListPage {
p := &MusicLibListPage{}
p.PageIconMargin = 20
p.SelectedIconTopOffset = 20
p.EasingDur = 10
p.Align = UI.ALIGN["SLeft"]
p.FootMsg = [5]string{"Nav.", "", "Scan","Back","Add to Playlist"}
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 *MusicLibListPage) OnLoadCb() {
self.PosY = 0
}
func (self *MusicLibListPage) SetCoords() {
}
func (self *MusicLibListPage) 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()
}
func (self *MusicLibListPage) KeyDown(ev *event.Event) {
if ev.Data["Key"] == UI.CurKeys["Left"] || ev.Data["Key"] == UI.CurKeys["Menu"] {
self.ReturnToUpLevelPage()
self.Screen.Draw()
self.Screen.SwapAndShow()
}
return
}
func (self *MusicLibListPage) 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)
}
}

View File

@ -0,0 +1,64 @@
package MusicPlayer
import (
"sync"
)
type element struct {
data interface{}
next *element
}
type MusicLibStack struct {
lock *sync.Mutex
head *element
Size int
}
func (stk *MusicLibStack) Push(data interface{}) {
stk.lock.Lock()
element := new(element)
element.data = data
temp := stk.head
element.next = temp
stk.head = element
stk.Size++
stk.lock.Unlock()
}
func (stk *MusicLibStack) Pop() interface{} {
if stk.head == nil {
return nil
}
stk.lock.Lock()
r := stk.head.data
stk.head = stk.head.next
stk.Size--
stk.lock.Unlock()
return r
}
func (stk *MusicLibStack) Length() int {
return stk.Size
}
func (stk *MusicLibStack) Last() string {
idx := stk.Length() -1
if idx < 0 {
return "/"
} else {
return stk.head.data.(string)
}
}
func NewMusicLibStack() *MusicLibStack {
stk := new(MusicLibStack)
stk.lock = &sync.Mutex{}
return stk
}

View File

@ -0,0 +1,156 @@
package MusicPlayer
import (
//"fmt"
"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/UI"
)
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
MyList []UI.ListItemInterface
MyStack *MusicLibStack
BGwidth int
BGheight int //70
Scroller *UI.ListScroller
Scrolled int
}
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
}
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()
}
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)
}
}

View File

@ -0,0 +1,5 @@
{
"SO_FILE":"",
"NAME":"Music Player"
}

View File

@ -0,0 +1,38 @@
package MusicPlayer
import (
/*
"github.com/veandco/go-sdl2/ttf"
"github.com/cuu/gogame/surface"
"github.com/cuu/gogame/event"
"github.com/cuu/gogame/rect"
"github.com/cuu/gogame/color"
*/
"github.com/clockworkpi/LauncherGoDev/sysgo/UI"
//"github.com/clockworkpi/LauncherGoDev/sysgo/DBUS"
)
/******************************************************************************/
type MusicPlayerPlugin struct {
UI.Plugin
MusicPlayerPage *MusicPlayerPage
}
func (self *MusicPlayerPlugin) Init(main_screen *UI.MainScreen) {
self.MusicPlayerPage = NewMusicPlayerPage()
self.MusicPlayerPage.SetScreen(main_screen)
self.MusicPlayerPage.SetName("Music Player")
self.MusicPlayerPage.Init()
}
func (self *MusicPlayerPlugin) Run(main_screen *UI.MainScreen) {
if main_screen != nil {
main_screen.PushCurPage()
main_screen.SetCurPage(self.MusicPlayerPage)
main_screen.Draw()
main_screen.SwapAndShow()
}
}
var APIOBJ MusicPlayerPlugin

View File

@ -21,6 +21,7 @@ import (
"github.com/clockworkpi/LauncherGoDev/Menu/GameShell/10_Settings" "github.com/clockworkpi/LauncherGoDev/Menu/GameShell/10_Settings"
"github.com/clockworkpi/LauncherGoDev/Menu/GameShell/21_Warehouse" "github.com/clockworkpi/LauncherGoDev/Menu/GameShell/21_Warehouse"
"github.com/clockworkpi/LauncherGoDev/Menu/GameShell/97_MusicPlayer"
"github.com/clockworkpi/LauncherGoDev/Menu/GameShell/98_TinyCloud" "github.com/clockworkpi/LauncherGoDev/Menu/GameShell/98_TinyCloud"
"github.com/clockworkpi/LauncherGoDev/Menu/GameShell/99_PowerOFF" "github.com/clockworkpi/LauncherGoDev/Menu/GameShell/99_PowerOFF"
@ -31,6 +32,7 @@ var (
UIPluginList = []*UI.UIPlugin{ UIPluginList = []*UI.UIPlugin{
&UI.UIPlugin{1, "", "Menu/GameShell/10_Settings", "Settings", &Settings.APIOBJ}, &UI.UIPlugin{1, "", "Menu/GameShell/10_Settings", "Settings", &Settings.APIOBJ},
&UI.UIPlugin{1, "", "Menu/GameShell/21_Warehouse", "Warehouse", &Warehouse.APIOBJ}, &UI.UIPlugin{1, "", "Menu/GameShell/21_Warehouse", "Warehouse", &Warehouse.APIOBJ},
&UI.UIPlugin{1, "", "Menu/GameShell/97_MusicPlayer", "Music Player", &MusicPlayer.APIOBJ},
&UI.UIPlugin{1, "", "Menu/GameShell/98_TinyCloud", "TinyCloud", &TinyCloud.APIOBJ}, &UI.UIPlugin{1, "", "Menu/GameShell/98_TinyCloud", "TinyCloud", &TinyCloud.APIOBJ},
&UI.UIPlugin{1, "", "Menu/GameShell/99_PowerOFF", "PowerOFF", &PowerOFF.APIOBJ}, &UI.UIPlugin{1, "", "Menu/GameShell/99_PowerOFF", "PowerOFF", &PowerOFF.APIOBJ},
} }