From 45c7acfd95fcaaaa4ed0ab5445ebeded32e3f154 Mon Sep 17 00:00:00 2001 From: Artem Yurchenko Date: Tue, 8 Dec 2020 15:18:34 +0100 Subject: [PATCH 1/9] Sleep mode controller tab was added; SleepModeController class was added --- MainWindow.xaml | 46 ++++++++++++++++++++----- WMR USB Controller.csproj | 1 + YUART/Sleep Mode/SleepModeController.cs | 10 ++++++ 3 files changed, 48 insertions(+), 9 deletions(-) create mode 100644 YUART/Sleep Mode/SleepModeController.cs diff --git a/MainWindow.xaml b/MainWindow.xaml index 6ed68ae..8670868 100644 --- a/MainWindow.xaml +++ b/MainWindow.xaml @@ -8,14 +8,42 @@ Title="WMR USB Controller" Height="512" Width="512" - Icon="WMR USB Controller Main Icon.ico" - Background="#FF5B5B5B"> + Icon="WMR USB Controller Main Icon.ico"> - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + \ No newline at end of file diff --git a/WMR USB Controller.csproj b/WMR USB Controller.csproj index 55ffc87..5941da9 100644 --- a/WMR USB Controller.csproj +++ b/WMR USB Controller.csproj @@ -61,6 +61,7 @@ Designer + diff --git a/YUART/Sleep Mode/SleepModeController.cs b/YUART/Sleep Mode/SleepModeController.cs new file mode 100644 index 0000000..68867c2 --- /dev/null +++ b/YUART/Sleep Mode/SleepModeController.cs @@ -0,0 +1,10 @@ +namespace WMR_USB_Controller.YUART.Sleep_Mode +{ + /// + /// Class, that provide controls for sleep mode of WMR. + /// + public sealed class SleepModeController + { + + } +} \ No newline at end of file From 5881ba2c0bd65de18f983aee4414e491420a490a Mon Sep 17 00:00:00 2001 From: Artem Yurchenko Date: Tue, 8 Dec 2020 15:45:59 +0100 Subject: [PATCH 2/9] Setup value for sleep delay was added --- MainWindow.xaml.cs | 11 +++++- WMR USB Controller.csproj | 3 +- YUART/Autostart/AutostartManager.cs | 5 ++- YUART/Sleep Mode/SleepModeController.cs | 10 ------ YUART/Sleep Mode/SleepModeManager.cs | 47 +++++++++++++++++++++++++ YUART/Utilities/RegkeyChecker.cs | 15 ++++++++ 6 files changed, 76 insertions(+), 15 deletions(-) delete mode 100644 YUART/Sleep Mode/SleepModeController.cs create mode 100644 YUART/Sleep Mode/SleepModeManager.cs create mode 100644 YUART/Utilities/RegkeyChecker.cs diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index 8c226cb..3c3cb76 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -1,6 +1,7 @@ using System; using System.Windows; using WMR_USB_Controller.YUART.Autostart; +using WMR_USB_Controller.YUART.Sleep_Mode; using WMR_USB_Controller.YUART.Tray_Icon; using WMR_USB_Controller.YUART.USB; @@ -15,6 +16,7 @@ public partial class MainWindow private AutostartManager _autostartManager; private TrayIconManager _trayIconManager; + private SleepModeManager _sleepModeManager; public MainWindow() { @@ -22,7 +24,8 @@ public MainWindow() SetupTrayIconManager(); SetupAutostartManager(); - + SetupSleepModeManager(); + _usbDevicesManager.Initialize(); DisableWmrDeviceOnStartup(); @@ -40,6 +43,12 @@ private void SetupAutostartManager() _autostartManager.Initialize(); } + private void SetupSleepModeManager() + { + _sleepModeManager = new SleepModeManager(SleepDelayValue); + _sleepModeManager.Initialize(); + } + private void DisableWmrDeviceOnStartup() { ChangeWmrDeviceState(false); diff --git a/WMR USB Controller.csproj b/WMR USB Controller.csproj index 5941da9..9035c41 100644 --- a/WMR USB Controller.csproj +++ b/WMR USB Controller.csproj @@ -61,9 +61,10 @@ Designer - + + MSBuild:Compile Designer diff --git a/YUART/Autostart/AutostartManager.cs b/YUART/Autostart/AutostartManager.cs index 45d5dea..b12c2c1 100644 --- a/YUART/Autostart/AutostartManager.cs +++ b/YUART/Autostart/AutostartManager.cs @@ -1,5 +1,6 @@ using System.Windows.Controls; using Microsoft.Win32; +using WMR_USB_Controller.YUART.Utilities; using Application = System.Windows.Application; namespace WMR_USB_Controller.YUART.Autostart @@ -41,9 +42,7 @@ private void SetAutostartCheckboxValue() { if (_autostartCheckbox.IsChecked == null) return; - var startupAutostartValue = _autostartRegKey.GetValue(_appName); - - _autostartCheckbox.IsChecked = startupAutostartValue != null; + _autostartCheckbox.IsChecked = _autostartRegKey.IsExists(_appName); } /// diff --git a/YUART/Sleep Mode/SleepModeController.cs b/YUART/Sleep Mode/SleepModeController.cs deleted file mode 100644 index 68867c2..0000000 --- a/YUART/Sleep Mode/SleepModeController.cs +++ /dev/null @@ -1,10 +0,0 @@ -namespace WMR_USB_Controller.YUART.Sleep_Mode -{ - /// - /// Class, that provide controls for sleep mode of WMR. - /// - public sealed class SleepModeController - { - - } -} \ No newline at end of file diff --git a/YUART/Sleep Mode/SleepModeManager.cs b/YUART/Sleep Mode/SleepModeManager.cs new file mode 100644 index 0000000..5fbcfbd --- /dev/null +++ b/YUART/Sleep Mode/SleepModeManager.cs @@ -0,0 +1,47 @@ +using System; +using System.Windows.Controls; +using Microsoft.Win32; +using WMR_USB_Controller.YUART.Utilities; + +namespace WMR_USB_Controller.YUART.Sleep_Mode +{ + /// + /// Class, that provide controls for sleep mode of WMR. + /// + public sealed class SleepModeManager + { + private const string PathToHololensRegKeys = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Holographic"; + private const string SleepDelayRegkeyName = "IdleTimerDuration"; + private const string ScreensaverModeRegkeyName = "ScreensaverModeEnabled"; + private const double MillisecondsInMinute = 60000d; + + private readonly RegistryKey _hololensRegKey = Registry.CurrentUser.OpenSubKey(PathToHololensRegKeys, true); + private readonly Label _sleepDelayValueLabel; + private readonly Label _screensaverModeStatusLabel; + + public SleepModeManager(Label sleepDelayValueLabel) + { + _sleepDelayValueLabel = sleepDelayValueLabel; + } + + /// + /// Initialize class and set startup UI values + /// + public void Initialize() + { + SetCurrentSleepDelayValue(); + } + + private void SetCurrentSleepDelayValue() + { + _sleepDelayValueLabel.Content = $"{(_hololensRegKey.IsExists(SleepDelayRegkeyName) ? ConvertMillisecondsIntoMinutes((int)_hololensRegKey.GetValue(SleepDelayRegkeyName)) : 15).ToString()} minutes"; + } + + private int ConvertMillisecondsIntoMinutes(int milliseconds) + { + return Convert.ToInt32(Math.Round(milliseconds / MillisecondsInMinute)); + } + + + } +} \ No newline at end of file diff --git a/YUART/Utilities/RegkeyChecker.cs b/YUART/Utilities/RegkeyChecker.cs new file mode 100644 index 0000000..3e5d7fa --- /dev/null +++ b/YUART/Utilities/RegkeyChecker.cs @@ -0,0 +1,15 @@ +using Microsoft.Win32; + +namespace WMR_USB_Controller.YUART.Utilities +{ + /// + /// Class, that provides method to check regkeys. + /// + public static class RegkeyChecker + { + public static bool IsExists(this RegistryKey regkey, string keyName) + { + return regkey.GetValue(keyName) != null; + } + } +} \ No newline at end of file From f7cede253df357c884ba64cd13a409048d5206f6 Mon Sep 17 00:00:00 2001 From: Artem Yurchenko Date: Tue, 8 Dec 2020 15:50:34 +0100 Subject: [PATCH 3/9] Setup value for screensaver mode was added --- MainWindow.xaml.cs | 2 +- YUART/Sleep Mode/SleepModeManager.cs | 16 +++++++++++++--- 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index 3c3cb76..5f1a9bc 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -45,7 +45,7 @@ private void SetupAutostartManager() private void SetupSleepModeManager() { - _sleepModeManager = new SleepModeManager(SleepDelayValue); + _sleepModeManager = new SleepModeManager(SleepDelayValue, ScreensaverModeStatus); _sleepModeManager.Initialize(); } diff --git a/YUART/Sleep Mode/SleepModeManager.cs b/YUART/Sleep Mode/SleepModeManager.cs index 5fbcfbd..0809c46 100644 --- a/YUART/Sleep Mode/SleepModeManager.cs +++ b/YUART/Sleep Mode/SleepModeManager.cs @@ -19,9 +19,10 @@ public sealed class SleepModeManager private readonly Label _sleepDelayValueLabel; private readonly Label _screensaverModeStatusLabel; - public SleepModeManager(Label sleepDelayValueLabel) + public SleepModeManager(Label sleepDelayValueLabel, Label screensaverModeStatusLabel) { _sleepDelayValueLabel = sleepDelayValueLabel; + _screensaverModeStatusLabel = screensaverModeStatusLabel; } /// @@ -30,6 +31,7 @@ public SleepModeManager(Label sleepDelayValueLabel) public void Initialize() { SetCurrentSleepDelayValue(); + SetCurrentScreensaverModeStatus(); } private void SetCurrentSleepDelayValue() @@ -41,7 +43,15 @@ private int ConvertMillisecondsIntoMinutes(int milliseconds) { return Convert.ToInt32(Math.Round(milliseconds / MillisecondsInMinute)); } - - + + private void SetCurrentScreensaverModeStatus() + { + _screensaverModeStatusLabel.Content = _hololensRegKey.IsExists(SleepDelayRegkeyName) ? ConvertIntIntoBool((int) _hololensRegKey.GetValue(ScreensaverModeRegkeyName)) : false; + } + + private bool ConvertIntIntoBool(int value) + { + return value == 1; + } } } \ No newline at end of file From 60b9e23d775f028f2283f5bfb7b8ab33f2ffa05f Mon Sep 17 00:00:00 2001 From: Artem Yurchenko Date: Tue, 8 Dec 2020 16:01:01 +0100 Subject: [PATCH 4/9] Input field for sleep delay was added --- MainWindow.xaml | 10 ++++++---- MainWindow.xaml.cs | 8 ++++++++ 2 files changed, 14 insertions(+), 4 deletions(-) diff --git a/MainWindow.xaml b/MainWindow.xaml index 8670868..a9919be 100644 --- a/MainWindow.xaml +++ b/MainWindow.xaml @@ -29,18 +29,20 @@ - + + + - - + + - + diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index 5f1a9bc..3dfaf8d 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -1,5 +1,7 @@ using System; +using System.Text.RegularExpressions; using System.Windows; +using System.Windows.Input; using WMR_USB_Controller.YUART.Autostart; using WMR_USB_Controller.YUART.Sleep_Mode; using WMR_USB_Controller.YUART.Tray_Icon; @@ -90,5 +92,11 @@ private void SwitchAutostartStatus(object sender, RoutedEventArgs e) { _autostartManager.SetToAutostart(); } + + private void NumberValidationTextBox(object sender, TextCompositionEventArgs e) + { + var regex = new Regex("[^0-9]+"); + e.Handled = regex.IsMatch(e.Text); + } } } From 15c4256e753484ab963378d8ee05d9bc21f9a0dc Mon Sep 17 00:00:00 2001 From: Artem Yurchenko Date: Tue, 8 Dec 2020 16:14:44 +0100 Subject: [PATCH 5/9] Functions to set new sleep delay for headset was implemented --- MainWindow.xaml | 2 +- MainWindow.xaml.cs | 9 +++++++++ WMR USB Controller.csproj | 1 + YUART/Autostart/AutostartManager.cs | 2 +- YUART/Sleep Mode/SleepModeManager.cs | 21 +++++++++++++-------- YUART/Utilities/TimeConverter.cs | 22 ++++++++++++++++++++++ 6 files changed, 47 insertions(+), 10 deletions(-) create mode 100644 YUART/Utilities/TimeConverter.cs diff --git a/MainWindow.xaml b/MainWindow.xaml index a9919be..eaa510c 100644 --- a/MainWindow.xaml +++ b/MainWindow.xaml @@ -32,7 +32,7 @@ - + diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index 3dfaf8d..1799606 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -98,5 +98,14 @@ private void NumberValidationTextBox(object sender, TextCompositionEventArgs e) var regex = new Regex("[^0-9]+"); e.Handled = regex.IsMatch(e.Text); } + + private void TrySetNewSleepDelayValue(object sender, KeyEventArgs e) + { + if (e.Key != Key.Enter) return; + + _sleepModeManager.SetNewSleepDelay(Int32.Parse(SleepDelayInputField.Text)); + + SleepDelayInputField.Text = String.Empty; + } } } diff --git a/WMR USB Controller.csproj b/WMR USB Controller.csproj index 9035c41..eedd2e2 100644 --- a/WMR USB Controller.csproj +++ b/WMR USB Controller.csproj @@ -65,6 +65,7 @@ + MSBuild:Compile Designer diff --git a/YUART/Autostart/AutostartManager.cs b/YUART/Autostart/AutostartManager.cs index b12c2c1..8c2aa98 100644 --- a/YUART/Autostart/AutostartManager.cs +++ b/YUART/Autostart/AutostartManager.cs @@ -50,7 +50,7 @@ private void SetAutostartCheckboxValue() /// public void SetToAutostart() { - if (_autostartCheckbox.IsChecked == null || _autostartRegKey == null) return; + if (_autostartCheckbox.IsChecked == null) return; if (_autostartCheckbox.IsChecked.Value) { diff --git a/YUART/Sleep Mode/SleepModeManager.cs b/YUART/Sleep Mode/SleepModeManager.cs index 0809c46..a29bd26 100644 --- a/YUART/Sleep Mode/SleepModeManager.cs +++ b/YUART/Sleep Mode/SleepModeManager.cs @@ -13,8 +13,7 @@ public sealed class SleepModeManager private const string PathToHololensRegKeys = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Holographic"; private const string SleepDelayRegkeyName = "IdleTimerDuration"; private const string ScreensaverModeRegkeyName = "ScreensaverModeEnabled"; - private const double MillisecondsInMinute = 60000d; - + private readonly RegistryKey _hololensRegKey = Registry.CurrentUser.OpenSubKey(PathToHololensRegKeys, true); private readonly Label _sleepDelayValueLabel; private readonly Label _screensaverModeStatusLabel; @@ -36,12 +35,7 @@ public void Initialize() private void SetCurrentSleepDelayValue() { - _sleepDelayValueLabel.Content = $"{(_hololensRegKey.IsExists(SleepDelayRegkeyName) ? ConvertMillisecondsIntoMinutes((int)_hololensRegKey.GetValue(SleepDelayRegkeyName)) : 15).ToString()} minutes"; - } - - private int ConvertMillisecondsIntoMinutes(int milliseconds) - { - return Convert.ToInt32(Math.Round(milliseconds / MillisecondsInMinute)); + _sleepDelayValueLabel.Content = $"{(_hololensRegKey.IsExists(SleepDelayRegkeyName) ? TimeConverter.ConvertMillisecondsIntoMinutes((int)_hololensRegKey.GetValue(SleepDelayRegkeyName)) : 15).ToString()} minutes"; } private void SetCurrentScreensaverModeStatus() @@ -53,5 +47,16 @@ private bool ConvertIntIntoBool(int value) { return value == 1; } + + /// + /// Set new value to regkey of sleep delay for WMR. + /// + /// New value of the sleep delay in minutes. + public void SetNewSleepDelay(int newDelayInMinutes) + { + _hololensRegKey.SetValue(SleepDelayRegkeyName, TimeConverter.ConvertMinutesIntoMilliseconds(newDelayInMinutes)); + + SetCurrentSleepDelayValue(); + } } } \ No newline at end of file diff --git a/YUART/Utilities/TimeConverter.cs b/YUART/Utilities/TimeConverter.cs new file mode 100644 index 0000000..7d2b713 --- /dev/null +++ b/YUART/Utilities/TimeConverter.cs @@ -0,0 +1,22 @@ +using System; + +namespace WMR_USB_Controller.YUART.Utilities +{ + /// + /// Class, that handles methods for time conversion. + /// + public static class TimeConverter + { + private const double MillisecondsInMinute = 60000d; + + public static int ConvertMillisecondsIntoMinutes(int milliseconds) + { + return Convert.ToInt32(Math.Round(milliseconds / MillisecondsInMinute)); + } + + public static int ConvertMinutesIntoMilliseconds(int minutes) + { + return Convert.ToInt32(minutes * MillisecondsInMinute); + } + } +} \ No newline at end of file From 2787a46a4c29911b262dfd3daaa7011354e0a92e Mon Sep 17 00:00:00 2001 From: Artem Yurchenko Date: Tue, 8 Dec 2020 16:31:47 +0100 Subject: [PATCH 6/9] Screensaver Toggle behaviour was implemented --- MainWindow.xaml | 6 +++--- MainWindow.xaml.cs | 10 ++++++++++ YUART/Sleep Mode/SleepModeManager.cs | 13 ++++++++++++- 3 files changed, 25 insertions(+), 4 deletions(-) diff --git a/MainWindow.xaml b/MainWindow.xaml index eaa510c..bed6114 100644 --- a/MainWindow.xaml +++ b/MainWindow.xaml @@ -29,14 +29,14 @@ - + - + - + diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index 1799606..7a26e3f 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -107,5 +107,15 @@ private void TrySetNewSleepDelayValue(object sender, KeyEventArgs e) SleepDelayInputField.Text = String.Empty; } + + private void EnableScreensaverMode(object sender, RoutedEventArgs e) + { + _sleepModeManager.SetScreensaverModeStatus(true); + } + + private void DisableScreensaverMode(object sender, RoutedEventArgs e) + { + _sleepModeManager.SetScreensaverModeStatus(false); + } } } diff --git a/YUART/Sleep Mode/SleepModeManager.cs b/YUART/Sleep Mode/SleepModeManager.cs index a29bd26..f9c5483 100644 --- a/YUART/Sleep Mode/SleepModeManager.cs +++ b/YUART/Sleep Mode/SleepModeManager.cs @@ -40,7 +40,7 @@ private void SetCurrentSleepDelayValue() private void SetCurrentScreensaverModeStatus() { - _screensaverModeStatusLabel.Content = _hololensRegKey.IsExists(SleepDelayRegkeyName) ? ConvertIntIntoBool((int) _hololensRegKey.GetValue(ScreensaverModeRegkeyName)) : false; + _screensaverModeStatusLabel.Content = _hololensRegKey.IsExists(ScreensaverModeRegkeyName) && ConvertIntIntoBool((int) _hololensRegKey.GetValue(ScreensaverModeRegkeyName)); } private bool ConvertIntIntoBool(int value) @@ -58,5 +58,16 @@ public void SetNewSleepDelay(int newDelayInMinutes) SetCurrentSleepDelayValue(); } + + /// + /// Set new value for screensaver regkey. + /// + /// New status (on/off) + public void SetScreensaverModeStatus(bool newStatus) + { + _hololensRegKey.SetValue(ScreensaverModeRegkeyName, newStatus ? 1 : 0); + + SetCurrentScreensaverModeStatus(); + } } } \ No newline at end of file From 6c3b3c7cc0fd5f0ac373f5469ac0f320c0acc1f9 Mon Sep 17 00:00:00 2001 From: Artem Yurchenko Date: Tue, 8 Dec 2020 16:39:03 +0100 Subject: [PATCH 7/9] Behaviour for ResetSleepMode settings was implemented --- MainWindow.xaml | 2 +- MainWindow.xaml.cs | 5 +++++ YUART/Sleep Mode/SleepModeManager.cs | 19 ++++++++++++++++++- 3 files changed, 24 insertions(+), 2 deletions(-) diff --git a/MainWindow.xaml b/MainWindow.xaml index bed6114..c5422bc 100644 --- a/MainWindow.xaml +++ b/MainWindow.xaml @@ -42,7 +42,7 @@ - + diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index 7a26e3f..0d7174b 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -117,5 +117,10 @@ private void DisableScreensaverMode(object sender, RoutedEventArgs e) { _sleepModeManager.SetScreensaverModeStatus(false); } + + private void ResetSleepModeValues(object sender, RoutedEventArgs e) + { + _sleepModeManager.ResetSleepModeValues(); + } } } diff --git a/YUART/Sleep Mode/SleepModeManager.cs b/YUART/Sleep Mode/SleepModeManager.cs index f9c5483..76e1fed 100644 --- a/YUART/Sleep Mode/SleepModeManager.cs +++ b/YUART/Sleep Mode/SleepModeManager.cs @@ -13,6 +13,7 @@ public sealed class SleepModeManager private const string PathToHololensRegKeys = "SOFTWARE\\Microsoft\\Windows\\CurrentVersion\\Holographic"; private const string SleepDelayRegkeyName = "IdleTimerDuration"; private const string ScreensaverModeRegkeyName = "ScreensaverModeEnabled"; + private const int DefaultSleepDelay = 15; private readonly RegistryKey _hololensRegKey = Registry.CurrentUser.OpenSubKey(PathToHololensRegKeys, true); private readonly Label _sleepDelayValueLabel; @@ -28,6 +29,11 @@ public SleepModeManager(Label sleepDelayValueLabel, Label screensaverModeStatusL /// Initialize class and set startup UI values /// public void Initialize() + { + UpdateLabelsValues(); + } + + private void UpdateLabelsValues() { SetCurrentSleepDelayValue(); SetCurrentScreensaverModeStatus(); @@ -35,7 +41,7 @@ public void Initialize() private void SetCurrentSleepDelayValue() { - _sleepDelayValueLabel.Content = $"{(_hololensRegKey.IsExists(SleepDelayRegkeyName) ? TimeConverter.ConvertMillisecondsIntoMinutes((int)_hololensRegKey.GetValue(SleepDelayRegkeyName)) : 15).ToString()} minutes"; + _sleepDelayValueLabel.Content = $"{(_hololensRegKey.IsExists(SleepDelayRegkeyName) ? TimeConverter.ConvertMillisecondsIntoMinutes((int) _hololensRegKey.GetValue(SleepDelayRegkeyName)) : DefaultSleepDelay).ToString()} minutes"; } private void SetCurrentScreensaverModeStatus() @@ -69,5 +75,16 @@ public void SetScreensaverModeStatus(bool newStatus) SetCurrentScreensaverModeStatus(); } + + /// + /// Reset sleep delay value and screensaver mode value (this function will delete keys from the registry) + /// + public void ResetSleepModeValues() + { + _hololensRegKey.DeleteValue(SleepDelayRegkeyName); + _hololensRegKey.DeleteValue(ScreensaverModeRegkeyName); + + UpdateLabelsValues(); + } } } \ No newline at end of file From 19fa106d5fa8e3dbe16b63ab1077cfec73b98d94 Mon Sep 17 00:00:00 2001 From: Artem Yurchenko Date: Tue, 8 Dec 2020 16:41:42 +0100 Subject: [PATCH 8/9] IntBoolConverter was added --- WMR USB Controller.csproj | 1 + YUART/Sleep Mode/SleepModeManager.cs | 9 ++------- YUART/Utilities/IntBoolConverter.cs | 18 ++++++++++++++++++ 3 files changed, 21 insertions(+), 7 deletions(-) create mode 100644 YUART/Utilities/IntBoolConverter.cs diff --git a/WMR USB Controller.csproj b/WMR USB Controller.csproj index eedd2e2..c02ee1a 100644 --- a/WMR USB Controller.csproj +++ b/WMR USB Controller.csproj @@ -64,6 +64,7 @@ + diff --git a/YUART/Sleep Mode/SleepModeManager.cs b/YUART/Sleep Mode/SleepModeManager.cs index 76e1fed..a3943b3 100644 --- a/YUART/Sleep Mode/SleepModeManager.cs +++ b/YUART/Sleep Mode/SleepModeManager.cs @@ -46,12 +46,7 @@ private void SetCurrentSleepDelayValue() private void SetCurrentScreensaverModeStatus() { - _screensaverModeStatusLabel.Content = _hololensRegKey.IsExists(ScreensaverModeRegkeyName) && ConvertIntIntoBool((int) _hololensRegKey.GetValue(ScreensaverModeRegkeyName)); - } - - private bool ConvertIntIntoBool(int value) - { - return value == 1; + _screensaverModeStatusLabel.Content = _hololensRegKey.IsExists(ScreensaverModeRegkeyName) && ((int) _hololensRegKey.GetValue(ScreensaverModeRegkeyName)).ConvertIntToBool(); } /// @@ -71,7 +66,7 @@ public void SetNewSleepDelay(int newDelayInMinutes) /// New status (on/off) public void SetScreensaverModeStatus(bool newStatus) { - _hololensRegKey.SetValue(ScreensaverModeRegkeyName, newStatus ? 1 : 0); + _hololensRegKey.SetValue(ScreensaverModeRegkeyName, newStatus.ConvertBoolToInt()); SetCurrentScreensaverModeStatus(); } diff --git a/YUART/Utilities/IntBoolConverter.cs b/YUART/Utilities/IntBoolConverter.cs new file mode 100644 index 0000000..8f0f392 --- /dev/null +++ b/YUART/Utilities/IntBoolConverter.cs @@ -0,0 +1,18 @@ +namespace WMR_USB_Controller.YUART.Utilities +{ + /// + /// Class, that provides tools for int-bool conversion. + /// + public static class IntBoolConverter + { + public static bool ConvertIntToBool(this int value) + { + return value == 1; + } + + public static int ConvertBoolToInt(this bool value) + { + return value ? 1 : 0; + } + } +} \ No newline at end of file From 391e3784b7bc1aec27ecd867b45d7e3a21f27828 Mon Sep 17 00:00:00 2001 From: Artem Yurchenko Date: Tue, 8 Dec 2020 16:51:13 +0100 Subject: [PATCH 9/9] Controls of screensaver mode checkbox were impmented --- MainWindow.xaml | 2 +- MainWindow.xaml.cs | 2 +- YUART/Sleep Mode/SleepModeManager.cs | 31 +++++++++++++++++++++++----- 3 files changed, 28 insertions(+), 7 deletions(-) diff --git a/MainWindow.xaml b/MainWindow.xaml index c5422bc..6ffb200 100644 --- a/MainWindow.xaml +++ b/MainWindow.xaml @@ -36,7 +36,7 @@ - + diff --git a/MainWindow.xaml.cs b/MainWindow.xaml.cs index 0d7174b..a0a6ff3 100644 --- a/MainWindow.xaml.cs +++ b/MainWindow.xaml.cs @@ -47,7 +47,7 @@ private void SetupAutostartManager() private void SetupSleepModeManager() { - _sleepModeManager = new SleepModeManager(SleepDelayValue, ScreensaverModeStatus); + _sleepModeManager = new SleepModeManager(SleepDelayValue, ScreensaverModeStatus, ScreensaverModeStatusCheckbox); _sleepModeManager.Initialize(); } diff --git a/YUART/Sleep Mode/SleepModeManager.cs b/YUART/Sleep Mode/SleepModeManager.cs index a3943b3..c0f7fed 100644 --- a/YUART/Sleep Mode/SleepModeManager.cs +++ b/YUART/Sleep Mode/SleepModeManager.cs @@ -18,11 +18,13 @@ public sealed class SleepModeManager private readonly RegistryKey _hololensRegKey = Registry.CurrentUser.OpenSubKey(PathToHololensRegKeys, true); private readonly Label _sleepDelayValueLabel; private readonly Label _screensaverModeStatusLabel; + private readonly CheckBox _screensaverModeCheckbox; - public SleepModeManager(Label sleepDelayValueLabel, Label screensaverModeStatusLabel) + public SleepModeManager(Label sleepDelayValueLabel, Label screensaverModeStatusLabel, CheckBox screensaverModeCheckbox) { _sleepDelayValueLabel = sleepDelayValueLabel; _screensaverModeStatusLabel = screensaverModeStatusLabel; + _screensaverModeCheckbox = screensaverModeCheckbox; } /// @@ -30,9 +32,16 @@ public SleepModeManager(Label sleepDelayValueLabel, Label screensaverModeStatusL /// public void Initialize() { - UpdateLabelsValues(); + UpdateUiValues(); } + private void UpdateUiValues() + { + UpdateLabelsValues(); + + SetScreensaverModeCheckboxValue(); + } + private void UpdateLabelsValues() { SetCurrentSleepDelayValue(); @@ -46,7 +55,19 @@ private void SetCurrentSleepDelayValue() private void SetCurrentScreensaverModeStatus() { - _screensaverModeStatusLabel.Content = _hololensRegKey.IsExists(ScreensaverModeRegkeyName) && ((int) _hololensRegKey.GetValue(ScreensaverModeRegkeyName)).ConvertIntToBool(); + _screensaverModeStatusLabel.Content = GetCurrentScreensaverModeStatusFromRegistry(); + } + + private void SetScreensaverModeCheckboxValue() + { + if (_screensaverModeCheckbox.IsChecked == null) return; + + _screensaverModeCheckbox.IsChecked = GetCurrentScreensaverModeStatusFromRegistry(); + } + + private bool GetCurrentScreensaverModeStatusFromRegistry() + { + return _hololensRegKey.IsExists(ScreensaverModeRegkeyName) && ((int) _hololensRegKey.GetValue(ScreensaverModeRegkeyName)).ConvertIntToBool(); } /// @@ -78,8 +99,8 @@ public void ResetSleepModeValues() { _hololensRegKey.DeleteValue(SleepDelayRegkeyName); _hololensRegKey.DeleteValue(ScreensaverModeRegkeyName); - - UpdateLabelsValues(); + + UpdateUiValues(); } } } \ No newline at end of file