mirror of
https://github.com/clockworkpi/LauncherGoDev.git
synced 2025-12-12 16:08:52 +01:00
start to add Music Player code
This commit is contained in:
parent
657e89dd58
commit
5b5cb5e39f
143
Menu/GameShell/97_MusicPlayer/music_lib_list_page.go
Normal file
143
Menu/GameShell/97_MusicPlayer/music_lib_list_page.go
Normal 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)
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
64
Menu/GameShell/97_MusicPlayer/music_lib_stack.go
Normal file
64
Menu/GameShell/97_MusicPlayer/music_lib_stack.go
Normal 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
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
156
Menu/GameShell/97_MusicPlayer/music_player_page.go
Normal file
156
Menu/GameShell/97_MusicPlayer/music_player_page.go
Normal 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)
|
||||||
|
}
|
||||||
|
}
|
||||||
5
Menu/GameShell/97_MusicPlayer/plugin.json
Normal file
5
Menu/GameShell/97_MusicPlayer/plugin.json
Normal file
@ -0,0 +1,5 @@
|
|||||||
|
{
|
||||||
|
"SO_FILE":"",
|
||||||
|
"NAME":"Music Player"
|
||||||
|
}
|
||||||
|
|
||||||
38
Menu/GameShell/97_MusicPlayer/plugin_init.go
Normal file
38
Menu/GameShell/97_MusicPlayer/plugin_init.go
Normal 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
|
||||||
@ -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},
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user