forked from linuxdeepin/dde-daemon
-
Notifications
You must be signed in to change notification settings - Fork 0
/
sync_config.go
54 lines (46 loc) · 1011 Bytes
/
sync_config.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
package inputdevices
import (
"encoding/json"
)
type syncConfig struct {
m *Manager
}
type syncMouseData struct {
NaturalScroll bool `json:"natural_scroll"`
}
type syncTPadData struct {
NaturalScroll bool `json:"natural_scroll"`
}
type syncData struct {
Version string `json:"version"`
Mouse *syncMouseData `json:"mouse"`
Touchpad *syncTPadData `json:"touchpad"`
}
const (
syncVersion = "1.0"
)
func (sc *syncConfig) Get() (interface{}, error) {
return &syncData{
Version: syncVersion,
Mouse: &syncMouseData{
NaturalScroll: sc.m.mouse.NaturalScroll.Get(),
},
Touchpad: &syncTPadData{
NaturalScroll: sc.m.tpad.NaturalScroll.Get(),
},
}, nil
}
func (sc *syncConfig) Set(data []byte) error {
var info syncData
err := json.Unmarshal(data, &info)
if err != nil {
return err
}
if info.Mouse != nil {
sc.m.mouse.NaturalScroll.Set(info.Mouse.NaturalScroll)
}
if info.Touchpad != nil {
sc.m.tpad.NaturalScroll.Set(info.Touchpad.NaturalScroll)
}
return nil
}