diff --git a/app/ControlHelper.cs b/app/ControlHelper.cs index dcfacc87..9da58eb2 100644 --- a/app/ControlHelper.cs +++ b/app/ControlHelper.cs @@ -2,6 +2,7 @@ using WinFormsSliderBar; using System.Drawing.Drawing2D; using System.Windows.Forms.DataVisualization.Charting; +using System.Windows.Forms; public static class ControlHelper { diff --git a/app/Extra.cs b/app/Extra.cs index cc929eca..7debb981 100644 --- a/app/Extra.cs +++ b/app/Extra.cs @@ -13,7 +13,7 @@ namespace GHelper {"screenshot", Properties.Strings.PrintScreen}, {"play", Properties.Strings.PlayPause}, {"aura", Properties.Strings.ToggleAura}, - {"ghelper", Properties.Strings.OpenGHelper}, + {"performance", Properties.Strings.PerformanceMode}, {"screen", Properties.Strings.ToggleScreen}, {"miniled", Properties.Strings.ToggleMiniled}, {"custom", Properties.Strings.Custom} @@ -22,7 +22,7 @@ namespace GHelper private void SetKeyCombo(ComboBox combo, TextBox txbox, string name) { if (name == "m4") - customActions[""] = Properties.Strings.PerformanceMode; + customActions[""] = Properties.Strings.OpenGHelper; if (name == "fnf4") { diff --git a/app/Fans.cs b/app/Fans.cs index 3858d806..c4386479 100644 --- a/app/Fans.cs +++ b/app/Fans.cs @@ -79,6 +79,7 @@ namespace GHelper //labelInfo.MaximumSize = new Size(280, 0); labelInfo.Text = Properties.Strings.PPTExperimental; + labelFansResult.Visible = false; InitFans(); InitPower(); @@ -283,7 +284,7 @@ namespace GHelper public void LabelFansResult(string text) { labelFansResult.Text = text; - labelFansResult.Visible = (text.Length == 0); + labelFansResult.Visible = (text.Length > 0); } private void Fans_FormClosing(object? sender, FormClosingEventArgs e) diff --git a/app/GHelper.csproj b/app/GHelper.csproj index 01a004d0..8f362810 100644 --- a/app/GHelper.csproj +++ b/app/GHelper.csproj @@ -16,7 +16,7 @@ AnyCPU False True - 0.56 + 0.57 diff --git a/app/Program.cs b/app/Program.cs index 8ac223b4..25cc54ff 100644 --- a/app/Program.cs +++ b/app/Program.cs @@ -3,11 +3,44 @@ using System.Diagnostics; using System.Globalization; using System.Management; using System.Reflection; +using System.Runtime.InteropServices; using System.Security.Principal; +using System.Windows.Forms; using Tools; namespace GHelper { + + class CustomContextMenu : ContextMenuStrip + { + [DllImport("dwmapi.dll", CharSet = CharSet.Unicode, SetLastError = true)] + private static extern long DwmSetWindowAttribute(IntPtr hwnd, + DWMWINDOWATTRIBUTE attribute, + ref DWM_WINDOW_CORNER_PREFERENCE pvAttribute, + uint cbAttribute); + + public CustomContextMenu() + { + var preference = DWM_WINDOW_CORNER_PREFERENCE.DWMWCP_ROUNDSMALL; //change as you want + DwmSetWindowAttribute(Handle, + DWMWINDOWATTRIBUTE.DWMWA_WINDOW_CORNER_PREFERENCE, + ref preference, + sizeof(uint)); + } + + public enum DWMWINDOWATTRIBUTE + { + DWMWA_WINDOW_CORNER_PREFERENCE = 33 + } + public enum DWM_WINDOW_CORNER_PREFERENCE + { + DWMWA_DEFAULT = 0, + DWMWCP_DONOTROUND = 1, + DWMWCP_ROUND = 2, + DWMWCP_ROUNDSMALL = 3, + } + } + static class Program { public static NotifyIcon trayIcon = new NotifyIcon @@ -145,7 +178,6 @@ namespace GHelper } - static void SystemEvents_UserPreferenceChanged(object sender, UserPreferenceChangedEventArgs e) { @@ -173,7 +205,7 @@ namespace GHelper - public static void SetAutoModes(bool monitor = true) + public static void SetAutoModes() { if (Math.Abs(DateTimeOffset.Now.ToUnixTimeMilliseconds() - lastAuto) < 3000) return; @@ -185,8 +217,7 @@ namespace GHelper settingsForm.SetBatteryChargeLimit(config.getConfig("charge_limit")); settingsForm.AutoPerformance(); - bool switched = false; - if (monitor) switched = settingsForm.AutoGPUMode(); + bool switched = settingsForm.AutoGPUMode(); if (!switched) { @@ -253,7 +284,7 @@ namespace GHelper if (action is null || action.Length <= 1) { if (name == "m4") - action = "performance"; + action = "ghelper"; if (name == "fnf4") action = "aura"; } @@ -338,7 +369,7 @@ namespace GHelper static void TrayIcon_MouseClick(object? sender, MouseEventArgs e) { - if (e.Button == MouseButtons.Left || e.Button == MouseButtons.Right) + if (e.Button == MouseButtons.Left) { SettingsToggle(); } diff --git a/app/Settings.cs b/app/Settings.cs index 1545f767..84c8a7a4 100644 --- a/app/Settings.cs +++ b/app/Settings.cs @@ -15,6 +15,9 @@ namespace GHelper public partial class SettingsForm : RForm { + private ContextMenuStrip contextMenuStrip = new CustomContextMenu(); + private ToolStripMenuItem menuSilent, menuBalanced, menuTurbo; + public static System.Timers.Timer aTimer = default!; public static Point trayPoint; @@ -140,6 +143,8 @@ namespace GHelper this.TopMost = Program.config.getConfig("topmost") == 1; + SetContextMenu(); + Task.Run(async () => { await Task.Delay(TimeSpan.FromSeconds(1)); @@ -147,6 +152,46 @@ namespace GHelper }); + } + + private void SetContextMenu() + { + + Padding padding = new Padding(5, 5, 5, 5); + + var menuTitle = new ToolStripMenuItem(Properties.Strings.PerformanceMode); + menuTitle.Margin = padding; + menuTitle.Enabled = false; + contextMenuStrip.Items.Add(menuTitle); + + menuSilent = new ToolStripMenuItem(Properties.Strings.Silent); + menuSilent.Click += ButtonSilent_Click; + menuSilent.Margin = padding; + contextMenuStrip.Items.Add(menuSilent); + + menuBalanced = new ToolStripMenuItem(Properties.Strings.Balanced); + menuBalanced.Click += ButtonBalanced_Click; + menuBalanced.Margin = padding; + contextMenuStrip.Items.Add(menuBalanced); + + menuTurbo = new ToolStripMenuItem(Properties.Strings.Turbo); + menuTurbo.Click += ButtonTurbo_Click; + menuTurbo.Checked = true; + menuTurbo.Margin = padding; + contextMenuStrip.Items.Add(menuTurbo); + + contextMenuStrip.ShowCheckMargin = true; + contextMenuStrip.RenderMode = ToolStripRenderMode.System; + + if (CheckSystemDarkModeStatus()) + { + contextMenuStrip.BackColor = this.BackColor; + contextMenuStrip.ForeColor = this.ForeColor; + } + + Program.trayIcon.ContextMenuStrip = contextMenuStrip; + + } private void ButtonXGM_Click(object? sender, EventArgs e) @@ -291,7 +336,7 @@ namespace GHelper break; case 1: Logger.WriteLine("Monitor Power On"); - Program.SetAutoModes(false); + Program.SetAutoModes(); break; case 2: Logger.WriteLine("Monitor Dimmed"); @@ -1029,18 +1074,25 @@ namespace GHelper buttonBalanced.Activated = false; buttonTurbo.Activated = false; + menuSilent.Checked = false; + menuBalanced.Checked = false; + menuTurbo.Checked = false; + switch (PerformanceMode) { case ASUSWmi.PerformanceSilent: buttonSilent.Activated = true; + menuSilent.Checked = true; perfName = Properties.Strings.Silent; break; case ASUSWmi.PerformanceTurbo: buttonTurbo.Activated = true; + menuTurbo.Checked = true; perfName = Properties.Strings.Turbo; break; default: buttonBalanced.Activated = true; + menuBalanced.Checked = true; PerformanceMode = ASUSWmi.PerformanceBalanced; perfName = Properties.Strings.Balanced; break;