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; } }