Skip to content

Commit 1820b80

Browse files
fly602deepin-bot[bot]
authored andcommitted
feat: 支持插件设置护眼模式
插件设置护眼模式开关,控制中心色温做联动; 本地保存色温开启时的配置,以供护眼模式使能时恢复配置
1 parent d71a900 commit 1820b80

3 files changed

Lines changed: 36 additions & 0 deletions

File tree

display/color_temp.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -238,6 +238,9 @@ func (m *Manager) saveColorTempValueInCfg(value int32) {
238238
func (m *Manager) saveColorTempModeInCfg(mode int32) {
239239
m.modifySuitableUserMonitorModeConfig(func(cfg *UserMonitorModeConfig) {
240240
cfg.ColorTemperatureMode = mode
241+
if cfg.ColorTemperatureMode != ColorTemperatureModeNone {
242+
cfg.ColorTemperatureModeOn = cfg.ColorTemperatureMode
243+
}
241244
})
242245
err := m.saveUserConfig()
243246
if err != nil {

display/display.go

Lines changed: 27 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -100,6 +100,33 @@ func Start(service *dbusutil.Service) error {
100100
if err != nil {
101101
return err
102102
}
103+
so := service.GetServerObject(m)
104+
if so != nil {
105+
err = so.SetWriteCallback(m, "ColorTemperatureEnabled", func(write *dbusutil.PropertyWrite) *dbus.Error {
106+
value, ok := write.Value.(bool)
107+
if !ok {
108+
err = errors.New("Type is not bool")
109+
logger.Warning(err)
110+
return dbusutil.ToError(err)
111+
}
112+
ok = m.setPropColorTemperatureEnabled(value)
113+
if !ok {
114+
err = errors.New("Set ColorTemperatureEnabled failed!")
115+
logger.Warning(err)
116+
return dbusutil.ToError(err)
117+
}
118+
cfg := m.getSuitableUserMonitorModeConfig(m.DisplayMode)
119+
if cfg == nil {
120+
cfg = getDefaultUserMonitorModeConfig()
121+
}
122+
mode := ColorTemperatureModeNone
123+
if value {
124+
mode = cfg.ColorTemperatureModeOn
125+
}
126+
err = m.setColorTempMode(mode)
127+
return dbusutil.ToError(err)
128+
})
129+
}
103130

104131
err = service.RequestName(dbusServiceName)
105132
if err != nil {

display/displayconf.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -72,6 +72,7 @@ const (
7272
type UserMonitorModeConfig struct {
7373
ColorTemperatureMode int32
7474
ColorTemperatureManual int32
75+
ColorTemperatureModeOn int32 //记录用户开启色温时的模式
7576
// 以后如果有必要
7677
// Monitors UserMonitorConfigs
7778
}
@@ -83,6 +84,9 @@ func (c *UserMonitorModeConfig) fix() {
8384
if !isValidColorTempValue(c.ColorTemperatureManual) {
8485
c.ColorTemperatureManual = defaultTemperatureManual
8586
}
87+
if c.ColorTemperatureMode != ColorTemperatureModeNone {
88+
c.ColorTemperatureModeOn = c.ColorTemperatureMode
89+
}
8690
}
8791

8892
func (c *UserMonitorModeConfig) clone() *UserMonitorModeConfig {
@@ -97,6 +101,8 @@ func getDefaultUserMonitorModeConfig() *UserMonitorModeConfig {
97101
return &UserMonitorModeConfig{
98102
ColorTemperatureMode: defaultTemperatureMode,
99103
ColorTemperatureManual: defaultTemperatureManual,
104+
// TODO: 如果配置缺失,需要一个色温使能的模式
105+
ColorTemperatureModeOn: ColorTemperatureModeAuto,
100106
}
101107
}
102108

0 commit comments

Comments
 (0)