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 miniled = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled);
|
||||
|
||||
bool hdr = false;
|
||||
|
||||
if (miniled >= 0)
|
||||
{
|
||||
AppConfig.Set("miniled", miniled);
|
||||
}
|
||||
|
||||
bool screenEnabled = (frequency >= 0);
|
||||
|
||||
@@ -94,7 +98,8 @@ namespace GHelper.Display
|
||||
maxFrequency: maxFrequency,
|
||||
overdrive: overdrive,
|
||||
overdriveSetting: overdriveSetting,
|
||||
miniled: miniled
|
||||
miniled: miniled,
|
||||
hdr: hdr
|
||||
);
|
||||
});
|
||||
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
using Microsoft.VisualBasic.Logging;
|
||||
using System.Collections;
|
||||
using System.Diagnostics.Metrics;
|
||||
using System.Collections;
|
||||
using System.Diagnostics;
|
||||
using System.Runtime.InteropServices;
|
||||
using System.Windows.Forms;
|
||||
using static GHelper.Display.ScreenInterrogatory;
|
||||
|
||||
namespace GHelper.Display
|
||||
|
||||
@@ -692,7 +692,14 @@ namespace GHelper
|
||||
comboBoost.SelectedIndex = Math.Min(boost, comboBoost.Items.Count - 1);
|
||||
|
||||
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);
|
||||
|
||||
uint status = PowerGetEffectiveOverlayScheme(out Guid activeScheme);
|
||||
|
||||
if (GetBatterySaverStatus())
|
||||
{
|
||||
Logger.WriteLine("Battery Saver detected");
|
||||
return;
|
||||
}
|
||||
|
||||
if (status != 0 || activeScheme != guidScheme)
|
||||
{
|
||||
status = PowerSetActiveOverlayScheme(guidScheme);
|
||||
@@ -288,6 +295,48 @@ namespace GHelper.Mode
|
||||
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);
|
||||
@@ -800,6 +800,7 @@ namespace GHelper
|
||||
if (miniled >= 0)
|
||||
{
|
||||
buttonMiniled.Activated = (miniled == 1);
|
||||
buttonMiniled.Enabled = !hdr;
|
||||
}
|
||||
else
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user