summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gui.go7
-rw-r--r--limox.go10
2 files changed, 17 insertions, 0 deletions
diff --git a/gui.go b/gui.go
index 8fcfed6..d3f6b2d 100644
--- a/gui.go
+++ b/gui.go
@@ -49,6 +49,13 @@ func (l *Limox) draw(e system.FrameEvent) {
return btn.Layout(gtx)
},
),
+ layout.Rigid(
+ func(gtx layout.Context) layout.Dimensions {
+ btn := material.Button(l.Theme, &l.DisconnectButton,
+ "Disconnect")
+ return btn.Layout(gtx)
+ },
+ ),
)
e.Frame(gtx.Ops)
diff --git a/limox.go b/limox.go
index 4914ff5..d1cbd79 100644
--- a/limox.go
+++ b/limox.go
@@ -26,6 +26,7 @@ type Limox struct {
JidEditor widget.Editor
PwdEditor widget.Editor
ConnectButton widget.Clickable
+ DisconnectButton widget.Clickable
sessionIn chan<- any
sessionOut chan any
State LimoxState
@@ -63,6 +64,9 @@ func (l *Limox) run() error {
if l.ConnectButton.Clicked() {
l.connectCallback()
}
+ if l.DisconnectButton.Clicked() {
+ l.disconnectCallback()
+ }
l.draw(e)
}
case data := <-l.sessionOut:
@@ -97,3 +101,9 @@ func (l *Limox) connectCallback() {
l.State = Disconnected
}
}
+
+func (l *Limox) disconnectCallback() {
+ c := l.sessionIn
+ go func() { c <- xmpp.SessionShouldDisconnect{} }()
+ l.State = Disconnected
+}