1- using System . Collections . Generic ;
1+ using System ;
2+ using System . Collections . Generic ;
23using Artemis . Core . Modules ;
34using Artemis . MediaInfo . DataModels ;
45using Artemis . MediaInfo . Utils ;
@@ -13,13 +14,20 @@ public class WindowsInfoModule : Module<WindowsInfoDataModel>
1314 @"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\CloudStore\\" +
1415 @"Store\\DefaultAccount\\Current\\default$windows.data.bluelightreduction.bluelightreductionstate\\" +
1516 @"windows.data.bluelightreduction.bluelightreductionstate" , "Data" ) ;
17+ private readonly RegistryWatcher _nightLightSettingsWatcher = new ( WatchedRegistry . CurrentUser ,
18+ @"SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\CloudStore\\" +
19+ @"Store\\DefaultAccount\\Current\\default$windows.data.bluelightreduction.settings\\" +
20+ @"windows.data.bluelightreduction.settings" , "Data" ) ;
1621 private readonly RegistryWatcher _accentColorWatcher = new ( WatchedRegistry . CurrentUser ,
1722 @"SOFTWARE\\Microsoft\\Windows\\DWM" , "AccentColor" ) ;
1823
1924 public override void Enable ( )
2025 {
2126 _nightLightStateWatcher . RegistryChanged += UpdateNightLight ;
2227 _nightLightStateWatcher . StartWatching ( ) ;
28+
29+ _nightLightSettingsWatcher . RegistryChanged += NightLightSettingsWatcherOnRegistryChanged ;
30+ _nightLightSettingsWatcher . StartWatching ( ) ;
2331
2432 _accentColorWatcher . RegistryChanged += UpdateAccentColor ;
2533 _accentColorWatcher . StartWatching ( ) ;
@@ -86,6 +94,19 @@ private void UpdateAccentColor(object? sender, RegistryChangedEventArgs registry
8694 }
8795 }
8896
97+ private void NightLightSettingsWatcherOnRegistryChanged ( object ? sender , RegistryChangedEventArgs e )
98+ {
99+ var data = e . Data ;
100+ if ( data is null )
101+ {
102+ DataModel . NightLightsStrength = 0 ;
103+ return ;
104+ }
105+
106+ var byteData = ( byte [ ] ) data ;
107+ DataModel . NightLightsStrength = ParseNightLightStrength ( byteData ) ;
108+ }
109+
89110 private static SKColor ParseDWordColor ( int color )
90111 {
91112 var a = ( byte ) ( ( color >> 24 ) & 0xFF ) ;
@@ -95,4 +116,12 @@ private static SKColor ParseDWordColor(int color)
95116
96117 return new SKColor ( r , g , b , a ) ;
97118 }
119+
120+ private static double ParseNightLightStrength ( byte [ ] data )
121+ {
122+ const int min = 4832 ;
123+ const int max = 26056 ;
124+ var value = BitConverter . ToInt16 ( data , 35 ) ;
125+ return 1 - ( double ) ( value - min ) / ( max - min ) ;
126+ }
98127}
0 commit comments