1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79
|
package gui
import "github.com/twstrike/coyim/client"
type executable interface {
execute(u *gtkUI)
}
type connectAccountCmd struct{ a *account }
type disconnectAccountCmd struct{ a *account }
type connectionInfoCmd struct{ a *account }
type editAccountCmd struct{ a *account }
type removeAccountCmd struct{ a *account }
type toggleAutoConnectCmd struct{ a *account }
type toggleAlwaysEncryptCmd struct{ a *account }
func (u *gtkUI) ExecuteCmd(c interface{}) {
u.commands <- c
}
func (c connectAccountCmd) execute(u *gtkUI) {
doInUIThread(func() {
u.connectAccount(c.a)
})
}
func (c disconnectAccountCmd) execute(u *gtkUI) {
go c.a.session.Close()
}
func (c connectionInfoCmd) execute(u *gtkUI) {
doInUIThread(func() {
u.connectionInfoDialog(c.a)
})
}
func (c editAccountCmd) execute(u *gtkUI) {
doInUIThread(func() {
u.editAccount(c.a)
})
}
func (c removeAccountCmd) execute(u *gtkUI) {
doInUIThread(func() {
u.removeAccount(c.a)
})
}
func (c toggleAutoConnectCmd) execute(u *gtkUI) {
go u.toggleAutoConnectAccount(c.a)
}
func (c toggleAlwaysEncryptCmd) execute(u *gtkUI) {
go u.toggleAlwaysEncryptAccount(c.a)
}
func (u *gtkUI) watchCommands() {
for command := range u.commands {
switch c := command.(type) {
case executable:
c.execute(u)
case client.AuthorizeFingerprintCmd:
account := c.Account
uid := c.Peer
fpr := c.Fingerprint
//TODO: it could be a different pointer,
//find the account by ID()
account.AuthorizeFingerprint(uid, fpr)
u.ExecuteCmd(client.SaveApplicationConfigCmd{})
case client.SaveInstanceTagCmd:
account := c.Account
account.InstanceTag = c.InstanceTag
u.ExecuteCmd(client.SaveApplicationConfigCmd{})
case client.SaveApplicationConfigCmd:
u.SaveConfig()
}
}
}
|