diff --git a/GHelper.csproj b/GHelper.csproj
index 716b5e53..e6ddf7ee 100644
--- a/GHelper.csproj
+++ b/GHelper.csproj
@@ -29,6 +29,7 @@
+
diff --git a/Program.cs b/Program.cs
index cbe0b7aa..a408c652 100644
--- a/Program.cs
+++ b/Program.cs
@@ -1,7 +1,6 @@
using System;
using System.Windows.Forms;
-using System.Text.Json;
using System.Management;
using Microsoft.Win32.TaskScheduler;
using System.Diagnostics;
@@ -9,10 +8,12 @@ using System.Reflection.Emit;
using System.Runtime.InteropServices;
using System.Reflection;
-using System.Diagnostics;
-
using GHelper;
using System.Dynamic;
+using System.IO;
+using System.Xml.Linq;
+
+using Newtonsoft.Json;
public class ASUSWmi
{
@@ -87,15 +88,61 @@ public class ASUSWmi
}
+}
+
+public class AppConfig
+{
+
+ string appPath;
+ string configFile;
+
+ public dynamic Config = new ExpandoObject();
+
+ public AppConfig() {
+
+ appPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)+"\\GHelper";
+ configFile = appPath + "\\config.json";
+
+ if (!System.IO.Directory.Exists(appPath))
+ System.IO.Directory.CreateDirectory(appPath);
+
+ if (File.Exists(configFile))
+ {
+ string text = File.ReadAllText(configFile);
+ Config = JsonConvert.DeserializeObject(text);
+ } else
+ {
+ Config.performance_mode = 0;
+ string jsonString = JsonConvert.SerializeObject(Config);
+ File.WriteAllText(configFile, jsonString);
+ }
+
+ }
+
+ public int getConfig (string name)
+ {
+ var propertyInfo = Config.GetType().GetProperty(name);
+ return propertyInfo.GetValue(Config, null);
+ }
+
+ public void setConfig(string name, int value)
+ {
+ ((IDictionary)Config).TryAdd(name, value);
+ string jsonString = JsonConvert.SerializeObject(Config);
+ File.WriteAllText(configFile, jsonString);
+ }
+
+
+
}
static class Program
{
- static NotifyIcon trayIcon;
+ public static NotifyIcon trayIcon;
public static ASUSWmi wmi;
- public static dynamic config = new System.Dynamic.ExpandoObject();
+ public static AppConfig config;
public static SettingsForm settingsForm;
@@ -111,6 +158,8 @@ static class Program
trayIcon.MouseClick += TrayIcon_MouseClick; ;
+ config = new AppConfig();
+
wmi = new ASUSWmi();
wmi.SubscribeToEvents(WatcherEventArrived);
@@ -124,41 +173,32 @@ static class Program
settingsForm.FormClosed += SettingsForm_FormClosed;
- config.PerformanceMode = 0;
-
Application.Run();
}
public static int GetGPUMode ()
{
+
int eco = wmi.DeviceGet(ASUSWmi.GPUEco);
int mux = wmi.DeviceGet(ASUSWmi.GPUMux);
int GpuMode;
if (mux == 0)
- {
GpuMode = ASUSWmi.GPUModeUltimate;
- }
else
{
if (eco == 1)
- {
GpuMode = ASUSWmi.GPUModeEco;
- }
else
- {
GpuMode = ASUSWmi.GPUModeStandard;
- }
if (mux != 1)
- {
settingsForm.Disable_Ultimate();
- }
}
- config.gpu_mode = GpuMode;
+ config.setConfig ("gpu_mode",GpuMode);
return GpuMode;
@@ -193,9 +233,7 @@ static class Program
if (e.Button == MouseButtons.Left)
{
if (settingsForm.Visible)
- {
- settingsForm.Hide();
- } else
+ settingsForm.Hide(); else
{
settingsForm.Show();
settingsForm.Activate();
@@ -208,7 +246,7 @@ static class Program
{
settingsForm.BeginInvoke(delegate
{
- settingsForm.SetPerformanceMode(config.PerformanceMode + 1);
+ settingsForm.SetPerformanceMode(config.getConfig("performance_mode") + 1);
});
}
diff --git a/Resources/eco.ico b/Resources/eco.ico
new file mode 100644
index 00000000..30e965da
Binary files /dev/null and b/Resources/eco.ico differ
diff --git a/Resources/icons8-charging-battery-48.png b/Resources/icons8-charging-battery-48.png
new file mode 100644
index 00000000..27872566
Binary files /dev/null and b/Resources/icons8-charging-battery-48.png differ
diff --git a/Resources/icons8-laptop-48.png b/Resources/icons8-laptop-48.png
new file mode 100644
index 00000000..bf4b406c
Binary files /dev/null and b/Resources/icons8-laptop-48.png differ
diff --git a/Resources/icons8-speed-48.png b/Resources/icons8-speed-48.png
new file mode 100644
index 00000000..5edf6652
Binary files /dev/null and b/Resources/icons8-speed-48.png differ
diff --git a/Resources/icons8-video-card-48.png b/Resources/icons8-video-card-48.png
new file mode 100644
index 00000000..afffe096
Binary files /dev/null and b/Resources/icons8-video-card-48.png differ
diff --git a/Resources/ultimate.ico b/Resources/ultimate.ico
new file mode 100644
index 00000000..941dec72
Binary files /dev/null and b/Resources/ultimate.ico differ
diff --git a/Settings.cs b/Settings.cs
index 91ecc096..fd52652f 100644
--- a/Settings.cs
+++ b/Settings.cs
@@ -116,7 +116,8 @@ namespace GHelper
break;
}
- Program.config.PerformanceMode = PerformanceMode;
+
+ Program.config.setConfig("performance_mode", PerformanceMode);
Program.wmi.DeviceSet(ASUSWmi.PerformanceMode, PerformanceMode);
}
@@ -125,13 +126,10 @@ namespace GHelper
public void SetGPUMode(int GPUMode = ASUSWmi.GPUModeStandard)
{
- int CurrentGPU = ASUSWmi.GPUModeStandard;
+ int CurrentGPU = Program.config.getConfig("gpu_mode");
- if (((IDictionary) Program.config).ContainsKey("gpu_mode")) {
- CurrentGPU = Program.config.gpu_mode;
- }
-
- if (CurrentGPU == GPUMode) { return; }
+ if (CurrentGPU == GPUMode)
+ return;
var restart = false;
var changed = false;
@@ -168,9 +166,7 @@ namespace GHelper
}
if (changed)
- {
- Program.config.gpu_mode = GPUMode;
- }
+ Program.config.setConfig("gpu_mode", GPUMode);
if (restart)
{
@@ -193,14 +189,17 @@ namespace GHelper
case ASUSWmi.GPUModeEco:
buttonEco.BackColor = colorActive;
groupGPU.Text = "GPU Mode: Eco (iGPU only)";
+ Program.trayIcon.Icon = new System.Drawing.Icon("Resources/eco.ico");
break;
case ASUSWmi.GPUModeUltimate:
buttonUltimate.BackColor = colorActive;
groupGPU.Text = "GPU Mode: Ultimate (dGPU exclusive)";
+ Program.trayIcon.Icon = new System.Drawing.Icon("Resources/ultimate.ico");
break;
default:
buttonStandard.BackColor = colorActive;
groupGPU.Text = "GPU Mode: Eco (iGPU and dGPU)";
+ Program.trayIcon.Icon = new System.Drawing.Icon("Resources/standard.ico");
break;
}
}