mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Merge pull request #905 from IceStormNG/clamshell-power-user-settings
Clamshell power user settings
This commit is contained in:
@@ -6,6 +6,13 @@ namespace GHelper.Helpers
|
|||||||
{
|
{
|
||||||
internal class ClamshellModeControl
|
internal class ClamshellModeControl
|
||||||
{
|
{
|
||||||
|
|
||||||
|
public ClamshellModeControl()
|
||||||
|
{
|
||||||
|
//Save current setting if hibernate or shutdown to prevent reverting the user set option.
|
||||||
|
CheckAndSaveLidAction();
|
||||||
|
}
|
||||||
|
|
||||||
public bool IsExternalDisplayConnected()
|
public bool IsExternalDisplayConnected()
|
||||||
{
|
{
|
||||||
var devices = ScreenInterrogatory.GetAllDevices().ToArray();
|
var devices = ScreenInterrogatory.GetAllDevices().ToArray();
|
||||||
@@ -31,7 +38,7 @@ namespace GHelper.Helpers
|
|||||||
|
|
||||||
public bool IsClamshellEnabled()
|
public bool IsClamshellEnabled()
|
||||||
{
|
{
|
||||||
return AppConfig.Get("toggle_clamshell_mode") != 0;
|
return AppConfig.Is("toggle_clamshell_mode");
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool IsChargerConnected()
|
public bool IsChargerConnected()
|
||||||
@@ -62,7 +69,7 @@ namespace GHelper.Helpers
|
|||||||
}
|
}
|
||||||
public static void DisableClamshellMode()
|
public static void DisableClamshellMode()
|
||||||
{
|
{
|
||||||
PowerNative.SetLidAction(1, true);
|
PowerNative.SetLidAction(GetDefaultLidAction(), true);
|
||||||
Logger.WriteLine("Disengaging Clamshell Mode");
|
Logger.WriteLine("Disengaging Clamshell Mode");
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -89,5 +96,43 @@ namespace GHelper.Helpers
|
|||||||
if (IsClamshellEnabled())
|
if (IsClamshellEnabled())
|
||||||
ToggleLidAction();
|
ToggleLidAction();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private static int CheckAndSaveLidAction()
|
||||||
|
{
|
||||||
|
if (AppConfig.Get("clamshell_default_lid_action", -1) != -1)
|
||||||
|
{
|
||||||
|
//Seting was alredy set. Do not touch it
|
||||||
|
return AppConfig.Get("clamshell_default_lid_action", -1);
|
||||||
|
}
|
||||||
|
|
||||||
|
int val = PowerNative.GetLidAction(true);
|
||||||
|
//If it is 0 then it is likely already set by clamshell mdoe
|
||||||
|
//If 0 was set by the user, then why do they even use clamshell mode?
|
||||||
|
//We only care about hibernate or shutdown setting here
|
||||||
|
if (val == 2 || val == 3)
|
||||||
|
{
|
||||||
|
AppConfig.Set("clamshell_default_lid_action", val);
|
||||||
|
return val;
|
||||||
|
}
|
||||||
|
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
//Power users can change that setting.
|
||||||
|
//0 = Do nothing
|
||||||
|
//1 = Sleep (default)
|
||||||
|
//2 = Hibernate
|
||||||
|
//3 = Shutdown
|
||||||
|
private static int GetDefaultLidAction()
|
||||||
|
{
|
||||||
|
int val = AppConfig.Get("clamshell_default_lid_action", 1);
|
||||||
|
|
||||||
|
if (val < 0 || val > 3)
|
||||||
|
{
|
||||||
|
val = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
return val;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -167,6 +167,28 @@ namespace GHelper.Mode
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static int GetLidAction(bool ac)
|
||||||
|
{
|
||||||
|
Guid activeSchemeGuid = GetActiveScheme();
|
||||||
|
|
||||||
|
IntPtr activeIndex;
|
||||||
|
if (ac)
|
||||||
|
PowerReadACValueIndex(IntPtr.Zero,
|
||||||
|
activeSchemeGuid,
|
||||||
|
GUID_SYSTEM_BUTTON_SUBGROUP,
|
||||||
|
GUID_LIDACTION, out activeIndex);
|
||||||
|
|
||||||
|
else
|
||||||
|
PowerReadDCValueIndex(IntPtr.Zero,
|
||||||
|
activeSchemeGuid,
|
||||||
|
GUID_SYSTEM_BUTTON_SUBGROUP,
|
||||||
|
GUID_LIDACTION, out activeIndex);
|
||||||
|
|
||||||
|
|
||||||
|
return activeIndex.ToInt32();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public static void SetLidAction(int action, bool acOnly = false)
|
public static void SetLidAction(int action, bool acOnly = false)
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
|||||||
Reference in New Issue
Block a user