mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
Detect Battery Saver state
This commit is contained in:
@@ -77,8 +77,12 @@ namespace GHelper.Display
|
|||||||
int overdrive = Program.acpi.DeviceGet(AsusACPI.ScreenOverdrive);
|
int overdrive = Program.acpi.DeviceGet(AsusACPI.ScreenOverdrive);
|
||||||
int miniled = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled);
|
int miniled = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled);
|
||||||
|
|
||||||
|
bool hdr = false;
|
||||||
|
|
||||||
if (miniled >= 0)
|
if (miniled >= 0)
|
||||||
|
{
|
||||||
AppConfig.Set("miniled", miniled);
|
AppConfig.Set("miniled", miniled);
|
||||||
|
}
|
||||||
|
|
||||||
bool screenEnabled = (frequency >= 0);
|
bool screenEnabled = (frequency >= 0);
|
||||||
|
|
||||||
@@ -94,7 +98,8 @@ namespace GHelper.Display
|
|||||||
maxFrequency: maxFrequency,
|
maxFrequency: maxFrequency,
|
||||||
overdrive: overdrive,
|
overdrive: overdrive,
|
||||||
overdriveSetting: overdriveSetting,
|
overdriveSetting: overdriveSetting,
|
||||||
miniled: miniled
|
miniled: miniled,
|
||||||
|
hdr: hdr
|
||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|||||||
@@ -1,8 +1,6 @@
|
|||||||
using Microsoft.VisualBasic.Logging;
|
using System.Collections;
|
||||||
using System.Collections;
|
using System.Diagnostics;
|
||||||
using System.Diagnostics.Metrics;
|
|
||||||
using System.Runtime.InteropServices;
|
using System.Runtime.InteropServices;
|
||||||
using System.Windows.Forms;
|
|
||||||
using static GHelper.Display.ScreenInterrogatory;
|
using static GHelper.Display.ScreenInterrogatory;
|
||||||
|
|
||||||
namespace GHelper.Display
|
namespace GHelper.Display
|
||||||
|
|||||||
@@ -692,7 +692,14 @@ namespace GHelper
|
|||||||
comboBoost.SelectedIndex = Math.Min(boost, comboBoost.Items.Count - 1);
|
comboBoost.SelectedIndex = Math.Min(boost, comboBoost.Items.Count - 1);
|
||||||
|
|
||||||
string powerMode = PowerNative.GetPowerMode();
|
string powerMode = PowerNative.GetPowerMode();
|
||||||
comboPowerMode.SelectedValue = powerMode;
|
bool batterySaver = PowerNative.GetBatterySaverStatus();
|
||||||
|
|
||||||
|
comboPowerMode.Enabled = !batterySaver;
|
||||||
|
|
||||||
|
if (batterySaver)
|
||||||
|
comboPowerMode.SelectedIndex = 0;
|
||||||
|
else
|
||||||
|
comboPowerMode.SelectedValue = powerMode;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -153,6 +153,13 @@ namespace GHelper.Mode
|
|||||||
Guid guidScheme = new Guid(scheme);
|
Guid guidScheme = new Guid(scheme);
|
||||||
|
|
||||||
uint status = PowerGetEffectiveOverlayScheme(out Guid activeScheme);
|
uint status = PowerGetEffectiveOverlayScheme(out Guid activeScheme);
|
||||||
|
|
||||||
|
if (GetBatterySaverStatus())
|
||||||
|
{
|
||||||
|
Logger.WriteLine("Battery Saver detected");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (status != 0 || activeScheme != guidScheme)
|
if (status != 0 || activeScheme != guidScheme)
|
||||||
{
|
{
|
||||||
status = PowerSetActiveOverlayScheme(guidScheme);
|
status = PowerSetActiveOverlayScheme(guidScheme);
|
||||||
@@ -288,6 +295,48 @@ namespace GHelper.Mode
|
|||||||
Logger.WriteLine("Setting Hibernate after " + seconds + ": " + (hrAC == 0 ? "OK" : hrAC));
|
Logger.WriteLine("Setting Hibernate after " + seconds + ": " + (hrAC == 0 ? "OK" : hrAC));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[DllImport("Kernel32")]
|
||||||
|
private static extern bool GetSystemPowerStatus(SystemPowerStatus sps);
|
||||||
|
public enum ACLineStatus : byte
|
||||||
|
{
|
||||||
|
Offline = 0, Online = 1, Unknown = 255
|
||||||
|
}
|
||||||
|
|
||||||
|
public enum BatteryFlag : byte
|
||||||
|
{
|
||||||
|
High = 1,
|
||||||
|
Low = 2,
|
||||||
|
Critical = 4,
|
||||||
|
Charging = 8,
|
||||||
|
NoSystemBattery = 128,
|
||||||
|
Unknown = 255
|
||||||
|
}
|
||||||
|
|
||||||
|
// Fields must mirror their unmanaged counterparts, in order
|
||||||
|
[StructLayout(LayoutKind.Sequential)]
|
||||||
|
public class SystemPowerStatus
|
||||||
|
{
|
||||||
|
public ACLineStatus ACLineStatus;
|
||||||
|
public BatteryFlag BatteryFlag;
|
||||||
|
public Byte BatteryLifePercent;
|
||||||
|
public Byte SystemStatusFlag;
|
||||||
|
public Int32 BatteryLifeTime;
|
||||||
|
public Int32 BatteryFullLifeTime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static bool GetBatterySaverStatus()
|
||||||
|
{
|
||||||
|
SystemPowerStatus sps = new SystemPowerStatus();
|
||||||
|
try
|
||||||
|
{
|
||||||
|
GetSystemPowerStatus(sps);
|
||||||
|
return (sps.SystemStatusFlag > 0);
|
||||||
|
} catch (Exception ex)
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -758,7 +758,7 @@ namespace GHelper
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
public void VisualiseScreen(bool screenEnabled, bool screenAuto, int frequency, int maxFrequency, int overdrive, bool overdriveSetting, int miniled)
|
public void VisualiseScreen(bool screenEnabled, bool screenAuto, int frequency, int maxFrequency, int overdrive, bool overdriveSetting, int miniled, bool hdr)
|
||||||
{
|
{
|
||||||
|
|
||||||
ButtonEnabled(button60Hz, screenEnabled);
|
ButtonEnabled(button60Hz, screenEnabled);
|
||||||
@@ -800,6 +800,7 @@ namespace GHelper
|
|||||||
if (miniled >= 0)
|
if (miniled >= 0)
|
||||||
{
|
{
|
||||||
buttonMiniled.Activated = (miniled == 1);
|
buttonMiniled.Activated = (miniled == 1);
|
||||||
|
buttonMiniled.Enabled = !hdr;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user