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/21_Warehouse"
|
||||
"github.com/clockworkpi/LauncherGoDev/Menu/GameShell/97_MusicPlayer"
|
||||
"github.com/clockworkpi/LauncherGoDev/Menu/GameShell/98_TinyCloud"
|
||||
"github.com/clockworkpi/LauncherGoDev/Menu/GameShell/99_PowerOFF"
|
||||
|
||||
@ -31,6 +32,7 @@ var (
|
||||
UIPluginList = []*UI.UIPlugin{
|
||||
&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/97_MusicPlayer", "Music Player", &MusicPlayer.APIOBJ},
|
||||
&UI.UIPlugin{1, "", "Menu/GameShell/98_TinyCloud", "TinyCloud", &TinyCloud.APIOBJ},
|
||||
&UI.UIPlugin{1, "", "Menu/GameShell/99_PowerOFF", "PowerOFF", &PowerOFF.APIOBJ},
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user