basic skin ui
This commit is contained in:
parent
75956eabcb
commit
b21ed74bea
|
@ -2,6 +2,7 @@ package settings
|
|||
|
||||
import (
|
||||
"image"
|
||||
"sort"
|
||||
|
||||
"gioui.org/layout"
|
||||
"gioui.org/unit"
|
||||
|
@ -40,12 +41,18 @@ func New(router *pages.Router) *Page {
|
|||
startButton: widget.Clickable{},
|
||||
}
|
||||
|
||||
options := make([]func(layout.Context) layout.Dimensions, 0, len(utils.ValidCMDs))
|
||||
p.cmdMenu.items = make(map[string]*widget.Clickable, len(utils.ValidCMDs))
|
||||
cmdNames := []string{}
|
||||
for k := range utils.ValidCMDs {
|
||||
cmdNames = append(cmdNames, k)
|
||||
}
|
||||
sort.Strings(cmdNames)
|
||||
|
||||
p.cmdMenu.items = make(map[string]*widget.Clickable, len(utils.ValidCMDs))
|
||||
options := make([]func(layout.Context) layout.Dimensions, 0, len(utils.ValidCMDs))
|
||||
for _, name := range cmdNames {
|
||||
item := &widget.Clickable{}
|
||||
p.cmdMenu.items[k] = item
|
||||
options = append(options, component.MenuItem(router.Theme, item, k).Layout)
|
||||
p.cmdMenu.items[name] = item
|
||||
options = append(options, component.MenuItem(router.Theme, item, name).Layout)
|
||||
}
|
||||
|
||||
p.cmdMenu.state = &component.MenuState{
|
||||
|
|
|
@ -1,8 +1,11 @@
|
|||
package skins
|
||||
|
||||
import (
|
||||
"sync"
|
||||
|
||||
"gioui.org/layout"
|
||||
"gioui.org/unit"
|
||||
"gioui.org/widget"
|
||||
"gioui.org/widget/material"
|
||||
"gioui.org/x/component"
|
||||
"github.com/bedrock-tool/bedrocktool/ui/gui"
|
||||
|
@ -18,12 +21,20 @@ type (
|
|||
type Page struct {
|
||||
*pages.Router
|
||||
|
||||
State messages.UIState
|
||||
State messages.UIState
|
||||
SkinsList widget.List
|
||||
l sync.Mutex
|
||||
Skins []messages.NewSkinPayload
|
||||
}
|
||||
|
||||
func New(router *pages.Router) *Page {
|
||||
return &Page{
|
||||
Router: router,
|
||||
SkinsList: widget.List{
|
||||
List: layout.List{
|
||||
Axis: layout.Vertical,
|
||||
},
|
||||
},
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -66,6 +77,20 @@ func (p *Page) Layout(gtx C, th *material.Theme) D {
|
|||
Axis: layout.Vertical,
|
||||
}.Layout(gtx,
|
||||
layout.Rigid(material.Label(th, 20, "Skin Basic UI").Layout),
|
||||
layout.Flexed(1, func(gtx layout.Context) layout.Dimensions {
|
||||
p.l.Lock()
|
||||
defer p.l.Unlock()
|
||||
return material.List(th, &p.SkinsList).Layout(gtx, len(p.Skins), func(gtx layout.Context, index int) layout.Dimensions {
|
||||
entry := p.Skins[len(p.Skins)-index-1]
|
||||
return layout.UniformInset(25).Layout(gtx, func(gtx layout.Context) layout.Dimensions {
|
||||
return layout.Flex{
|
||||
Axis: layout.Horizontal,
|
||||
}.Layout(gtx,
|
||||
layout.Rigid(material.Label(th, th.TextSize, entry.PlayerName).Layout),
|
||||
)
|
||||
})
|
||||
})
|
||||
}),
|
||||
)
|
||||
})
|
||||
}
|
||||
|
@ -73,7 +98,7 @@ func (p *Page) Layout(gtx C, th *material.Theme) D {
|
|||
return layout.Flex{}.Layout(gtx)
|
||||
}
|
||||
|
||||
func (u *Page) handler(name string, data interface{}) messages.MessageResponse {
|
||||
func (p *Page) handler(name string, data interface{}) messages.MessageResponse {
|
||||
r := messages.MessageResponse{
|
||||
Ok: false,
|
||||
Data: nil,
|
||||
|
@ -82,8 +107,8 @@ func (u *Page) handler(name string, data interface{}) messages.MessageResponse {
|
|||
switch name {
|
||||
case messages.SetUIState:
|
||||
state := data.(messages.UIState)
|
||||
u.State = state
|
||||
u.Router.Invalidate()
|
||||
p.State = state
|
||||
p.Router.Invalidate()
|
||||
r.Ok = true
|
||||
|
||||
case messages.Init:
|
||||
|
@ -91,6 +116,13 @@ func (u *Page) handler(name string, data interface{}) messages.MessageResponse {
|
|||
_ = init
|
||||
r.Ok = true
|
||||
|
||||
case messages.NewSkin:
|
||||
p.l.Lock()
|
||||
new_skin := data.(messages.NewSkinPayload)
|
||||
p.Skins = append(p.Skins, new_skin)
|
||||
r.Ok = true
|
||||
p.l.Unlock()
|
||||
p.Router.Invalidate()
|
||||
}
|
||||
return r
|
||||
}
|
||||
|
|
|
@ -24,6 +24,8 @@ func UnpackZip(r io.ReaderAt, size int64, unpackFolder string) {
|
|||
fr, _ := srcFile.Open()
|
||||
f, _ := os.Create(path.Join(unpackFolder, srcName))
|
||||
io.Copy(f, fr)
|
||||
f.Close()
|
||||
fr.Close()
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue