From 25f842df9da8e799f5d85c55b0ce7a610c40eda2 Mon Sep 17 00:00:00 2001 From: IceStormNG Date: Fri, 21 Jul 2023 15:38:26 +0200 Subject: [PATCH 1/5] Only touch power settings if the user checks the box. But always disable the changes back to the defaults when the user unchecks it. --- app/Extra.cs | 11 ++++++++++- app/Helpers/ClamshellModeControl.cs | 24 +++++++++++++++++++----- 2 files changed, 29 insertions(+), 6 deletions(-) diff --git a/app/Extra.cs b/app/Extra.cs index 44d8f35a..1036be28 100644 --- a/app/Extra.cs +++ b/app/Extra.cs @@ -475,7 +475,16 @@ namespace GHelper { AppConfig.Set("toggle_clamshell_mode", checkAutoToggleClamshellMode.Checked ? 1 : 0); ClamshellModeControl ctrl = new ClamshellModeControl(); - ctrl.ToggleLidAction(); + + if (checkAutoToggleClamshellMode.Checked) + { + ctrl.ToggleLidAction(); + } + else + { + ClamshellModeControl.DisableClamshellMode(); + } + } } } diff --git a/app/Helpers/ClamshellModeControl.cs b/app/Helpers/ClamshellModeControl.cs index b01e86bb..3115a44a 100644 --- a/app/Helpers/ClamshellModeControl.cs +++ b/app/Helpers/ClamshellModeControl.cs @@ -46,17 +46,31 @@ namespace GHelper.Helpers public void ToggleLidAction() { - if (IsInClamshellMode() && IsClamshellEnabled()) + if (!IsClamshellEnabled()) { - PowerNative.SetLidAction(0, true); - Logger.WriteLine("Engaging Clamshell Mode"); + return; + } + + if (IsInClamshellMode()) + { + EnableClamshellMode(); } else { - PowerNative.SetLidAction(1, true); - Logger.WriteLine("Disengaging Clamshell Mode"); + DisableClamshellMode(); } } + public static void DisableClamshellMode() + { + PowerNative.SetLidAction(1, true); + Logger.WriteLine("Disengaging Clamshell Mode"); + } + + public static void EnableClamshellMode() + { + PowerNative.SetLidAction(0, true); + Logger.WriteLine("Engaging Clamshell Mode"); + } public void UnregisterDisplayEvents() { From 5498bb9398012507ac8c290080536e4041dc2985 Mon Sep 17 00:00:00 2001 From: IceStormNG Date: Fri, 21 Jul 2023 15:39:23 +0200 Subject: [PATCH 2/5] This name makes more sense as it only checks for requirements --- app/Helpers/ClamshellModeControl.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Helpers/ClamshellModeControl.cs b/app/Helpers/ClamshellModeControl.cs index 3115a44a..b5a900ce 100644 --- a/app/Helpers/ClamshellModeControl.cs +++ b/app/Helpers/ClamshellModeControl.cs @@ -39,7 +39,7 @@ namespace GHelper.Helpers return SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online; } - public bool IsInClamshellMode() + public bool IsInClamshellReady() { return IsExternalDisplayConnected() && IsChargerConnected(); } @@ -51,7 +51,7 @@ namespace GHelper.Helpers return; } - if (IsInClamshellMode()) + if (IsInClamshellReady()) { EnableClamshellMode(); } From fbc792cb1dac784126c4d30f98440970e7cfb793 Mon Sep 17 00:00:00 2001 From: IceStormNG Date: Fri, 21 Jul 2023 15:40:24 +0200 Subject: [PATCH 3/5] Only instanciate if needed. --- app/Extra.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/Extra.cs b/app/Extra.cs index 1036be28..473df726 100644 --- a/app/Extra.cs +++ b/app/Extra.cs @@ -474,10 +474,10 @@ namespace GHelper private void checkAutoToggleClamshellMode_CheckedChanged(object sender, EventArgs e) { AppConfig.Set("toggle_clamshell_mode", checkAutoToggleClamshellMode.Checked ? 1 : 0); - ClamshellModeControl ctrl = new ClamshellModeControl(); if (checkAutoToggleClamshellMode.Checked) { + ClamshellModeControl ctrl = new ClamshellModeControl(); ctrl.ToggleLidAction(); } else From d99c3a83010f08075fafd4727538ba242c368020 Mon Sep 17 00:00:00 2001 From: IceStormNG Date: Fri, 21 Jul 2023 15:42:40 +0200 Subject: [PATCH 4/5] Assign handler via code so the settings assignment does not trigger the handler --- app/Extra.Designer.cs | 1 - app/Extra.cs | 3 ++- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Extra.Designer.cs b/app/Extra.Designer.cs index 0a4b1b02..4d73aeea 100644 --- a/app/Extra.Designer.cs +++ b/app/Extra.Designer.cs @@ -1031,7 +1031,6 @@ namespace GHelper checkAutoToggleClamshellMode.TabIndex = 58; checkAutoToggleClamshellMode.Text = "Auto Toggle Clamshell Mode"; checkAutoToggleClamshellMode.UseVisualStyleBackColor = true; - checkAutoToggleClamshellMode.CheckedChanged += checkAutoToggleClamshellMode_CheckedChanged; // // checkAutoApplyWindowsPowerMode // diff --git a/app/Extra.cs b/app/Extra.cs index 473df726..66831b3a 100644 --- a/app/Extra.cs +++ b/app/Extra.cs @@ -213,6 +213,7 @@ namespace GHelper checkAutoToggleClamshellMode.Checked = AppConfig.Is("toggle_clamshell_mode"); + checkAutoToggleClamshellMode.CheckedChanged += checkAutoToggleClamshellMode_CheckedChanged; checkTopmost.Checked = AppConfig.Is("topmost"); checkTopmost.CheckedChanged += CheckTopmost_CheckedChanged; ; @@ -471,7 +472,7 @@ namespace GHelper AppConfig.Set("auto_apply_power_plan", checkAutoApplyWindowsPowerMode.Checked ? 1 : 0); } - private void checkAutoToggleClamshellMode_CheckedChanged(object sender, EventArgs e) + private void checkAutoToggleClamshellMode_CheckedChanged(object? sender, EventArgs e) { AppConfig.Set("toggle_clamshell_mode", checkAutoToggleClamshellMode.Checked ? 1 : 0); From 3f8773037507a639e59929433c429f043ed25a81 Mon Sep 17 00:00:00 2001 From: IceStormNG Date: Fri, 21 Jul 2023 15:45:42 +0200 Subject: [PATCH 5/5] Fixed a typo --- app/Helpers/ClamshellModeControl.cs | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/Helpers/ClamshellModeControl.cs b/app/Helpers/ClamshellModeControl.cs index b5a900ce..d4fb59fc 100644 --- a/app/Helpers/ClamshellModeControl.cs +++ b/app/Helpers/ClamshellModeControl.cs @@ -39,7 +39,7 @@ namespace GHelper.Helpers return SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online; } - public bool IsInClamshellReady() + public bool IsClamshellReady() { return IsExternalDisplayConnected() && IsChargerConnected(); } @@ -51,7 +51,7 @@ namespace GHelper.Helpers return; } - if (IsInClamshellReady()) + if (IsClamshellReady()) { EnableClamshellMode(); }