|
|
|
@ -53,10 +53,6 @@ type UI struct {
|
|
|
|
|
|
|
|
|
|
exitLAN widget.Bool
|
|
|
|
|
|
|
|
|
|
allowIncomingTransactions widget.Bool
|
|
|
|
|
useTailscaleDNS widget.Bool
|
|
|
|
|
useTailscaleSubnets widget.Bool
|
|
|
|
|
|
|
|
|
|
// webSigin is the button for the web-based sign-in flow.
|
|
|
|
|
webSignin widget.Clickable
|
|
|
|
|
|
|
|
|
@ -66,9 +62,6 @@ type UI struct {
|
|
|
|
|
// openExitDialog opens the exit node picker.
|
|
|
|
|
openExitDialog widget.Clickable
|
|
|
|
|
|
|
|
|
|
// openPreferencesDialog opens the preferences dialog
|
|
|
|
|
openPreferencesDialog widget.Clickable
|
|
|
|
|
|
|
|
|
|
signinType signinType
|
|
|
|
|
|
|
|
|
|
setLoginServer bool
|
|
|
|
@ -87,14 +80,6 @@ type UI struct {
|
|
|
|
|
list layout.List
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// exitDialog is state for the exit node dialog.
|
|
|
|
|
preferencesDialog struct {
|
|
|
|
|
show bool
|
|
|
|
|
dismiss Dismiss
|
|
|
|
|
exits widget.Enum
|
|
|
|
|
list layout.List
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
runningExit bool // are we an exit node now?
|
|
|
|
|
|
|
|
|
|
qr struct {
|
|
|
|
@ -117,7 +102,6 @@ type UI struct {
|
|
|
|
|
|
|
|
|
|
useLoginServer widget.Clickable
|
|
|
|
|
copy widget.Clickable
|
|
|
|
|
preferences widget.Clickable
|
|
|
|
|
reauth widget.Clickable
|
|
|
|
|
bug widget.Clickable
|
|
|
|
|
beExit widget.Clickable
|
|
|
|
@ -276,7 +260,6 @@ func newUI(store *stateStore) (*UI, error) {
|
|
|
|
|
ui.search.SingleLine = true
|
|
|
|
|
ui.loginServer.SingleLine = true
|
|
|
|
|
ui.exitDialog.list.Axis = layout.Vertical
|
|
|
|
|
ui.preferencesDialog.list.Axis = layout.Vertical
|
|
|
|
|
ui.shareDialog.list.Axis = layout.Vertical
|
|
|
|
|
|
|
|
|
|
// If they've ever set the control plane, give them the debug menu right away.
|
|
|
|
@ -311,8 +294,6 @@ func (ui *UI) activeDialog() *bool {
|
|
|
|
|
return &ui.shareDialog.show
|
|
|
|
|
case ui.exitDialog.show:
|
|
|
|
|
return &ui.exitDialog.show
|
|
|
|
|
case ui.preferencesDialog.show:
|
|
|
|
|
return &ui.preferencesDialog.show
|
|
|
|
|
case ui.aboutDialog.show:
|
|
|
|
|
return &ui.aboutDialog.show
|
|
|
|
|
}
|
|
|
|
@ -403,15 +384,6 @@ func (ui *UI) layout(gtx layout.Context, sysIns system.Insets, state *clientStat
|
|
|
|
|
if ui.exitLAN.Changed() {
|
|
|
|
|
events = append(events, ExitAllowLANEvent(ui.exitLAN.Value))
|
|
|
|
|
}
|
|
|
|
|
if ui.allowIncomingTransactions.Changed() {
|
|
|
|
|
events = append(events, AllowIncomingTransactionsEvent(ui.allowIncomingTransactions.Value))
|
|
|
|
|
}
|
|
|
|
|
if ui.useTailscaleDNS.Changed() {
|
|
|
|
|
events = append(events, UseTailscaleDNSEvent(ui.useTailscaleDNS.Value))
|
|
|
|
|
}
|
|
|
|
|
if ui.useTailscaleSubnets.Changed() {
|
|
|
|
|
events = append(events, UseTailscaleSubnetsEvent(ui.useTailscaleSubnets.Value))
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ui.googleSignin.Clicked() {
|
|
|
|
|
ui.signinType = googleSignin
|
|
|
|
@ -467,10 +439,6 @@ func (ui *UI) layout(gtx layout.Context, sysIns system.Insets, state *clientStat
|
|
|
|
|
ui.exitDialog.show = true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ui.menuClicked(&ui.menu.preferences) || ui.openPreferencesDialog.Clicked() {
|
|
|
|
|
ui.preferencesDialog.show = true
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if ui.menuClicked(&ui.menu.about) {
|
|
|
|
|
ui.aboutDialog.show = true
|
|
|
|
|
}
|
|
|
|
@ -600,8 +568,6 @@ func (ui *UI) layout(gtx layout.Context, sysIns system.Insets, state *clientStat
|
|
|
|
|
|
|
|
|
|
ui.layoutExitNodeDialog(gtx, sysIns, state.backend.Exits)
|
|
|
|
|
|
|
|
|
|
ui.layoutPreferencesDialog(gtx, sysIns, state.backend.Exits)
|
|
|
|
|
|
|
|
|
|
ui.layoutShareDialog(gtx, sysIns)
|
|
|
|
|
|
|
|
|
|
ui.layoutAboutDialog(gtx, sysIns)
|
|
|
|
@ -1114,70 +1080,6 @@ func (ui *UI) layoutExitNodeDialog(gtx layout.Context, sysIns system.Insets, exi
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// layoutPreferencesDialog lays out the preferences dialog.
|
|
|
|
|
func (ui *UI) layoutPreferencesDialog(gtx layout.Context, sysIns system.Insets, exits []Peer) {
|
|
|
|
|
d := &ui.preferencesDialog
|
|
|
|
|
if d.dismiss.Dismissed(gtx) {
|
|
|
|
|
d.show = false
|
|
|
|
|
}
|
|
|
|
|
if !d.show {
|
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
d.dismiss.Add(gtx, argb(0x66000000))
|
|
|
|
|
layout.Inset{
|
|
|
|
|
Top: sysIns.Top + unit.Dp(16),
|
|
|
|
|
Right: sysIns.Right + unit.Dp(16),
|
|
|
|
|
Bottom: sysIns.Bottom + unit.Dp(16),
|
|
|
|
|
Left: sysIns.Left + unit.Dp(16),
|
|
|
|
|
}.Layout(gtx, func(gtx C) D {
|
|
|
|
|
return layout.Center.Layout(gtx, func(gtx C) D {
|
|
|
|
|
gtx.Constraints.Min.X = gtx.Dp(unit.Dp(300))
|
|
|
|
|
gtx.Constraints.Max.X = gtx.Constraints.Min.X
|
|
|
|
|
return layoutDialog(gtx, func(gtx C) D {
|
|
|
|
|
return layout.Flex{Axis: layout.Vertical}.Layout(gtx,
|
|
|
|
|
layout.Rigid(func(gtx C) D {
|
|
|
|
|
// Header.
|
|
|
|
|
return layout.Inset{
|
|
|
|
|
Top: unit.Dp(16),
|
|
|
|
|
Right: unit.Dp(20),
|
|
|
|
|
Left: unit.Dp(20),
|
|
|
|
|
Bottom: unit.Dp(16),
|
|
|
|
|
}.Layout(gtx, func(gtx C) D {
|
|
|
|
|
l := material.Body1(ui.theme, "Preferences")
|
|
|
|
|
l.Font.Weight = text.Bold
|
|
|
|
|
return l.Layout(gtx)
|
|
|
|
|
})
|
|
|
|
|
}),
|
|
|
|
|
layout.Rigid(func(gtx C) D {
|
|
|
|
|
btn := material.CheckBox(ui.theme, &ui.allowIncomingTransactions, "Allow Incoming Connections")
|
|
|
|
|
return layout.Inset{
|
|
|
|
|
Right: unit.Dp(16),
|
|
|
|
|
Left: unit.Dp(16),
|
|
|
|
|
Bottom: unit.Dp(16),
|
|
|
|
|
}.Layout(gtx, btn.Layout)
|
|
|
|
|
}),
|
|
|
|
|
layout.Rigid(func(gtx C) D {
|
|
|
|
|
btn := material.CheckBox(ui.theme, &ui.useTailscaleDNS, "Use Tailscale DNS")
|
|
|
|
|
return layout.Inset{
|
|
|
|
|
Right: unit.Dp(16),
|
|
|
|
|
Left: unit.Dp(16),
|
|
|
|
|
Bottom: unit.Dp(16),
|
|
|
|
|
}.Layout(gtx, btn.Layout)
|
|
|
|
|
}),
|
|
|
|
|
layout.Rigid(func(gtx C) D {
|
|
|
|
|
btn := material.CheckBox(ui.theme, &ui.useTailscaleSubnets, "Use Tailscale Subnets")
|
|
|
|
|
return layout.Inset{
|
|
|
|
|
Right: unit.Dp(16),
|
|
|
|
|
Left: unit.Dp(16),
|
|
|
|
|
Bottom: unit.Dp(16),
|
|
|
|
|
}.Layout(gtx, btn.Layout)
|
|
|
|
|
}),
|
|
|
|
|
)
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
// layoutAboutDialog lays out the about dialog.
|
|
|
|
|
func (ui *UI) layoutAboutDialog(gtx layout.Context, sysIns system.Insets) {
|
|
|
|
|
d := &ui.aboutDialog
|
|
|
|
@ -1319,7 +1221,6 @@ func (ui *UI) layoutMenu(gtx layout.Context, sysIns system.Insets, expiry time.T
|
|
|
|
|
if showExits {
|
|
|
|
|
items = append(items, menuItem{title: "Use exit node...", btn: &menu.exits})
|
|
|
|
|
}
|
|
|
|
|
items = append(items, menuItem{title: "Preferences", btn: &menu.preferences})
|
|
|
|
|
items = append(items,
|
|
|
|
|
menuItem{title: "Bug report", btn: &menu.bug},
|
|
|
|
|
menuItem{title: "Reauthenticate", btn: &menu.reauth},
|
|
|
|
|