Files
goodlink/ui2/remote.go
kony c7bc4b9c4f u
2025-03-28 17:23:38 +08:00

107 lines
2.8 KiB
Go

//go:build windows
package ui2
import (
"goodlink/config"
"fyne.io/fyne/v2"
"fyne.io/fyne/v2/container"
"fyne.io/fyne/v2/widget"
)
type RemoteUI struct {
box_remote_ip *ipEntry
box_remote_port *portEntry
radio *widget.RadioGroup
}
func (c *RemoteUI) Disable() {
c.box_remote_ip.Disable()
c.box_remote_port.Disable()
c.radio.Disable()
}
func (c *RemoteUI) Enable() {
c.box_remote_ip.Enable()
c.box_remote_port.Enable()
c.radio.Enable()
}
func (c *RemoteUI) GetRemoteType() string {
return c.radio.Selected
}
func (c *RemoteUI) GetRemoteIP() string {
return c.box_remote_ip.Text
}
func (c *RemoteUI) GetRemotePort() string {
return c.box_remote_port.Text
}
func (c *RemoteUI) GetRemoteAddr() (string, error) {
if c.box_remote_ip.Validate() != nil {
return "", c.box_remote_ip.Validate()
}
if c.box_remote_port.Validate() != nil {
return "", c.box_remote_port.Validate()
}
return c.box_remote_ip.Text + ":" + c.box_remote_port.Text, nil
}
func (c *RemoteUI) GetContainer() *fyne.Container {
return container.NewVBox(
//container.New(layout.NewFormLayout(), widget.NewRichTextWithText("工作模式: "), c.radio),
//container.New(layout.NewFormLayout(), widget.NewRichTextWithText("转发目标地址: "), c.box_remote_ip),
//container.New(layout.NewFormLayout(), widget.NewRichTextWithText("转发目标端口: "), c.box_remote_port),
)
}
func NewRemoteUI(myWindow *fyne.Window, configInfo *config.ConfigInfo) *RemoteUI {
c := &RemoteUI{
radio: widget.NewRadioGroup([]string{"代理模式", "转发模式"}, nil),
box_remote_ip: NewIpEntry(configInfo.RemoteIP),
box_remote_port: NewPortEntry(configInfo.RemotePort),
}
c.radio.Horizontal = true
c.radio.OnChanged = func(value string) {
switch value {
case "转发模式":
c.box_remote_ip.SetText(configInfo.RemoteIP)
c.box_remote_ip.ResetPlaceHolder()
c.box_remote_ip.Enable()
c.box_remote_port.SetText(configInfo.RemotePort)
c.box_remote_port.ResetPlaceHolder()
c.box_remote_port.Enable()
default:
if c.box_remote_ip.Validate() == nil {
configInfo.RemoteIP = c.box_remote_ip.Text
}
c.box_remote_ip.SetText("")
c.box_remote_ip.SetPlaceHolder("无需配置")
c.box_remote_ip.Disable()
if c.box_remote_port.Validate() == nil {
configInfo.RemotePort = c.box_remote_port.Text
}
c.box_remote_port.SetText("")
c.box_remote_port.SetPlaceHolder("无需配置")
c.box_remote_port.Disable()
}
}
switch configInfo.RemoteType {
case "转发模式":
c.radio.SetSelected(configInfo.RemoteType)
c.box_remote_ip.SetText(configInfo.RemoteIP)
c.box_remote_port.SetText(configInfo.RemotePort)
default:
c.radio.SetSelected("代理模式")
}
return c
}