package ui import ( "strings" "gioui.org/layout" "gioui.org/widget" "gioui.org/widget/material" "git.wxccs.org/iceking2nd/winauth-go/internal/i18n" ) type renameDialog struct { ed widget.Editor okBtn widget.Clickable cancel widget.Clickable errMsg string } func newRenameDialog(currentName string) *renameDialog { d := &renameDialog{} d.ed.SingleLine = true d.ed.SetText(currentName) return d } func (d *renameDialog) Layout( gtx layout.Context, th *material.Theme, onDone func(string, bool), ) layout.Dimensions { if d.cancel.Clicked(gtx) { onDone("", true) return layout.Dimensions{Size: gtx.Constraints.Max} } if d.okBtn.Clicked(gtx) { name := strings.TrimSpace(d.ed.Text()) if name == "" { d.errMsg = i18n.T("msg_empty_name") } else { onDone(name, false) return layout.Dimensions{Size: gtx.Constraints.Max} } } body := func(gtx layout.Context) layout.Dimensions { return layout.Flex{Axis: layout.Vertical}.Layout(gtx, layout.Rigid(labeledEditor(th, i18n.T("label_entry_name"), &d.ed, "")), layout.Rigid(errorLabel(th, d.errMsg)), ) } return modalCard(gtx, th, i18n.T("dialog_rename_title"), i18n.T("btn_ok"), i18n.T("btn_cancel"), &d.okBtn, &d.cancel, body) }