From 43c6def16241bcaee587d2f1e1c420e8376b2a64 Mon Sep 17 00:00:00 2001 From: seerge Date: Thu, 9 Mar 2023 20:54:32 +0100 Subject: [PATCH] Update checker --- Communication/Device.cs | 15 +++++++- Fans.Designer.cs | 42 +++++++++++---------- GHelper.csproj | 2 +- Program.cs | 45 ++++++++++++++++++++-- Settings.Designer.cs | 18 ++++----- Settings.cs | 82 +++++++++++++++++++++-------------------- 6 files changed, 131 insertions(+), 73 deletions(-) diff --git a/Communication/Device.cs b/Communication/Device.cs index d57bf509..c73e91f4 100644 --- a/Communication/Device.cs +++ b/Communication/Device.cs @@ -1,6 +1,7 @@ // Source thanks to https://github.com/vddCore/Starlight :) using Starlight.Communication.Platform; +using System.Configuration; namespace Starlight.Communication { @@ -8,9 +9,21 @@ namespace Starlight.Communication { private static UsbProvider _usbProvider; + private static ushort _vendorId; + private static ushort _productId; + private static int _maxFeatureReportLength; + protected Device(ushort vendorId, ushort productId, int maxFeatureReportLength) { - _usbProvider = new WindowsUsbProvider(vendorId, productId, maxFeatureReportLength); + _vendorId = vendorId; + _productId = productId; + _maxFeatureReportLength = maxFeatureReportLength; + SetProvider(); + } + + public void SetProvider() + { + _usbProvider = new WindowsUsbProvider(_vendorId, _productId, _maxFeatureReportLength); } protected T Packet(params byte[] command) where T : Packet diff --git a/Fans.Designer.cs b/Fans.Designer.cs index ea8bf5f1..8a1f0871 100644 --- a/Fans.Designer.cs +++ b/Fans.Designer.cs @@ -28,9 +28,10 @@ /// private void InitializeComponent() { - System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea3 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); - System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea4 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); + System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); + System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); panelFans = new Panel(); + checkBoost = new CheckBox(); labelFans = new Label(); checkAuto = new CheckBox(); chartGPU = new System.Windows.Forms.DataVisualization.Charting.Chart(); @@ -52,7 +53,6 @@ labelApplied = new Label(); pictureFine = new PictureBox(); labelInfo = new Label(); - checkBoost = new CheckBox(); panelFans.SuspendLayout(); ((System.ComponentModel.ISupportInitialize)chartGPU).BeginInit(); ((System.ComponentModel.ISupportInitialize)chartCPU).BeginInit(); @@ -66,6 +66,7 @@ // // panelFans // + panelFans.AutoSize = true; panelFans.Controls.Add(checkBoost); panelFans.Controls.Add(labelFans); panelFans.Controls.Add(checkAuto); @@ -76,12 +77,24 @@ panelFans.Dock = DockStyle.Left; panelFans.Location = new Point(363, 0); panelFans.Margin = new Padding(10); - panelFans.MinimumSize = new Size(868, 1089); + panelFans.MinimumSize = new Size(872, 1089); panelFans.Name = "panelFans"; panelFans.Padding = new Padding(10); panelFans.Size = new Size(872, 1089); panelFans.TabIndex = 12; // + // checkBoost + // + checkBoost.AutoSize = true; + checkBoost.ForeColor = SystemColors.ControlText; + checkBoost.Location = new Point(512, 15); + checkBoost.Margin = new Padding(4, 2, 4, 2); + checkBoost.Name = "checkBoost"; + checkBoost.Size = new Size(320, 36); + checkBoost.TabIndex = 35; + checkBoost.Text = "CPU Turbo Boost enabled"; + checkBoost.UseVisualStyleBackColor = true; + // // labelFans // labelFans.AutoSize = true; @@ -107,8 +120,8 @@ // chartGPU // chartGPU.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; - chartArea3.Name = "ChartArea1"; - chartGPU.ChartAreas.Add(chartArea3); + chartArea1.Name = "ChartArea1"; + chartGPU.ChartAreas.Add(chartArea1); chartGPU.Location = new Point(22, 547); chartGPU.Margin = new Padding(4, 2, 4, 2); chartGPU.Name = "chartGPU"; @@ -141,8 +154,8 @@ // chartCPU // chartCPU.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; - chartArea4.Name = "ChartArea1"; - chartCPU.ChartAreas.Add(chartArea4); + chartArea2.Name = "ChartArea1"; + chartCPU.ChartAreas.Add(chartArea2); chartCPU.Location = new Point(22, 66); chartCPU.Margin = new Padding(10); chartCPU.Name = "chartCPU"; @@ -326,18 +339,6 @@ labelInfo.TabIndex = 19; labelInfo.Text = "label"; // - // checkBoost - // - checkBoost.AutoSize = true; - checkBoost.ForeColor = SystemColors.ControlText; - checkBoost.Location = new Point(512, 15); - checkBoost.Margin = new Padding(4, 2, 4, 2); - checkBoost.Name = "checkBoost"; - checkBoost.Size = new Size(320, 36); - checkBoost.TabIndex = 35; - checkBoost.Text = "CPU Turbo Boost enabled"; - checkBoost.UseVisualStyleBackColor = true; - // // Fans // AutoScaleDimensions = new SizeF(192F, 192F); @@ -371,6 +372,7 @@ ((System.ComponentModel.ISupportInitialize)trackTotal).EndInit(); ((System.ComponentModel.ISupportInitialize)pictureFine).EndInit(); ResumeLayout(false); + PerformLayout(); } #endregion diff --git a/GHelper.csproj b/GHelper.csproj index 75968040..ef724cf1 100644 --- a/GHelper.csproj +++ b/GHelper.csproj @@ -15,7 +15,7 @@ GHelper x64 False - 0.20 + 0.21 True diff --git a/Program.cs b/Program.cs index 40ea85f3..c4392455 100644 --- a/Program.cs +++ b/Program.cs @@ -1,7 +1,10 @@ using Microsoft.Win32; +using System; using System.Diagnostics; using System.Management; +using System.Reflection; using System.Runtime.InteropServices; +using System.Text.Json; public class HardwareMonitor { @@ -125,6 +128,8 @@ namespace GHelper IntPtr ds = settingsForm.Handle; + CheckForUpdates(); + Application.Run(); } @@ -139,10 +144,9 @@ namespace GHelper settingsForm.BeginInvoke(delegate { // Setting "other" mode to prevent bios bugging with PPTs after wake up from sleep - int PerformanceMode = (config.getConfig("performance_mode") + 1) % 3; - wmi.DeviceSet(ASUSWmi.PerformanceMode, PerformanceMode); + wmi.DeviceSet(ASUSWmi.PerformanceMode, config.getConfig("performance_mode")); Thread.Sleep(1000); - + SetAutoModes(); }); break; @@ -151,6 +155,40 @@ namespace GHelper return 0; } + + static async void CheckForUpdates() + { + + settingsForm.SetVersionLabel("Version: " + Assembly.GetExecutingAssembly().GetName().Version.ToString()); + + 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 assembly = Assembly.GetExecutingAssembly().GetName().Version.ToString(); + + var gitVersion = new Version(tag); + var appVersion = new Version(); + + var result = appVersion.CompareTo(gitVersion); + if (result > 0) + { + settingsForm.SetVersionLabel("Download Update: " + tag, url); + } + + } + } catch { + Debug.WriteLine("Failed to get update"); + } + + } + + private static void SetAutoModes() { PowerLineStatus isPlugged = SystemInformation.PowerStatus.PowerLineStatus; @@ -162,6 +200,7 @@ namespace GHelper settingsForm.AutoScreen(isPlugged); settingsForm.AutoGPUMode(isPlugged); + settingsForm.SetMatrix(isPlugged); } diff --git a/Settings.Designer.cs b/Settings.Designer.cs index 41b1b8cf..5198c48f 100644 --- a/Settings.Designer.cs +++ b/Settings.Designer.cs @@ -112,17 +112,17 @@ panelMatrix.Controls.Add(pictureMatrix); panelMatrix.Controls.Add(labelMatrix); panelMatrix.Dock = DockStyle.Top; - panelMatrix.Location = new Point(16, 806); + panelMatrix.Location = new Point(16, 814); panelMatrix.Margin = new Padding(4); panelMatrix.Name = "panelMatrix"; - panelMatrix.Size = new Size(722, 156); + panelMatrix.Size = new Size(722, 180); panelMatrix.TabIndex = 33; // // checkMatrix // checkMatrix.AutoSize = true; checkMatrix.ForeColor = SystemColors.GrayText; - checkMatrix.Location = new Point(26, 112); + checkMatrix.Location = new Point(28, 109); checkMatrix.Margin = new Padding(4, 2, 4, 2); checkMatrix.Name = "checkMatrix"; checkMatrix.Size = new Size(249, 36); @@ -158,7 +158,7 @@ buttonMatrix.Name = "buttonMatrix"; buttonMatrix.Size = new Size(208, 42); buttonMatrix.TabIndex = 43; - buttonMatrix.Text = "Picture"; + buttonMatrix.Text = "Picture / Gif"; buttonMatrix.UseVisualStyleBackColor = false; // // comboMatrixRunning @@ -219,7 +219,7 @@ panelBattery.Controls.Add(labelBatteryTitle); panelBattery.Controls.Add(trackBattery); panelBattery.Dock = DockStyle.Top; - panelBattery.Location = new Point(16, 962); + panelBattery.Location = new Point(16, 994); panelBattery.Margin = new Padding(4); panelBattery.Name = "panelBattery"; panelBattery.Size = new Size(722, 148); @@ -290,7 +290,7 @@ panelFooter.Controls.Add(buttonQuit); panelFooter.Controls.Add(checkStartup); panelFooter.Dock = DockStyle.Top; - panelFooter.Location = new Point(16, 1110); + panelFooter.Location = new Point(16, 1142); panelFooter.Margin = new Padding(4); panelFooter.Name = "panelFooter"; panelFooter.Size = new Size(722, 64); @@ -581,7 +581,7 @@ // checkScreen.AutoSize = true; checkScreen.ForeColor = SystemColors.GrayText; - checkScreen.Location = new Point(27, 154); + checkScreen.Location = new Point(27, 153); checkScreen.Margin = new Padding(4, 2, 4, 2); checkScreen.Name = "checkScreen"; checkScreen.Size = new Size(527, 36); @@ -669,7 +669,7 @@ panelKeyboard.Location = new Point(16, 660); panelKeyboard.Margin = new Padding(4); panelKeyboard.Name = "panelKeyboard"; - panelKeyboard.Size = new Size(722, 146); + panelKeyboard.Size = new Size(722, 154); panelKeyboard.TabIndex = 39; // // tableLayoutKeyboard @@ -761,7 +761,7 @@ buttonKeyboardColor.Name = "buttonKeyboardColor"; buttonKeyboardColor.Size = new Size(208, 42); buttonKeyboardColor.TabIndex = 39; - buttonKeyboardColor.Text = "Color "; + buttonKeyboardColor.Text = "Color "; buttonKeyboardColor.UseVisualStyleBackColor = false; // // pictureKeyboard diff --git a/Settings.cs b/Settings.cs index ed72d359..7530fd03 100644 --- a/Settings.cs +++ b/Settings.cs @@ -1,7 +1,6 @@ using Starlight.AnimeMatrix; using System.Diagnostics; using System.Drawing.Imaging; -using System.Reflection; using System.Timers; namespace GHelper @@ -20,14 +19,14 @@ namespace GHelper static System.Timers.Timer aTimer = default!; static System.Timers.Timer matrixTimer = default!; + public string versionUrl = "http://github.com/seerge/g-helper/releases"; + public string perfName = "Balanced"; Fans fans; Keyboard keyb; static AnimeMatrixDevice mat; - static bool matEnabled = false; - public SettingsForm() { @@ -76,9 +75,6 @@ namespace GHelper pictureColor.Click += PictureColor_Click; pictureColor2.Click += PictureColor2_Click; - labelVersion.Text = "Version " + Assembly.GetExecutingAssembly().GetName().Version.ToString(); - labelVersion.Click += LabelVersion_Click; - labelCPUFan.Click += LabelCPUFan_Click; labelGPUFan.Click += LabelCPUFan_Click; @@ -94,10 +90,29 @@ namespace GHelper checkStartup.CheckedChanged += CheckStartup_CheckedChanged; + labelVersion.Click += LabelVersion_Click; + SetTimer(); } + public void SetVersionLabel(string label, string url = null) + { + labelVersion.Text = label; + if (url is not null) + { + versionUrl = url; + labelVersion.ForeColor = Color.Red; + } + } + + + private void LabelVersion_Click(object? sender, EventArgs e) + { + Process.Start(new ProcessStartInfo(versionUrl) { UseShellExecute = true }); + } + + private void CheckStartup_CheckedChanged(object? sender, EventArgs e) { if (sender is null) return; @@ -254,6 +269,8 @@ namespace GHelper StopMatrixTimer(); + mat.SetProvider(); + if (brightness == 0 || (auto && Plugged != PowerLineStatus.Online)) { mat.SetDisplayState(false); @@ -272,6 +289,7 @@ namespace GHelper { mat.SetBuiltInAnimation(true, animation); } + } } @@ -284,11 +302,6 @@ namespace GHelper RefreshSensors(); } - private void LabelVersion_Click(object? sender, EventArgs e) - { - Process.Start(new ProcessStartInfo("http://github.com/seerge/g-helper/releases") { UseShellExecute = true }); - } - private void PictureColor2_Click(object? sender, EventArgs e) { @@ -387,36 +400,26 @@ namespace GHelper public void InitMatrix() { - matrixTimer = new System.Timers.Timer(); - matrixTimer.Enabled = false; - matrixTimer.Interval = 100; - try { - matEnabled = true; mat = new AnimeMatrixDevice(); + matrixTimer = new System.Timers.Timer(100); matrixTimer.Elapsed += MatrixTimer_Elapsed; } catch - { - matEnabled = false; - Debug.WriteLine("Anime Matrix not detected"); - } - - if (!matEnabled) { panelMatrix.Visible = false; + return; } - else - { - int brightness = Program.config.getConfig("matrix_brightness"); - int running = Program.config.getConfig("matrix_running"); - comboMatrix.SelectedIndex = (brightness != -1) ? brightness : 0; - comboMatrixRunning.SelectedIndex = (running != -1) ? running : 0; + int brightness = Program.config.getConfig("matrix_brightness"); + int running = Program.config.getConfig("matrix_running"); + + comboMatrix.SelectedIndex = (brightness != -1) ? brightness : 0; + comboMatrixRunning.SelectedIndex = (running != -1) ? running : 0; + + checkMatrix.Checked = (Program.config.getConfig("matrix_auto") == 1); - checkMatrix.Checked = (Program.config.getConfig("matrix_auto") == 1); - } } @@ -747,15 +750,6 @@ namespace GHelper Program.config.setConfig("performance_mode", PerformanceMode); Program.wmi.DeviceSet(ASUSWmi.PerformanceMode, PerformanceMode); - - AutoFansAndPower(); - - if (fans != null && fans.Text != "") - { - fans.InitFans(); - fans.InitPower(); - } - Debug.WriteLine("Perf:" + PerformanceMode); if (notify && (oldMode != PerformanceMode)) @@ -770,6 +764,16 @@ namespace GHelper } } + AutoFansAndPower(); + + if (fans != null && fans.Text != "") + { + fans.InitFans(); + fans.InitPower(); + } + + + }