LauncherGoDev/sysgo/UI/confirm_page.go
2021-10-24 19:29:20 +08:00

163 lines
3.4 KiB
Go

package UI
import (
//"fmt"
"github.com/veandco/go-sdl2/ttf"
// "github.com/cuu/gogame/surface"
"github.com/cuu/gogame/color"
"github.com/cuu/gogame/event"
"github.com/cuu/gogame/rect"
// "github.com/cuu/gogame/font"
"github.com/cuu/gogame/draw"
)
type ListPageSelector struct {
PageSelector
BackgroundColor *color.Color
Parent *ConfirmPage
}
func NewListPageSelector() *ListPageSelector {
p := &ListPageSelector{}
p.Width = Width
p.BackgroundColor = &color.Color{131, 199, 219, 255}
return p
}
func (self *ListPageSelector) Draw() {
idx := self.Parent.GetPsIndex()
mylist := self.Parent.MyList
if idx > (len(mylist) - 1) {
idx = len(mylist)
if idx > 0 {
idx -= 1
} else if idx == 0 {
return
}
}
x, y := mylist[idx].Coord()
_, h := mylist[idx].Size()
self.PosX = x
self.PosY = y
self.Height = h - 3
canvas_ := self.Parent.GetCanvasHWND()
rect_ := rect.Rect(self.PosX, self.PosY, self.Width-4, self.Height)
draw.AARoundRect(canvas_, &rect_, self.BackgroundColor, 4, 0, self.BackgroundColor)
}
type ConfirmPage struct {
Page
ListFont *ttf.Font
FileName string
TrashDir string
ConfirmText string
BGPosX int
BGPosY int
BGWidth int
BGHeight int
Icons map[string]IconItemInterface
MyList []LabelInterface
}
func NewConfirmPage() *ConfirmPage {
p := &ConfirmPage{}
p.ListFont = MyLangManager.TrFont("veramono20")
p.FootMsg = [5]string{"Nav", "", "", "Cancel", "Yes"}
p.ConfirmText = "Confirm?"
return p
}
func (self *ConfirmPage) Reset() {
self.MyList[0].SetText(self.ConfirmText)
x, y := self.MyList[0].Coord()
w, h := self.MyList[0].Size()
self.MyList[0].NewCoord((self.Width-w)/2, (self.Height-h)/2)
x, y = self.MyList[0].Coord()
self.BGPosX = x - 10
self.BGPosY = y - 10
self.BGWidth = w + 20
self.BGHeight = h + 20
}
func (self *ConfirmPage) SnapMsg(msg string) {
self.MyList[0].SetText(msg)
x, y := self.MyList[0].Coord()
w, h := self.MyList[0].Size()
self.MyList[0].NewCoord((self.Width-w)/2, (self.Height-h)/2)
x, y = self.MyList[0].Coord()
self.BGPosX = x - 10
self.BGPosY = y - 10
self.BGWidth = w + 20
self.BGHeight = h + 20
}
func (self *ConfirmPage) Init() {
if self.Screen != nil {
self.PosX = self.Index * self.Screen.Width
self.Width = self.Screen.Width
self.Height = self.Screen.Height
self.CanvasHWND = self.Screen.CanvasHWND
ps := NewListPageSelector()
ps.Parent = self
self.Ps = ps
self.PsIndex = 0
li := NewLabel()
li.SetCanvasHWND(self.CanvasHWND)
li.Init(self.ConfirmText, self.ListFont, nil)
li.PosX = (self.Width - li.Width) / 2
li.PosY = (self.Height - li.Height) / 2
self.BGPosX = li.PosX - 10
self.BGPosY = li.PosY - 10
self.BGWidth = li.Width + 20
self.BGHeight = li.Height + 20
self.MyList = append(self.MyList, li)
}
}
func (self *ConfirmPage) KeyDown(ev *event.Event) {
if ev.Data["Key"] == CurKeys["A"] || ev.Data["Key"] == CurKeys["Menu"] {
self.ReturnToUpLevelPage()
self.Screen.Draw()
self.Screen.SwapAndShow()
}
}
func (self *ConfirmPage) DrawBG() {
rect_ := rect.Rect(self.BGPosX, self.BGPosY, self.BGWidth, self.BGHeight)
draw.Rect(self.CanvasHWND, &color.Color{255, 255, 255, 255}, &rect_, 0) // SkinManager().GiveColor('White')
draw.Rect(self.CanvasHWND, &color.Color{83, 83, 83, 255}, &rect_, 1) //SkinManager().GiveColor('Text')
}
func (self *ConfirmPage) Draw() {
self.DrawBG()
for _, v := range self.MyList {
v.Draw()
}
self.Reset()
}