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.Refresh()
	}
}

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()
}
