/
tray.go
56 lines (51 loc) · 1.51 KB
/
tray.go
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
package pkg
import (
"github.com/getlantern/systray"
)
type TrayMenu struct {
ConnectMenuItem *systray.MenuItem
PingMenuItem *systray.MenuItem
QuitMenuItem *systray.MenuItem
OnMenuItem *systray.MenuItem
APIMenuItem *systray.MenuItem
OffMenuItem *systray.MenuItem
}
func (lsd *Lsd) InitTray(cmd string) func() {
return func() {
systray.SetIcon(lsd.GetIcon())
systray.SetTitle("LSD")
systray.SetTooltip("LGTV ShutDown")
lsd.TrayMenu = lsd.GetTrayMenuItems()
go lsd.ListenClick()
}
}
func (lsd *Lsd) GetTrayMenuItems() *TrayMenu {
tm := new(TrayMenu)
tm.ConnectMenuItem = systray.AddMenuItem("Connect", "Connect to the screen")
tm.OnMenuItem = systray.AddMenuItem("TurnOn", "Turn on the screen")
tm.OffMenuItem = systray.AddMenuItem("ShutDown", "Shutdown the damn screen")
tm.PingMenuItem = systray.AddMenuItem("Ping", "Send Ping message to screen")
tm.APIMenuItem = systray.AddMenuItem("ListAPI", "Request a list of TV API")
tm.QuitMenuItem = systray.AddMenuItem("Quit", "Stop lsd service")
return tm
}
func (lsd *Lsd) ListenClick() {
for {
select {
case <-lsd.TrayMenu.ConnectMenuItem.ClickedCh:
lsd.ConnectScreen()
case <-lsd.TrayMenu.OnMenuItem.ClickedCh:
lsd.TurnOnScreen()
case <-lsd.TrayMenu.OffMenuItem.ClickedCh:
lsd.TurnOffScreen()
case <-lsd.TrayMenu.PingMenuItem.ClickedCh:
lsd.PingScreen()
case <-lsd.TrayMenu.APIMenuItem.ClickedCh:
lsd.GetAPIList()
case <-lsd.TrayMenu.QuitMenuItem.ClickedCh:
systray.Quit()
lsd.ExitChann <- true
return
}
}
}