Add Delay to Screenpad Actions (#2305)

* Add Delay to Screenpad Actions

Added "screenpad_delay" config

* revert .net version

revert .net version
This commit is contained in:
Vaibhav Garg
2024-03-27 22:49:36 +05:30
committed by GitHub
parent 5bf60e24b5
commit e6938ea5cf

View File

@@ -809,14 +809,14 @@ namespace GHelper.Input
public static void ToggleScreenpad() public static void ToggleScreenpad()
{ {
int toggle = AppConfig.Is("screenpad_toggle") ? 0 : 1; int toggle = AppConfig.Is("screenpad_toggle") ? 0 : 1;
int brightness = AppConfig.Get("screenpad", 100); int brightness = toggle == 0 ? -10 : AppConfig.Get("screenpad", 100);
Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, toggle, "ScreenpadToggle"); Debug.WriteLine($"Screenpad toggle = {toggle}");
if (toggle > 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadBrightness, Math.Max(brightness * 255 / 100, 0), "Screenpad");
ApplyScreenpadAction(brightness, true);
AppConfig.Set("screenpad_toggle", toggle); AppConfig.Set("screenpad_toggle", toggle);
Program.toast.RunToast($"Screen Pad " + (toggle == 1 ? "On" : "Off"), toggle > 0 ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown); Program.toast.RunToast($"Screen Pad " + (toggle == 1 ? "On" : "Off"), toggle > 0 ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown);
} }
@@ -851,6 +851,37 @@ namespace GHelper.Input
} }
private static System.Threading.Timer screenpadActionTimer;
private static int screenpadBrightnessToSet;
public static void ApplyScreenpadAction(int brightness, bool doToggle = false)
{
var delay = AppConfig.Get("screenpad_delay", 1500);
//Action
Action<int> action = (b) =>
{
if (b >= 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 1, "ScreenpadOn");
Program.acpi.DeviceSet(AsusACPI.ScreenPadBrightness, Math.Max(b * 255 / 100, 0), "Screenpad");
if (b < 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 0, "ScreenpadOff");
};
if(delay <= 0 || (brightness > 0 && brightness < 100 && doToggle == false)) //instant action
{
action(brightness);
}
else //delayed action
{
//Timer Approach
if (screenpadActionTimer == null)
{
screenpadActionTimer = new System.Threading.Timer(_ => action(screenpadBrightnessToSet), null, Timeout.Infinite, Timeout.Infinite);
}
//Start Timer
screenpadBrightnessToSet = brightness;
screenpadActionTimer.Change(delay, Timeout.Infinite);
}
}
public static void SetScreenpad(int delta) public static void SetScreenpad(int delta)
{ {
int brightness = AppConfig.Get("screenpad", 100); int brightness = AppConfig.Get("screenpad", 100);
@@ -860,7 +891,6 @@ namespace GHelper.Input
if (brightness < 0) brightness = 100; if (brightness < 0) brightness = 100;
else if (brightness >= 100) brightness = 0; else if (brightness >= 100) brightness = 0;
else brightness = -10; else brightness = -10;
} }
else else
{ {
@@ -869,11 +899,7 @@ namespace GHelper.Input
AppConfig.Set("screenpad", brightness); AppConfig.Set("screenpad", brightness);
if (brightness >= 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 1, "ScreenpadOn"); ApplyScreenpadAction(brightness);
Program.acpi.DeviceSet(AsusACPI.ScreenPadBrightness, Math.Max(brightness * 255 / 100, 0), "Screenpad");
if (brightness < 0) Program.acpi.DeviceSet(AsusACPI.ScreenPadToggle, 0, "ScreenpadOff");
string toast; string toast;
@@ -882,10 +908,8 @@ namespace GHelper.Input
else toast = brightness.ToString() + "%"; else toast = brightness.ToString() + "%";
Program.toast.RunToast($"Screen Pad {toast}", delta > 0 ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown); Program.toast.RunToast($"Screen Pad {toast}", delta > 0 ? ToastIcon.BrightnessUp : ToastIcon.BrightnessDown);
} }
static void LaunchProcess(string command = "") static void LaunchProcess(string command = "")
{ {