mirror of
https://github.com/jkocon/g-helper.git
synced 2026-02-23 13:00:52 +01:00
100 lines
2.9 KiB
C#
100 lines
2.9 KiB
C#
using System.Diagnostics;
|
|
|
|
namespace GHelper.Display
|
|
{
|
|
public class ScreenControl
|
|
{
|
|
public void AutoScreen(bool force = false)
|
|
{
|
|
if (force || AppConfig.Is("screen_auto"))
|
|
{
|
|
if (SystemInformation.PowerStatus.PowerLineStatus == PowerLineStatus.Online)
|
|
SetScreen(1000, 1);
|
|
else
|
|
SetScreen(60, 0);
|
|
}
|
|
else
|
|
{
|
|
SetScreen(overdrive: AppConfig.Get("overdrive"));
|
|
}
|
|
}
|
|
|
|
public void SetScreen(int frequency = -1, int overdrive = -1, int miniled = -1)
|
|
{
|
|
|
|
if (ScreenNative.GetRefreshRate() < 0) // Laptop screen not detected or has unknown refresh rate
|
|
{
|
|
InitScreen();
|
|
return;
|
|
}
|
|
|
|
if (frequency >= 1000)
|
|
{
|
|
frequency = ScreenNative.GetRefreshRate(true);
|
|
}
|
|
|
|
if (frequency > 0)
|
|
{
|
|
ScreenNative.SetRefreshRate(frequency);
|
|
}
|
|
|
|
if (overdrive >= 0)
|
|
{
|
|
if (AppConfig.Get("no_overdrive") == 1) overdrive = 0;
|
|
Program.acpi.DeviceSet(AsusACPI.ScreenOverdrive, overdrive, "ScreenOverdrive");
|
|
|
|
}
|
|
|
|
if (miniled >= 0)
|
|
{
|
|
Program.acpi.DeviceSet(AsusACPI.ScreenMiniled, miniled, "Miniled");
|
|
Debug.WriteLine("Miniled " + miniled);
|
|
}
|
|
|
|
InitScreen();
|
|
}
|
|
|
|
|
|
public void ToogleMiniled()
|
|
{
|
|
int miniled = (AppConfig.Get("miniled") == 1) ? 0 : 1;
|
|
AppConfig.Set("miniled", miniled);
|
|
SetScreen(-1, -1, miniled);
|
|
}
|
|
|
|
public void InitScreen()
|
|
{
|
|
int frequency = ScreenNative.GetRefreshRate();
|
|
int maxFrequency = ScreenNative.GetRefreshRate(true);
|
|
|
|
bool screenAuto = AppConfig.Is("screen_auto");
|
|
bool overdriveSetting = !AppConfig.Is("no_overdrive");
|
|
|
|
int overdrive = Program.acpi.DeviceGet(AsusACPI.ScreenOverdrive);
|
|
int miniled = Program.acpi.DeviceGet(AsusACPI.ScreenMiniled);
|
|
|
|
if (miniled >= 0)
|
|
AppConfig.Set("miniled", miniled);
|
|
|
|
bool screenEnabled = (frequency >= 0);
|
|
|
|
AppConfig.Set("frequency", frequency);
|
|
AppConfig.Set("overdrive", overdrive);
|
|
|
|
Program.settingsForm.Invoke(delegate
|
|
{
|
|
Program.settingsForm.VisualiseScreen(
|
|
screenEnabled: screenEnabled,
|
|
screenAuto: screenAuto,
|
|
frequency: frequency,
|
|
maxFrequency: maxFrequency,
|
|
overdrive: overdrive,
|
|
overdriveSetting: overdriveSetting,
|
|
miniled: miniled
|
|
);
|
|
});
|
|
|
|
}
|
|
}
|
|
}
|