-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmain.go
84 lines (68 loc) · 1.83 KB
/
main.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
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
package main
import (
"fmt"
"time"
"github.com/getlantern/systray"
)
func convertConfigToActivityMonitors(config Config) ([]*ActivityMonitor, error) {
activityMonitors := []*ActivityMonitor{}
for i, v := range config.ActivityMonitorConfigs {
maxTimeActivity, errParse1 := time.ParseDuration(v.MaxActivityTime)
if errParse1 != nil {
err := fmt.Errorf("ActivityMonitor config number %d incorrect: Incorrect format for max time activity", i+1)
return nil, err
}
inactivityTime, errParse2 := time.ParseDuration(v.InactivityTime)
if errParse2 != nil {
err := fmt.Errorf("ActivityMonitor config number %d incorrect: Incorrect format for max time activity", i+1)
return nil, err
}
newActivityMonitor := NewActivityMonitor(inactivityTime, maxTimeActivity, v.MessageFormat)
activityMonitors = append(activityMonitors, &newActivityMonitor)
}
return activityMonitors, nil
}
const ENABLE_TEXT = "Enable"
const DISABLE_TEXT = "Disable"
func main() {
config := NewConfig()
err := config.readConfig()
if err != nil {
panic(err)
}
activityMonitors, err := convertConfigToActivityMonitors(config)
if err != nil {
panic(err)
}
eventHandler := NewEventHandler(activityMonitors)
systray.Run(func() {
systray.SetTooltip("Healthy Worker")
systray.SetTitle("Healthy Worker")
mEnable := systray.AddMenuItem("", "")
mQuit := systray.AddMenuItem("Quit", "Quit")
toggleAndSet := func() {
eventHandler.toggle()
if eventHandler.Enabled {
mEnable.SetTitle(DISABLE_TEXT)
mEnable.SetTooltip(DISABLE_TEXT)
} else {
mEnable.SetTitle(ENABLE_TEXT)
mEnable.SetTooltip(ENABLE_TEXT)
}
}
toggleAndSet()
go func() {
for {
select {
case <-mQuit.ClickedCh:
systray.Quit()
return
case <-mEnable.ClickedCh:
toggleAndSet()
}
}
}()
}, func() {
eventHandler.end()
})
}