Merge pull request #842 from IceStormNG/clamshell-mode-fixes

Clamshell mode fixes
This commit is contained in:
Serge
2023-07-21 15:50:51 +02:00
committed by GitHub
3 changed files with 33 additions and 10 deletions

1
app/Extra.Designer.cs generated
View File

@@ -1031,7 +1031,6 @@ namespace GHelper
checkAutoToggleClamshellMode.TabIndex = 58; checkAutoToggleClamshellMode.TabIndex = 58;
checkAutoToggleClamshellMode.Text = "Auto Toggle Clamshell Mode"; checkAutoToggleClamshellMode.Text = "Auto Toggle Clamshell Mode";
checkAutoToggleClamshellMode.UseVisualStyleBackColor = true; checkAutoToggleClamshellMode.UseVisualStyleBackColor = true;
checkAutoToggleClamshellMode.CheckedChanged += checkAutoToggleClamshellMode_CheckedChanged;
// //
// checkAutoApplyWindowsPowerMode // checkAutoApplyWindowsPowerMode
// //

View File

@@ -213,6 +213,7 @@ namespace GHelper
checkAutoToggleClamshellMode.Checked = AppConfig.Is("toggle_clamshell_mode"); checkAutoToggleClamshellMode.Checked = AppConfig.Is("toggle_clamshell_mode");
checkAutoToggleClamshellMode.CheckedChanged += checkAutoToggleClamshellMode_CheckedChanged;
checkTopmost.Checked = AppConfig.Is("topmost"); checkTopmost.Checked = AppConfig.Is("topmost");
checkTopmost.CheckedChanged += CheckTopmost_CheckedChanged; ; checkTopmost.CheckedChanged += CheckTopmost_CheckedChanged; ;
@@ -471,11 +472,20 @@ namespace GHelper
AppConfig.Set("auto_apply_power_plan", checkAutoApplyWindowsPowerMode.Checked ? 1 : 0); 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); AppConfig.Set("toggle_clamshell_mode", checkAutoToggleClamshellMode.Checked ? 1 : 0);
ClamshellModeControl ctrl = new ClamshellModeControl();
ctrl.ToggleLidAction(); if (checkAutoToggleClamshellMode.Checked)
{
ClamshellModeControl ctrl = new ClamshellModeControl();
ctrl.ToggleLidAction();
}
else
{
ClamshellModeControl.DisableClamshellMode();
}
} }
} }
} }

View File

@@ -39,24 +39,38 @@ namespace GHelper.Helpers
return SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online; return SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online;
} }
public bool IsInClamshellMode() public bool IsClamshellReady()
{ {
return IsExternalDisplayConnected() && IsChargerConnected(); return IsExternalDisplayConnected() && IsChargerConnected();
} }
public void ToggleLidAction() public void ToggleLidAction()
{ {
if (IsInClamshellMode() && IsClamshellEnabled()) if (!IsClamshellEnabled())
{ {
PowerNative.SetLidAction(0, true); return;
Logger.WriteLine("Engaging Clamshell Mode"); }
if (IsClamshellReady())
{
EnableClamshellMode();
} }
else else
{ {
PowerNative.SetLidAction(1, true); DisableClamshellMode();
Logger.WriteLine("Disengaging Clamshell Mode");
} }
} }
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() public void UnregisterDisplayEvents()
{ {