diff --git a/app/AnimeMatrix/AnimeMatrixDevice.cs b/app/AnimeMatrix/AnimeMatrixDevice.cs index 55f2f36a..17c42fa0 100644 --- a/app/AnimeMatrix/AnimeMatrixDevice.cs +++ b/app/AnimeMatrix/AnimeMatrixDevice.cs @@ -90,7 +90,7 @@ namespace Starlight.AnimeMatrix MaxColumns = 33; FullRows = 7; - FullEvenRows = 1; + FullEvenRows = 3; MaxRows = 55; LedCount = 1214; @@ -151,7 +151,11 @@ namespace Starlight.AnimeMatrix public int XEnd(int row) { - if (row <= FullEvenRows && row % 2 == 0) return MaxColumns - 1; + if (row <= FullEvenRows) + { + if (row % 2 == 1) return MaxColumns + 2; + else return MaxColumns; + } return MaxColumns; } @@ -196,7 +200,7 @@ namespace Starlight.AnimeMatrix { EnsureRowInRange(y); var start = RowToLinearAddress(y) - XStart(y); - if (x >= XStart(y) && x < XEnd(y)) + if (x >= XStart(y) && x < MaxColumns) { SetLedLinear(start + x, value); } @@ -325,12 +329,14 @@ namespace Starlight.AnimeMatrix using (Bitmap bmp = new Bitmap(canvas, MaxColumns * 2, MaxRows)) { for (int y = 0; y < bmp.Height; y++) + { for (int x = 0; x < bmp.Width; x++) if (x % 2 == y % 2) { var pixel = bmp.GetPixel(x, y); - SetLedPlanar(x / 2, y, (byte)((pixel.R + pixel.G + pixel.B)/3)); + SetLedPlanar(x / 2, y, (byte)((pixel.R + pixel.G + pixel.B) / 3)); } + } } } diff --git a/app/ControlHelper.cs b/app/ControlHelper.cs index 1ef03a03..7af6bfec 100644 --- a/app/ControlHelper.cs +++ b/app/ControlHelper.cs @@ -6,7 +6,7 @@ public static class ControlHelper { static bool _invert = false; - static bool _resize = false; + static bool _darkTheme = false; static float _scale = 1; @@ -20,11 +20,13 @@ public static class ControlHelper public static void Adjust(RForm container, bool darkTheme = false, bool invert = false) { + _darkTheme = darkTheme; + if (darkTheme) { formBack = Color.FromArgb(255, 35, 35, 35); backMain = Color.FromArgb(255, 50, 50, 50); - foreMain = Color.White; + foreMain = Color.FromArgb(255, 240, 240, 240); foreAccent = Color.FromArgb(255, 100, 100, 100); borderMain = Color.FromArgb(255, 50, 50, 50); buttonMain = Color.FromArgb(255, 80, 80, 80); @@ -115,8 +117,6 @@ public static class ControlHelper { chart.BackColor = backMain; chart.ChartAreas[0].BackColor = backMain; - chart.ChartAreas[0].AxisX.MajorGrid.LineColor = foreAccent; - chart.ChartAreas[0].AxisY.MajorGrid.LineColor = foreAccent; chart.ChartAreas[0].AxisX.TitleForeColor = foreMain; chart.ChartAreas[0].AxisY.TitleForeColor = foreMain; @@ -127,6 +127,8 @@ public static class ControlHelper chart.ChartAreas[0].AxisX.MajorTickMark.LineColor = foreMain; chart.ChartAreas[0].AxisY.MajorTickMark.LineColor = foreMain; + chart.ChartAreas[0].AxisX.MajorGrid.LineColor = foreAccent; + chart.ChartAreas[0].AxisY.MajorGrid.LineColor = foreAccent; chart.ChartAreas[0].AxisX.LineColor = foreAccent; chart.ChartAreas[0].AxisY.LineColor = foreAccent; diff --git a/app/Fans.cs b/app/Fans.cs index bda4a86c..ec08bbb6 100644 --- a/app/Fans.cs +++ b/app/Fans.cs @@ -47,6 +47,13 @@ namespace GHelper chart.ChartAreas[0].AxisY.LabelStyle.Font = new Font("Arial", 7F); + var foreAccent = Color.FromArgb(255, 100, 100, 100); + + chart.ChartAreas[0].AxisX.MajorGrid.LineColor = foreAccent; + chart.ChartAreas[0].AxisY.MajorGrid.LineColor = foreAccent; + chart.ChartAreas[0].AxisX.LineColor = foreAccent; + chart.ChartAreas[0].AxisY.LineColor = foreAccent; + for (int i = 0; i <= 90; i += 10) chart.ChartAreas[0].AxisY.CustomLabels.Add(i - 2, i + 2, ChartPercToRPM(i)); diff --git a/app/GHelper.csproj b/app/GHelper.csproj index a6d41193..da8c9599 100644 --- a/app/GHelper.csproj +++ b/app/GHelper.csproj @@ -16,7 +16,7 @@ x64 False True - 0.37 + 0.38 diff --git a/app/HardwareMonitor.cs b/app/HardwareMonitor.cs index 243f8a22..e88267a9 100644 --- a/app/HardwareMonitor.cs +++ b/app/HardwareMonitor.cs @@ -46,15 +46,17 @@ public static class HardwareMonitor } - public static void RecreateGpuTemperatureProviderWithRetry() { - RecreateGpuTemperatureProvider(); + public static void RecreateGpuTemperatureProviderWithDelay() { // Re-enabling the discrete GPU takes a bit of time, // so a simple workaround is to refresh again after that happens Task.Run(async () => { - await Task.Delay(TimeSpan.FromSeconds(3)); + await Task.Delay(TimeSpan.FromSeconds(5)); RecreateGpuTemperatureProvider(); }); + + + } public static void RecreateGpuTemperatureProvider() { diff --git a/app/Program.cs b/app/Program.cs index d12a70d6..b89540e8 100644 --- a/app/Program.cs +++ b/app/Program.cs @@ -78,9 +78,6 @@ namespace GHelper // Subscribing for system power change events SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged; - settingsForm.SetVersionLabel("Version: " + Assembly.GetExecutingAssembly().GetName().Version); - CheckForUpdates(); - if (Environment.CurrentDirectory.Trim('\\') == Application.StartupPath.Trim('\\')) { @@ -103,7 +100,7 @@ namespace GHelper { case UserPreferenceCategory.General: Debug.WriteLine("Theme Changed"); - Thread.Sleep(500); + Thread.Sleep(1000); settingsForm.InitTheme(false); if (settingsForm.fans is not null && settingsForm.fans.Text != "") @@ -117,39 +114,6 @@ namespace GHelper } - static async void CheckForUpdates() - { - - try - { - using (var httpClient = new HttpClient()) - { - httpClient.DefaultRequestHeaders.Add("User-Agent", "C# App"); - var json = await httpClient.GetStringAsync("https://api.github.com/repos/seerge/g-helper/releases/latest"); - var config = JsonSerializer.Deserialize(json); - var tag = config.GetProperty("tag_name").ToString().Replace("v", ""); - var url = config.GetProperty("assets")[0].GetProperty("browser_download_url").ToString(); - - var gitVersion = new Version(tag); - var appVersion = new Version(Assembly.GetExecutingAssembly().GetName().Version.ToString()); - if (gitVersion.CompareTo(appVersion) > 0) - { - settingsForm.BeginInvoke(delegate - { - settingsForm.SetVersionLabel("Download Update: " + tag, url); - }); - } - - } - } - catch (Exception ex) - { - Logger.WriteLine("Failed to check for updates:"+ ex.Message); - - } - - } - public static void SetAutoModes(bool wait = false) { diff --git a/app/Settings.cs b/app/Settings.cs index 86e44d1a..a318bf65 100644 --- a/app/Settings.cs +++ b/app/Settings.cs @@ -2,6 +2,8 @@ using Starlight.AnimeMatrix; using System.Diagnostics; using System.Drawing.Imaging; +using System.Reflection; +using System.Text.Json; using System.Timers; namespace GHelper @@ -23,7 +25,7 @@ namespace GHelper public Keyboard keyb; static AnimeMatrixDevice mat; - static long lastTip; + static long lastRefresh; public SettingsForm() { @@ -57,8 +59,6 @@ namespace GHelper VisibleChanged += SettingsForm_VisibleChanged; - trackBattery.Scroll += trackBatteryChange; - button60Hz.Click += Button60Hz_Click; button120Hz.Click += Button120Hz_Click; buttonScreenAuto.Click += ButtonScreenAuto_Click; @@ -117,6 +117,7 @@ namespace GHelper button120Hz.MouseMove += Button120Hz_MouseHover; button120Hz.MouseLeave += ButtonScreen_MouseLeave; + trackBattery.ValueChanged += TrackBattery_ValueChanged; Program.trayIcon.MouseMove += TrayIcon_MouseMove; //buttonStandard.Image = (Image)(new Bitmap(buttonStandard.Image, new Size(16, 16))); @@ -124,21 +125,72 @@ namespace GHelper aTimer = new System.Timers.Timer(500); aTimer.Elapsed += OnTimedEvent; + SetVersionLabel("Version: " + Assembly.GetExecutingAssembly().GetName().Version); + Thread t = new Thread(() => + { + CheckForUpdatesAsync(); + }); + t.Start(); + t.Join(); + + } + + private void TrackBattery_ValueChanged(object? sender, EventArgs e) + { + SetBatteryChargeLimit(trackBattery.Value); + } + + + public async void CheckForUpdatesAsync() + { + + try + { + + using (var httpClient = new HttpClient()) + { + httpClient.DefaultRequestHeaders.Add("User-Agent", "C# App"); + var json = await httpClient.GetStringAsync("https://api.github.com/repos/seerge/g-helper/releases/latest"); + var config = JsonSerializer.Deserialize(json); + var tag = config.GetProperty("tag_name").ToString().Replace("v", ""); + var url = config.GetProperty("assets")[0].GetProperty("browser_download_url").ToString(); + + Thread.Sleep(5000); + + var gitVersion = new Version(tag); + var appVersion = new Version(Assembly.GetExecutingAssembly().GetName().Version.ToString()); + + if (gitVersion.CompareTo(appVersion) > 0) + { + BeginInvoke(delegate + { + SetVersionLabel("Download Update: " + tag, url); + }); + } + else + { + Debug.WriteLine("Latest version"); + } + + } + } + catch (Exception ex) + { + //Logger.WriteLine("Failed to check for updates:" + ex.Message); + + } + } private static void TrayIcon_MouseMove(object? sender, MouseEventArgs e) { - if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastTip) < 2000) return; - lastTip = DateTimeOffset.Now.ToUnixTimeMilliseconds(); RefreshSensors(); } private static void OnTimedEvent(Object? source, ElapsedEventArgs? e) { - aTimer.Interval = 2000; - if (Program.settingsForm.Visible) - RefreshSensors(); + RefreshSensors(); } private void Button120Hz_MouseHover(object? sender, EventArgs e) @@ -233,12 +285,12 @@ namespace GHelper } - public void SetVersionLabel(string label, string url = null) + void SetVersionLabel(string label, string url = null) { labelVersion.Text = label; if (url is not null) { - versionUrl = url; + this.versionUrl = url; labelVersion.ForeColor = Color.Red; } } @@ -798,6 +850,9 @@ namespace GHelper private static void RefreshSensors() { + if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastRefresh) < 2000) return; + lastRefresh = DateTimeOffset.Now.ToUnixTimeMilliseconds(); + string cpuFan = FormatFan(Program.wmi.DeviceGet(ASUSWmi.CPU_Fan)); string gpuFan = FormatFan(Program.wmi.DeviceGet(ASUSWmi.GPU_Fan)); string midFan = FormatFan(Program.wmi.DeviceGet(ASUSWmi.Mid_Fan)); @@ -1084,7 +1139,7 @@ namespace GHelper labelGPU.Text = "GPU Mode: Changing ..."; - new Thread(() => + Thread t = new Thread(() => { Thread.CurrentThread.IsBackground = true; @@ -1099,14 +1154,13 @@ namespace GHelper Program.settingsForm.BeginInvoke(delegate { InitGPUMode(); - HardwareMonitor.RecreateGpuTemperatureProviderWithRetry(); + HardwareMonitor.RecreateGpuTemperatureProviderWithDelay(); Thread.Sleep(500); AutoScreen(SystemInformation.PowerStatus.PowerLineStatus); }); - }) - { + }); - }.Start(); + t.Start(); } @@ -1162,7 +1216,6 @@ namespace GHelper if (changed) { Program.config.setConfig("gpu_mode", GPUMode); - HardwareMonitor.RecreateGpuTemperatureProviderWithRetry(); } if (restart) @@ -1254,19 +1307,12 @@ namespace GHelper labelBatteryTitle.Text = "Battery Charge Limit: " + limit.ToString() + "%"; trackBattery.Value = limit; - Program.wmi.DeviceSet(ASUSWmi.BatteryLimit, limit); + Program.wmi.DeviceSet(ASUSWmi.BatteryLimit, limit); Program.config.setConfig("charge_limit", limit); } - private void trackBatteryChange(object? sender, EventArgs e) - { - if (sender is null) return; - TrackBar bar = (TrackBar)sender; - SetBatteryChargeLimit(bar.Value); - } - } diff --git a/docs/screenshot-dark.png b/docs/screenshot-dark.png index d84d1f4a..f4ec210b 100644 Binary files a/docs/screenshot-dark.png and b/docs/screenshot-dark.png differ