diff --git a/Fans.Designer.cs b/Fans.Designer.cs index a0ffadde..71edd27c 100644 --- a/Fans.Designer.cs +++ b/Fans.Designer.cs @@ -29,11 +29,7 @@ private void InitializeComponent() { System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea1 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); - System.Windows.Forms.DataVisualization.Charting.Legend legend1 = new System.Windows.Forms.DataVisualization.Charting.Legend(); - System.Windows.Forms.DataVisualization.Charting.Series series1 = new System.Windows.Forms.DataVisualization.Charting.Series(); System.Windows.Forms.DataVisualization.Charting.ChartArea chartArea2 = new System.Windows.Forms.DataVisualization.Charting.ChartArea(); - System.Windows.Forms.DataVisualization.Charting.Legend legend2 = new System.Windows.Forms.DataVisualization.Charting.Legend(); - System.Windows.Forms.DataVisualization.Charting.Series series2 = new System.Windows.Forms.DataVisualization.Charting.Series(); chartCPU = new System.Windows.Forms.DataVisualization.Charting.Chart(); buttonApply = new Button(); buttonReset = new Button(); @@ -46,14 +42,8 @@ // chartArea1.Name = "ChartArea1"; chartCPU.ChartAreas.Add(chartArea1); - legend1.Name = "Legend1"; - chartCPU.Legends.Add(legend1); chartCPU.Location = new Point(16, 13); chartCPU.Name = "chartCPU"; - series1.ChartArea = "ChartArea1"; - series1.Legend = "Legend1"; - series1.Name = "Series1"; - chartCPU.Series.Add(series1); chartCPU.Size = new Size(900, 446); chartCPU.TabIndex = 0; chartCPU.Text = "chartCPU"; @@ -80,14 +70,8 @@ // chartArea2.Name = "ChartArea1"; chartGPU.ChartAreas.Add(chartArea2); - legend2.Name = "Legend1"; - chartGPU.Legends.Add(legend2); chartGPU.Location = new Point(16, 477); chartGPU.Name = "chartGPU"; - series2.ChartArea = "ChartArea1"; - series2.Legend = "Legend1"; - series2.Name = "Series1"; - chartGPU.Series.Add(series2); chartGPU.Size = new Size(900, 448); chartGPU.TabIndex = 3; chartGPU.Text = "chart1"; diff --git a/Fans.cs b/Fans.cs index 8d16ae54..c701b293 100644 --- a/Fans.cs +++ b/Fans.cs @@ -18,7 +18,7 @@ namespace GHelper if (device == 1) title = "GPU Fan Profile"; - else + else title = "CPU Fan Profile"; if (Program.settingsForm.perfName.Length > 0) @@ -34,7 +34,9 @@ namespace GHelper chart.ChartAreas[0].AxisX.Interval = 10; chart.ChartAreas[0].AxisY.Minimum = 0; chart.ChartAreas[0].AxisY.Maximum = 100; - chart.Legends[0].Enabled = false; + + if (chart.Legends.Count > 0) + chart.Legends[0].Enabled = false; } @@ -74,7 +76,7 @@ namespace GHelper { SetChart(chartCPU, 0); - SetChart(chartGPU, 0); + SetChart(chartGPU, 1); LoadProfile(seriesCPU, 0); LoadProfile(seriesGPU, 1); diff --git a/OSDBase.cs b/OSDBase.cs new file mode 100644 index 00000000..46b066be --- /dev/null +++ b/OSDBase.cs @@ -0,0 +1,483 @@ +using System.Drawing.Drawing2D; +using System.Drawing.Imaging; +using System.Runtime.InteropServices; + +namespace OSD +{ + + class OSDNativeForm : NativeWindow, IDisposable + { + + private bool _disposed = false; + private byte _alpha = 250; + private Size _size = new Size(350, 50); + private Point _location = new Point(50, 50); + + + protected virtual void PerformPaint(PaintEventArgs e) + { + } + + protected internal void Invalidate() + { + this.UpdateLayeredWindow(); + } + private void UpdateLayeredWindow() + { + Bitmap bitmap1 = new Bitmap(this.Size.Width, this.Size.Height, PixelFormat.Format32bppArgb); + using (Graphics graphics1 = Graphics.FromImage(bitmap1)) + { + Rectangle rectangle1; + SIZE size1; + POINT point1; + POINT point2; + BLENDFUNCTION blendfunction1; + rectangle1 = new Rectangle(0, 0, this.Size.Width, this.Size.Height); + PerformPaint(new PaintEventArgs(graphics1, rectangle1)); + IntPtr ptr1 = User32.GetDC(IntPtr.Zero); + IntPtr ptr2 = Gdi32.CreateCompatibleDC(ptr1); + IntPtr ptr3 = bitmap1.GetHbitmap(Color.FromArgb(0)); + IntPtr ptr4 = Gdi32.SelectObject(ptr2, ptr3); + size1.cx = this.Size.Width; + size1.cy = this.Size.Height; + point1.x = this.Location.X; + point1.x = this.Location.X; + point1.y = this.Location.Y; + point2.x = 0; + point2.y = 0; + blendfunction1 = new BLENDFUNCTION(); + blendfunction1.BlendOp = 0; + blendfunction1.BlendFlags = 0; + blendfunction1.SourceConstantAlpha = this._alpha; + blendfunction1.AlphaFormat = 1; + User32.UpdateLayeredWindow(base.Handle, ptr1, ref point1, ref size1, ptr2, ref point2, 0, ref blendfunction1, 2); //2=ULW_ALPHA + Gdi32.SelectObject(ptr2, ptr4); + User32.ReleaseDC(IntPtr.Zero, ptr1); + Gdi32.DeleteObject(ptr3); + Gdi32.DeleteDC(ptr2); + } + } + + public virtual void Show() + { + if (base.Handle == IntPtr.Zero) //if handle don't equal to zero - window was created and just hided + this.CreateWindowOnly(); + User32.ShowWindow(base.Handle, User32.SW_SHOWNOACTIVATE); + } + + + public virtual void Hide() + { + if (base.Handle == IntPtr.Zero) + return; + User32.ShowWindow(base.Handle, User32.SW_HIDE); + this.DestroyHandle(); + } + + + public virtual void Close() + { + this.Hide(); + this.Dispose(); + } + + private void CreateWindowOnly() + { + + CreateParams params1 = new CreateParams(); + params1.Caption = "FloatingNativeWindow"; + int nX = this._location.X; + int nY = this._location.Y; + Screen screen1 = Screen.FromHandle(base.Handle); + if ((nX + this._size.Width) > screen1.Bounds.Width) + { + nX = screen1.Bounds.Width - this._size.Width; + } + if ((nY + this._size.Height) > screen1.Bounds.Height) + { + nY = screen1.Bounds.Height - this._size.Height; + } + this._location = new Point(nX, nY); + Size size1 = this._size; + Point point1 = this._location; + params1.X = nX; + params1.Y = nY; + params1.Height = size1.Height; + params1.Width = size1.Width; + params1.Parent = IntPtr.Zero; + uint ui = User32.WS_POPUP; + params1.Style = (int)ui; + params1.ExStyle = User32.WS_EX_TOPMOST | User32.WS_EX_TOOLWINDOW | User32.WS_EX_LAYERED | User32.WS_EX_NOACTIVATE | User32.WS_EX_TRANSPARENT; + this.CreateHandle(params1); + this.UpdateLayeredWindow(); + } + + + + protected virtual void SetBoundsCore(int x, int y, int width, int height) + { + if (((this.X != x) || (this.Y != y)) || ((this.Width != width) || (this.Height != height))) + { + if (base.Handle != IntPtr.Zero) + { + int num1 = 20; + if ((this.X == x) && (this.Y == y)) + { + num1 |= 2; + } + if ((this.Width == width) && (this.Height == height)) + { + num1 |= 1; + } + User32.SetWindowPos(base.Handle, IntPtr.Zero, x, y, width, height, (uint)num1); + } + else + { + this.Location = new Point(x, y); + this.Size = new Size(width, height); + } + } + } + + + + + #region # Properties # + /// + /// Get or set position of top-left corner of floating native window in screen coordinates + /// + public virtual Point Location + { + get { return this._location; } + set + { + if (base.Handle != IntPtr.Zero) + { + this.SetBoundsCore(value.X, value.Y, this._size.Width, this._size.Height); + RECT rect = new RECT(); + User32.GetWindowRect(base.Handle, ref rect); + this._location = new Point(rect.left, rect.top); + this.UpdateLayeredWindow(); + } + else + { + this._location = value; + } + } + } + /// + /// Get or set size of client area of floating native window + /// + public virtual Size Size + { + get { return this._size; } + set + { + if (base.Handle != IntPtr.Zero) + { + this.SetBoundsCore(this._location.X, this._location.Y, value.Width, value.Height); + RECT rect = new RECT(); + User32.GetWindowRect(base.Handle, ref rect); + this._size = new Size(rect.right - rect.left, rect.bottom - rect.top); + this.UpdateLayeredWindow(); + } + else + { + this._size = value; + } + } + } + /// + /// Gets or sets the height of the floating native window + /// + public int Height + { + get { return this._size.Height; } + set + { + this._size = new Size(this._size.Width, value); + } + } + /// + /// Gets or sets the width of the floating native window + /// + public int Width + { + get { return this._size.Width; } + set + { + this._size = new Size(value, this._size.Height); + } + } + /// + /// Get or set x-coordinate of top-left corner of floating native window in screen coordinates + /// + public int X + { + get { return this._location.X; } + set + { + this.Location = new Point(value, this.Location.Y); + } + } + /// + /// Get or set y-coordinate of top-left corner of floating native window in screen coordinates + /// + public int Y + { + get { return this._location.Y; } + set + { + this.Location = new Point(this.Location.X, value); + } + } + /// + /// Get rectangle represented client area of floating native window in client coordinates(top-left corner always has coord. 0,0) + /// + public Rectangle Bound + { + get + { + return new Rectangle(new Point(0, 0), this._size); + } + } + /// + /// Get or set full opacity(255) or full transparency(0) or any intermediate state for floating native window transparency + /// + public byte Alpha + { + get { return this._alpha; } + set + { + if (this._alpha == value) return; + this._alpha = value; + this.UpdateLayeredWindow(); + } + } + #endregion + + #region IDisposable Members + public void Dispose() + { + this.Dispose(true); + GC.SuppressFinalize(this); + } + private void Dispose(bool disposing) + { + if (!this._disposed) + { + this.DestroyHandle(); + this._disposed = true; + } + } + #endregion + } + + #region # Win32 # + internal struct PAINTSTRUCT + { + public IntPtr hdc; + public int fErase; + public Rectangle rcPaint; + public int fRestore; + public int fIncUpdate; + public int Reserved1; + public int Reserved2; + public int Reserved3; + public int Reserved4; + public int Reserved5; + public int Reserved6; + public int Reserved7; + public int Reserved8; + } + [StructLayout(LayoutKind.Sequential)] + internal struct POINT + { + public int x; + public int y; + } + [StructLayout(LayoutKind.Sequential)] + internal struct RECT + { + public int left; + public int top; + public int right; + public int bottom; + } + [StructLayout(LayoutKind.Sequential)] + internal struct SIZE + { + public int cx; + public int cy; + } + [StructLayout(LayoutKind.Sequential)] + internal struct TRACKMOUSEEVENTS + { + public uint cbSize; + public uint dwFlags; + public IntPtr hWnd; + public uint dwHoverTime; + } + [StructLayout(LayoutKind.Sequential)] + internal struct MSG + { + public IntPtr hwnd; + public int message; + public IntPtr wParam; + public IntPtr lParam; + public int time; + public int pt_x; + public int pt_y; + } + [StructLayout(LayoutKind.Sequential, Pack = 1)] + internal struct BLENDFUNCTION + { + public byte BlendOp; + public byte BlendFlags; + public byte SourceConstantAlpha; + public byte AlphaFormat; + } + internal class User32 + { + public const uint WS_POPUP = 0x80000000; + public const int WS_EX_TOPMOST = 0x8; + public const int WS_EX_TOOLWINDOW = 0x80; + public const int WS_EX_LAYERED = 0x80000; + public const int WS_EX_TRANSPARENT = 0x20; + public const int WS_EX_NOACTIVATE = 0x08000000; + public const int SW_SHOWNOACTIVATE = 4; + public const int SW_HIDE = 0; + public const uint AW_HOR_POSITIVE = 0x1; + public const uint AW_HOR_NEGATIVE = 0x2; + public const uint AW_VER_POSITIVE = 0x4; + public const uint AW_VER_NEGATIVE = 0x8; + public const uint AW_CENTER = 0x10; + public const uint AW_HIDE = 0x10000; + public const uint AW_ACTIVATE = 0x20000; + public const uint AW_SLIDE = 0x40000; + public const uint AW_BLEND = 0x80000; + // Methods + private User32() + { + } + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool AnimateWindow(IntPtr hWnd, uint dwTime, uint dwFlags); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern IntPtr BeginPaint(IntPtr hWnd, ref PAINTSTRUCT ps); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool ClientToScreen(IntPtr hWnd, ref POINT pt); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool DispatchMessage(ref MSG msg); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool DrawFocusRect(IntPtr hWnd, ref RECT rect); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool EndPaint(IntPtr hWnd, ref PAINTSTRUCT ps); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern IntPtr GetDC(IntPtr hWnd); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern IntPtr GetFocus(); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern ushort GetKeyState(int virtKey); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool GetMessage(ref MSG msg, int hWnd, uint wFilterMin, uint wFilterMax); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern IntPtr GetParent(IntPtr hWnd); + [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] + public static extern bool GetClientRect(IntPtr hWnd, [In, Out] ref RECT rect); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern int GetWindowLong(IntPtr hWnd, int nIndex); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern IntPtr GetWindow(IntPtr hWnd, int cmd); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool GetWindowRect(IntPtr hWnd, ref RECT rect); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool HideCaret(IntPtr hWnd); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool InvalidateRect(IntPtr hWnd, ref RECT rect, bool erase); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern IntPtr LoadCursor(IntPtr hInstance, uint cursor); + [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] + public static extern int MapWindowPoints(IntPtr hWndFrom, IntPtr hWndTo, [In, Out] ref RECT rect, int cPoints); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool MoveWindow(IntPtr hWnd, int x, int y, int width, int height, bool repaint); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool PeekMessage(ref MSG msg, int hWnd, uint wFilterMin, uint wFilterMax, uint wFlag); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool PostMessage(IntPtr hWnd, int Msg, uint wParam, uint lParam); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool ReleaseCapture(); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern int ReleaseDC(IntPtr hWnd, IntPtr hDC); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool ScreenToClient(IntPtr hWnd, ref POINT pt); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern uint SendMessage(IntPtr hWnd, int Msg, uint wParam, uint lParam); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern IntPtr SetCursor(IntPtr hCursor); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern IntPtr SetFocus(IntPtr hWnd); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern int SetWindowLong(IntPtr hWnd, int nIndex, int newLong); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern int SetWindowPos(IntPtr hWnd, IntPtr hWndAfter, int X, int Y, int Width, int Height, uint flags); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool SetWindowRgn(IntPtr hWnd, IntPtr hRgn, bool redraw); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool ShowCaret(IntPtr hWnd); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool SetCapture(IntPtr hWnd); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern int ShowWindow(IntPtr hWnd, short cmdShow); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool SystemParametersInfo(uint uiAction, uint uiParam, ref int bRetValue, uint fWinINI); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool TrackMouseEvent(ref TRACKMOUSEEVENTS tme); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool TranslateMessage(ref MSG msg); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool UpdateLayeredWindow(IntPtr hwnd, IntPtr hdcDst, ref POINT pptDst, ref SIZE psize, IntPtr hdcSrc, ref POINT pprSrc, int crKey, ref BLENDFUNCTION pblend, int dwFlags); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool UpdateWindow(IntPtr hwnd); + [DllImport("User32.dll", CharSet = CharSet.Auto)] + internal static extern bool WaitMessage(); + [DllImport("user32.dll", CharSet = CharSet.Auto, ExactSpelling = true)] + public static extern bool AdjustWindowRectEx(ref RECT lpRect, int dwStyle, bool bMenu, int dwExStyle); + } + + internal class Gdi32 + { + // Methods + private Gdi32() + { + } + [DllImport("gdi32.dll", CharSet = CharSet.Auto)] + internal static extern int CombineRgn(IntPtr dest, IntPtr src1, IntPtr src2, int flags); + [DllImport("gdi32.dll", CharSet = CharSet.Auto)] + internal static extern IntPtr CreateBrushIndirect(ref LOGBRUSH brush); + [DllImport("gdi32.dll", CharSet = CharSet.Auto)] + internal static extern IntPtr CreateCompatibleDC(IntPtr hDC); + [DllImport("gdi32.dll", CharSet = CharSet.Auto)] + internal static extern IntPtr CreateRectRgnIndirect(ref RECT rect); + [DllImport("gdi32.dll", CharSet = CharSet.Auto)] + internal static extern bool DeleteDC(IntPtr hDC); + [DllImport("gdi32.dll", CharSet = CharSet.Auto)] + internal static extern IntPtr DeleteObject(IntPtr hObject); + [DllImport("gdi32.dll", CharSet = CharSet.Auto)] + internal static extern int GetClipBox(IntPtr hDC, ref RECT rectBox); + [DllImport("gdi32.dll", CharSet = CharSet.Auto)] + internal static extern bool PatBlt(IntPtr hDC, int x, int y, int width, int height, uint flags); + [DllImport("gdi32.dll", CharSet = CharSet.Auto)] + internal static extern int SelectClipRgn(IntPtr hDC, IntPtr hRgn); + [DllImport("gdi32.dll", CharSet = CharSet.Auto)] + internal static extern IntPtr SelectObject(IntPtr hDC, IntPtr hObject); + } + [StructLayout(LayoutKind.Sequential)] + public struct LOGBRUSH + { + public uint lbStyle; + public uint lbColor; + public uint lbHatch; + } + + #endregion +} diff --git a/Program.cs b/Program.cs index 00e19d22..61edc9b3 100644 --- a/Program.cs +++ b/Program.cs @@ -1,8 +1,8 @@ using Microsoft.Win32; using System.Diagnostics; using System.Management; +using System.Runtime.InteropServices; using System.Security.Principal; -using System.Text; using System.Text.Json; @@ -84,81 +84,49 @@ public class AppConfig public class HardwareMonitor { + public static float? cpuTemp = -1; + public static float? batteryDischarge = -1; - public float? cpuTemp = -1; - public float? gpuTemp = -1; - public float? batteryDischarge = -1; - public float? batteryCharge = -1; - public static bool IsAdministrator() + public static void ReadSensors() { - return (new WindowsPrincipal(WindowsIdentity.GetCurrent())) - .IsInRole(WindowsBuiltInRole.Administrator); - } - - public HardwareMonitor() - { - - } - - public void ReadSensors() - { - cpuTemp = -1; - gpuTemp = -1; batteryDischarge = -1; try { + var ct = new PerformanceCounter("Thermal Zone Information", "Temperature", @"\_TZ.THRM", true); + cpuTemp = ct.NextValue() - 273; + ct.Dispose(); - if (cpuTemp < 0) - { - var ct = new PerformanceCounter("Thermal Zone Information", "Temperature", @"\_TZ.THRM", true); - cpuTemp = ct.NextValue() - 273; - ct.Dispose(); - } - - if (batteryDischarge < 0) - { - var ct = new PerformanceCounter("Power Meter", "Power", "Power Meter (0)", true); - batteryDischarge = ct.NextValue() / 1000; - ct.Dispose(); - } - - - } catch + var cb = new PerformanceCounter("Power Meter", "Power", "Power Meter (0)", true); + batteryDischarge = ct.NextValue() / 1000; + cb.Dispose(); + } + catch { Debug.WriteLine("Failed reading sensors"); } - - - } - - public void StopReading() - { - //computer.Close(); } } - - namespace GHelper { static class Program { public static NotifyIcon trayIcon = new NotifyIcon - { - Text = "G-Helper", - Icon = Properties.Resources.standard, - Visible = true - }; + { + Text = "G-Helper", + Icon = Properties.Resources.standard, + Visible = true + }; public static ASUSWmi wmi = new ASUSWmi(); public static AppConfig config = new AppConfig(); - + public static SettingsForm settingsForm = new SettingsForm(); - public static HardwareMonitor hwmonitor = new HardwareMonitor(); + public static ToastForm toast = new ToastForm(); // The main entry point for the application public static void Main() @@ -186,7 +154,7 @@ namespace GHelper SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged; - IntPtr dummy = settingsForm.Handle; + IntPtr ds = settingsForm.Handle; Application.Run(); diff --git a/Properties/Resources.Designer.cs b/Properties/Resources.Designer.cs index adae0f25..3658fd96 100644 --- a/Properties/Resources.Designer.cs +++ b/Properties/Resources.Designer.cs @@ -80,6 +80,16 @@ namespace GHelper.Properties { } } + /// + /// Looks up a localized resource of type System.Drawing.Bitmap. + /// + internal static System.Drawing.Bitmap icons8_fan_head_96 { + get { + object obj = ResourceManager.GetObject("icons8-fan-head-96", resourceCulture); + return ((System.Drawing.Bitmap)(obj)); + } + } + /// /// Looks up a localized resource of type System.Drawing.Bitmap. /// diff --git a/Properties/Resources.resx b/Properties/Resources.resx index b4dac885..da1bf2d1 100644 --- a/Properties/Resources.resx +++ b/Properties/Resources.resx @@ -133,6 +133,9 @@ ..\Resources\icons8-speed-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icons8-speed-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + ..\Resources\icons8-video-card-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a @@ -142,7 +145,7 @@ ..\Resources\icons8-laptop-48.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a - - ..\Resources\icons8-speed-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a + + ..\Resources\icons8-fan-head-96.png;System.Drawing.Bitmap, System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a \ No newline at end of file diff --git a/Resources/icons8-fan-head-96.png b/Resources/icons8-fan-head-96.png new file mode 100644 index 00000000..e22b816a Binary files /dev/null and b/Resources/icons8-fan-head-96.png differ diff --git a/Settings.Designer.cs b/Settings.Designer.cs index 72aebda2..37ed495d 100644 --- a/Settings.Designer.cs +++ b/Settings.Designer.cs @@ -76,10 +76,10 @@ // checkStartup // checkStartup.AutoSize = true; - checkStartup.Location = new Point(20, 508); - checkStartup.Margin = new Padding(2, 1, 2, 1); + checkStartup.Location = new Point(40, 1016); + checkStartup.Margin = new Padding(4, 2, 4, 2); checkStartup.Name = "checkStartup"; - checkStartup.Size = new Size(105, 19); + checkStartup.Size = new Size(206, 36); checkStartup.TabIndex = 2; checkStartup.Text = "Run on Startup"; checkStartup.UseVisualStyleBackColor = true; @@ -89,12 +89,12 @@ // trackBattery.Anchor = AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right; trackBattery.LargeChange = 20; - trackBattery.Location = new Point(10, 454); - trackBattery.Margin = new Padding(2, 1, 2, 1); + trackBattery.Location = new Point(20, 908); + trackBattery.Margin = new Padding(4, 2, 4, 2); trackBattery.Maximum = 100; trackBattery.Minimum = 50; trackBattery.Name = "trackBattery"; - trackBattery.Size = new Size(338, 45); + trackBattery.Size = new Size(676, 90); trackBattery.SmallChange = 10; trackBattery.TabIndex = 3; trackBattery.TickFrequency = 10; @@ -105,10 +105,10 @@ // labelBatteryTitle.AutoSize = true; labelBatteryTitle.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point); - labelBatteryTitle.Location = new Point(38, 435); - labelBatteryTitle.Margin = new Padding(2, 0, 2, 0); + labelBatteryTitle.Location = new Point(76, 870); + labelBatteryTitle.Margin = new Padding(4, 0, 4, 0); labelBatteryTitle.Name = "labelBatteryTitle"; - labelBatteryTitle.Size = new Size(122, 15); + labelBatteryTitle.Size = new Size(248, 32); labelBatteryTitle.TabIndex = 4; labelBatteryTitle.Text = "Battery Charge Limit"; // @@ -116,20 +116,20 @@ // pictureBattery.BackgroundImage = (Image)resources.GetObject("pictureBattery.BackgroundImage"); pictureBattery.BackgroundImageLayout = ImageLayout.Zoom; - pictureBattery.Location = new Point(16, 434); - pictureBattery.Margin = new Padding(2, 1, 2, 1); + pictureBattery.Location = new Point(32, 868); + pictureBattery.Margin = new Padding(4, 2, 4, 2); pictureBattery.Name = "pictureBattery"; - pictureBattery.Size = new Size(18, 19); + pictureBattery.Size = new Size(36, 38); pictureBattery.TabIndex = 6; pictureBattery.TabStop = false; // // labelGPUFan // labelGPUFan.Anchor = AnchorStyles.Top | AnchorStyles.Right; - labelGPUFan.Location = new Point(205, 131); - labelGPUFan.Margin = new Padding(2, 0, 2, 0); + labelGPUFan.Location = new Point(410, 262); + labelGPUFan.Margin = new Padding(4, 0, 4, 0); labelGPUFan.Name = "labelGPUFan"; - labelGPUFan.Size = new Size(138, 16); + labelGPUFan.Size = new Size(276, 32); labelGPUFan.TabIndex = 8; labelGPUFan.Text = "GPU Fan : 0%"; labelGPUFan.TextAlign = ContentAlignment.TopRight; @@ -144,12 +144,12 @@ tableGPU.Controls.Add(buttonUltimate, 2, 0); tableGPU.Controls.Add(buttonStandard, 1, 0); tableGPU.Controls.Add(buttonEco, 0, 0); - tableGPU.Location = new Point(11, 152); - tableGPU.Margin = new Padding(2, 1, 2, 1); + tableGPU.Location = new Point(22, 304); + tableGPU.Margin = new Padding(4, 2, 4, 2); tableGPU.Name = "tableGPU"; tableGPU.RowCount = 1; - tableGPU.RowStyles.Add(new RowStyle(SizeType.Absolute, 54F)); - tableGPU.Size = new Size(338, 54); + tableGPU.RowStyles.Add(new RowStyle(SizeType.Absolute, 108F)); + tableGPU.Size = new Size(676, 108); tableGPU.TabIndex = 7; // // buttonUltimate @@ -158,10 +158,10 @@ buttonUltimate.Dock = DockStyle.Fill; buttonUltimate.FlatAppearance.BorderSize = 0; buttonUltimate.FlatStyle = FlatStyle.Flat; - buttonUltimate.Location = new Point(228, 6); - buttonUltimate.Margin = new Padding(4, 6, 4, 6); + buttonUltimate.Location = new Point(458, 12); + buttonUltimate.Margin = new Padding(8, 12, 8, 12); buttonUltimate.Name = "buttonUltimate"; - buttonUltimate.Size = new Size(106, 42); + buttonUltimate.Size = new Size(210, 84); buttonUltimate.TabIndex = 2; buttonUltimate.Text = "Ultimate"; buttonUltimate.UseVisualStyleBackColor = false; @@ -172,10 +172,10 @@ buttonStandard.Dock = DockStyle.Fill; buttonStandard.FlatAppearance.BorderSize = 0; buttonStandard.FlatStyle = FlatStyle.Flat; - buttonStandard.Location = new Point(116, 6); - buttonStandard.Margin = new Padding(4, 6, 4, 6); + buttonStandard.Location = new Point(233, 12); + buttonStandard.Margin = new Padding(8, 12, 8, 12); buttonStandard.Name = "buttonStandard"; - buttonStandard.Size = new Size(104, 42); + buttonStandard.Size = new Size(209, 84); buttonStandard.TabIndex = 1; buttonStandard.Text = "Standard"; buttonStandard.UseVisualStyleBackColor = false; @@ -187,10 +187,10 @@ buttonEco.Dock = DockStyle.Fill; buttonEco.FlatAppearance.BorderSize = 0; buttonEco.FlatStyle = FlatStyle.Flat; - buttonEco.Location = new Point(4, 6); - buttonEco.Margin = new Padding(4, 6, 4, 6); + buttonEco.Location = new Point(8, 12); + buttonEco.Margin = new Padding(8, 12, 8, 12); buttonEco.Name = "buttonEco"; - buttonEco.Size = new Size(104, 42); + buttonEco.Size = new Size(209, 84); buttonEco.TabIndex = 0; buttonEco.Text = "Eco"; buttonEco.UseVisualStyleBackColor = false; @@ -199,10 +199,10 @@ // labelGPU.AutoSize = true; labelGPU.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point); - labelGPU.Location = new Point(38, 132); - labelGPU.Margin = new Padding(2, 0, 2, 0); + labelGPU.Location = new Point(76, 264); + labelGPU.Margin = new Padding(4, 0, 4, 0); labelGPU.Name = "labelGPU"; - labelGPU.Size = new Size(67, 15); + labelGPU.Size = new Size(136, 32); labelGPU.TabIndex = 9; labelGPU.Text = "GPU Mode"; // @@ -210,20 +210,20 @@ // pictureGPU.BackgroundImage = (Image)resources.GetObject("pictureGPU.BackgroundImage"); pictureGPU.BackgroundImageLayout = ImageLayout.Zoom; - pictureGPU.Location = new Point(16, 131); - pictureGPU.Margin = new Padding(2, 1, 2, 1); + pictureGPU.Location = new Point(32, 262); + pictureGPU.Margin = new Padding(4, 2, 4, 2); pictureGPU.Name = "pictureGPU"; - pictureGPU.Size = new Size(18, 19); + pictureGPU.Size = new Size(36, 38); pictureGPU.TabIndex = 10; pictureGPU.TabStop = false; // // labelCPUFan // labelCPUFan.Anchor = AnchorStyles.Top | AnchorStyles.Right; - labelCPUFan.Location = new Point(205, 19); - labelCPUFan.Margin = new Padding(2, 0, 2, 0); + labelCPUFan.Location = new Point(410, 38); + labelCPUFan.Margin = new Padding(4, 0, 4, 0); labelCPUFan.Name = "labelCPUFan"; - labelCPUFan.Size = new Size(138, 16); + labelCPUFan.Size = new Size(276, 32); labelCPUFan.TabIndex = 12; labelCPUFan.Text = "CPU Fan : 0%"; labelCPUFan.TextAlign = ContentAlignment.TopRight; @@ -238,12 +238,12 @@ tablePerf.Controls.Add(buttonTurbo, 2, 0); tablePerf.Controls.Add(buttonBalanced, 1, 0); tablePerf.Controls.Add(buttonSilent, 0, 0); - tablePerf.Location = new Point(11, 38); - tablePerf.Margin = new Padding(2, 1, 2, 1); + tablePerf.Location = new Point(22, 76); + tablePerf.Margin = new Padding(4, 2, 4, 2); tablePerf.Name = "tablePerf"; tablePerf.RowCount = 1; - tablePerf.RowStyles.Add(new RowStyle(SizeType.Absolute, 54F)); - tablePerf.Size = new Size(338, 54); + tablePerf.RowStyles.Add(new RowStyle(SizeType.Absolute, 108F)); + tablePerf.Size = new Size(676, 108); tablePerf.TabIndex = 11; // // buttonTurbo @@ -253,10 +253,10 @@ buttonTurbo.FlatAppearance.BorderColor = Color.FromArgb(192, 0, 0); buttonTurbo.FlatAppearance.BorderSize = 0; buttonTurbo.FlatStyle = FlatStyle.Flat; - buttonTurbo.Location = new Point(228, 6); - buttonTurbo.Margin = new Padding(4, 6, 4, 6); + buttonTurbo.Location = new Point(458, 12); + buttonTurbo.Margin = new Padding(8, 12, 8, 12); buttonTurbo.Name = "buttonTurbo"; - buttonTurbo.Size = new Size(106, 42); + buttonTurbo.Size = new Size(210, 84); buttonTurbo.TabIndex = 2; buttonTurbo.Text = "Turbo"; buttonTurbo.UseVisualStyleBackColor = false; @@ -268,10 +268,10 @@ buttonBalanced.FlatAppearance.BorderColor = Color.FromArgb(0, 0, 192); buttonBalanced.FlatAppearance.BorderSize = 0; buttonBalanced.FlatStyle = FlatStyle.Flat; - buttonBalanced.Location = new Point(116, 6); - buttonBalanced.Margin = new Padding(4, 6, 4, 6); + buttonBalanced.Location = new Point(233, 12); + buttonBalanced.Margin = new Padding(8, 12, 8, 12); buttonBalanced.Name = "buttonBalanced"; - buttonBalanced.Size = new Size(104, 42); + buttonBalanced.Size = new Size(209, 84); buttonBalanced.TabIndex = 1; buttonBalanced.Text = "Balanced"; buttonBalanced.UseVisualStyleBackColor = false; @@ -284,10 +284,10 @@ buttonSilent.FlatAppearance.BorderColor = Color.FromArgb(0, 192, 192); buttonSilent.FlatAppearance.BorderSize = 0; buttonSilent.FlatStyle = FlatStyle.Flat; - buttonSilent.Location = new Point(4, 6); - buttonSilent.Margin = new Padding(4, 6, 4, 6); + buttonSilent.Location = new Point(8, 12); + buttonSilent.Margin = new Padding(8, 12, 8, 12); buttonSilent.Name = "buttonSilent"; - buttonSilent.Size = new Size(104, 42); + buttonSilent.Size = new Size(209, 84); buttonSilent.TabIndex = 0; buttonSilent.Text = "Silent"; buttonSilent.UseVisualStyleBackColor = false; @@ -297,10 +297,10 @@ picturePerf.BackgroundImage = (Image)resources.GetObject("picturePerf.BackgroundImage"); picturePerf.BackgroundImageLayout = ImageLayout.Zoom; picturePerf.InitialImage = null; - picturePerf.Location = new Point(16, 18); - picturePerf.Margin = new Padding(2, 1, 2, 1); + picturePerf.Location = new Point(32, 36); + picturePerf.Margin = new Padding(4, 2, 4, 2); picturePerf.Name = "picturePerf"; - picturePerf.Size = new Size(18, 19); + picturePerf.Size = new Size(36, 38); picturePerf.TabIndex = 14; picturePerf.TabStop = false; // @@ -308,10 +308,10 @@ // labelPerf.AutoSize = true; labelPerf.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point); - labelPerf.Location = new Point(38, 19); - labelPerf.Margin = new Padding(2, 0, 2, 0); + labelPerf.Location = new Point(76, 38); + labelPerf.Margin = new Padding(4, 0, 4, 0); labelPerf.Name = "labelPerf"; - labelPerf.Size = new Size(115, 15); + labelPerf.Size = new Size(234, 32); labelPerf.TabIndex = 13; labelPerf.Text = "Performance Mode"; // @@ -319,10 +319,10 @@ // checkGPU.AutoSize = true; checkGPU.ForeColor = SystemColors.GrayText; - checkGPU.Location = new Point(16, 206); - checkGPU.Margin = new Padding(2, 1, 2, 1); + checkGPU.Location = new Point(32, 412); + checkGPU.Margin = new Padding(4, 2, 4, 2); checkGPU.Name = "checkGPU"; - checkGPU.Size = new Size(273, 19); + checkGPU.Size = new Size(550, 36); checkGPU.TabIndex = 15; checkGPU.Text = "Set Eco on battery and Standard when plugged"; checkGPU.UseVisualStyleBackColor = true; @@ -332,10 +332,10 @@ // buttonQuit.Anchor = AnchorStyles.Top | AnchorStyles.Right; buttonQuit.BackColor = SystemColors.ButtonFace; - buttonQuit.Location = new Point(288, 504); - buttonQuit.Margin = new Padding(2, 1, 2, 1); + buttonQuit.Location = new Point(576, 1008); + buttonQuit.Margin = new Padding(4, 2, 4, 2); buttonQuit.Name = "buttonQuit"; - buttonQuit.Size = new Size(60, 24); + buttonQuit.Size = new Size(120, 48); buttonQuit.TabIndex = 16; buttonQuit.Text = "Quit"; buttonQuit.UseVisualStyleBackColor = false; @@ -344,10 +344,10 @@ // pictureScreen.BackgroundImage = (Image)resources.GetObject("pictureScreen.BackgroundImage"); pictureScreen.BackgroundImageLayout = ImageLayout.Zoom; - pictureScreen.Location = new Point(16, 248); - pictureScreen.Margin = new Padding(2, 1, 2, 1); + pictureScreen.Location = new Point(32, 496); + pictureScreen.Margin = new Padding(4, 2, 4, 2); pictureScreen.Name = "pictureScreen"; - pictureScreen.Size = new Size(18, 19); + pictureScreen.Size = new Size(36, 38); pictureScreen.TabIndex = 18; pictureScreen.TabStop = false; // @@ -355,10 +355,10 @@ // labelSreen.AutoSize = true; labelSreen.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point); - labelSreen.Location = new Point(38, 248); - labelSreen.Margin = new Padding(2, 0, 2, 0); + labelSreen.Location = new Point(76, 496); + labelSreen.Margin = new Padding(4, 0, 4, 0); labelSreen.Name = "labelSreen"; - labelSreen.Size = new Size(87, 15); + labelSreen.Size = new Size(176, 32); labelSreen.TabIndex = 17; labelSreen.Text = "Laptop Screen"; // @@ -371,12 +371,12 @@ tableScreen.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 33.33333F)); tableScreen.Controls.Add(button120Hz, 1, 0); tableScreen.Controls.Add(button60Hz, 0, 0); - tableScreen.Location = new Point(11, 268); - tableScreen.Margin = new Padding(2, 1, 2, 1); + tableScreen.Location = new Point(22, 536); + tableScreen.Margin = new Padding(4, 2, 4, 2); tableScreen.Name = "tableScreen"; tableScreen.RowCount = 1; - tableScreen.RowStyles.Add(new RowStyle(SizeType.Absolute, 54F)); - tableScreen.Size = new Size(338, 54); + tableScreen.RowStyles.Add(new RowStyle(SizeType.Absolute, 108F)); + tableScreen.Size = new Size(676, 108); tableScreen.TabIndex = 19; // // button120Hz @@ -386,10 +386,10 @@ button120Hz.FlatAppearance.BorderColor = SystemColors.ActiveBorder; button120Hz.FlatAppearance.BorderSize = 0; button120Hz.FlatStyle = FlatStyle.Flat; - button120Hz.Location = new Point(116, 6); - button120Hz.Margin = new Padding(4, 6, 4, 6); + button120Hz.Location = new Point(233, 12); + button120Hz.Margin = new Padding(8, 12, 8, 12); button120Hz.Name = "button120Hz"; - button120Hz.Size = new Size(104, 42); + button120Hz.Size = new Size(209, 84); button120Hz.TabIndex = 1; button120Hz.Text = "120Hz + OD"; button120Hz.UseVisualStyleBackColor = false; @@ -403,10 +403,10 @@ button60Hz.FlatAppearance.BorderSize = 0; button60Hz.FlatStyle = FlatStyle.Flat; button60Hz.ForeColor = SystemColors.ControlText; - button60Hz.Location = new Point(4, 6); - button60Hz.Margin = new Padding(4, 6, 4, 6); + button60Hz.Location = new Point(8, 12); + button60Hz.Margin = new Padding(8, 12, 8, 12); button60Hz.Name = "button60Hz"; - button60Hz.Size = new Size(104, 42); + button60Hz.Size = new Size(209, 84); button60Hz.TabIndex = 0; button60Hz.Text = "60Hz"; button60Hz.UseVisualStyleBackColor = false; @@ -415,10 +415,10 @@ // checkScreen.AutoSize = true; checkScreen.ForeColor = SystemColors.GrayText; - checkScreen.Location = new Point(16, 322); - checkScreen.Margin = new Padding(2, 1, 2, 1); + checkScreen.Location = new Point(32, 644); + checkScreen.Margin = new Padding(4, 2, 4, 2); checkScreen.Name = "checkScreen"; - checkScreen.Size = new Size(261, 19); + checkScreen.Size = new Size(527, 36); checkScreen.TabIndex = 20; checkScreen.Text = "Set 60Hz on battery, and back when plugged"; checkScreen.UseVisualStyleBackColor = true; @@ -427,10 +427,10 @@ // checkBoost.AutoSize = true; checkBoost.ForeColor = SystemColors.GrayText; - checkBoost.Location = new Point(16, 92); - checkBoost.Margin = new Padding(2, 1, 2, 1); + checkBoost.Location = new Point(32, 184); + checkBoost.Margin = new Padding(4, 2, 4, 2); checkBoost.Name = "checkBoost"; - checkBoost.Size = new Size(161, 19); + checkBoost.Size = new Size(320, 36); checkBoost.TabIndex = 21; checkBoost.Text = "CPU Turbo Boost enabled"; checkBoost.UseVisualStyleBackColor = true; @@ -439,10 +439,10 @@ // pictureBox1.BackgroundImage = Properties.Resources.icons8_keyboard_48; pictureBox1.BackgroundImageLayout = ImageLayout.Zoom; - pictureBox1.Location = new Point(16, 362); - pictureBox1.Margin = new Padding(2, 1, 2, 1); + pictureBox1.Location = new Point(32, 724); + pictureBox1.Margin = new Padding(4, 2, 4, 2); pictureBox1.Name = "pictureBox1"; - pictureBox1.Size = new Size(18, 18); + pictureBox1.Size = new Size(36, 36); pictureBox1.TabIndex = 23; pictureBox1.TabStop = false; // @@ -450,10 +450,10 @@ // label1.AutoSize = true; label1.Font = new Font("Segoe UI", 9F, FontStyle.Bold, GraphicsUnit.Point); - label1.Location = new Point(38, 362); - label1.Margin = new Padding(2, 0, 2, 0); + label1.Location = new Point(76, 724); + label1.Margin = new Padding(4, 0, 4, 0); label1.Name = "label1"; - label1.Size = new Size(101, 15); + label1.Size = new Size(210, 32); label1.TabIndex = 22; label1.Text = "Laptop Keyboard"; // @@ -462,12 +462,12 @@ comboKeyboard.FlatStyle = FlatStyle.Flat; comboKeyboard.Font = new Font("Segoe UI", 10F, FontStyle.Regular, GraphicsUnit.Point); comboKeyboard.FormattingEnabled = true; - comboKeyboard.ItemHeight = 17; + comboKeyboard.ItemHeight = 37; comboKeyboard.Items.AddRange(new object[] { "Static", "Breathe", "Strobe", "Rainbow" }); - comboKeyboard.Location = new Point(18, 388); + comboKeyboard.Location = new Point(36, 777); comboKeyboard.Margin = new Padding(0); comboKeyboard.Name = "comboKeyboard"; - comboKeyboard.Size = new Size(102, 25); + comboKeyboard.Size = new Size(200, 45); comboKeyboard.TabIndex = 24; comboKeyboard.TabStop = false; // @@ -479,10 +479,10 @@ buttonKeyboardColor.FlatAppearance.BorderSize = 2; buttonKeyboardColor.FlatStyle = FlatStyle.Flat; buttonKeyboardColor.ForeColor = SystemColors.ControlText; - buttonKeyboardColor.Location = new Point(128, 388); + buttonKeyboardColor.Location = new Point(256, 775); buttonKeyboardColor.Margin = new Padding(0); buttonKeyboardColor.Name = "buttonKeyboardColor"; - buttonKeyboardColor.Size = new Size(106, 29); + buttonKeyboardColor.Size = new Size(212, 50); buttonKeyboardColor.TabIndex = 25; buttonKeyboardColor.Text = "Color"; buttonKeyboardColor.UseVisualStyleBackColor = false; @@ -490,10 +490,10 @@ // labelBattery // labelBattery.Anchor = AnchorStyles.Top | AnchorStyles.Right; - labelBattery.Location = new Point(205, 434); - labelBattery.Margin = new Padding(2, 0, 2, 0); + labelBattery.Location = new Point(410, 868); + labelBattery.Margin = new Padding(4, 0, 4, 0); labelBattery.Name = "labelBattery"; - labelBattery.Size = new Size(138, 16); + labelBattery.Size = new Size(276, 32); labelBattery.TabIndex = 27; labelBattery.Text = " "; labelBattery.TextAlign = ContentAlignment.TopRight; @@ -502,19 +502,20 @@ // buttonFans.Anchor = AnchorStyles.Top | AnchorStyles.Right; buttonFans.BackColor = SystemColors.ButtonFace; - buttonFans.Location = new Point(263, 93); - buttonFans.Margin = new Padding(2, 1, 2, 1); + buttonFans.FlatAppearance.BorderSize = 0; + buttonFans.Location = new Point(480, 186); + buttonFans.Margin = new Padding(4, 2, 4, 2); buttonFans.Name = "buttonFans"; - buttonFans.Size = new Size(82, 24); + buttonFans.Size = new Size(210, 48); buttonFans.TabIndex = 28; buttonFans.Text = "Fan Profile"; buttonFans.UseVisualStyleBackColor = false; // // SettingsForm // - AutoScaleDimensions = new SizeF(96F, 96F); + AutoScaleDimensions = new SizeF(192F, 192F); AutoScaleMode = AutoScaleMode.Dpi; - ClientSize = new Size(365, 543); + ClientSize = new Size(730, 1086); Controls.Add(buttonFans); Controls.Add(labelBattery); Controls.Add(buttonKeyboardColor); @@ -541,12 +542,12 @@ Controls.Add(trackBattery); Controls.Add(checkStartup); FormBorderStyle = FormBorderStyle.FixedSingle; - Margin = new Padding(2, 1, 2, 1); + Margin = new Padding(4, 2, 4, 2); MaximizeBox = false; MdiChildrenMinimizedAnchorBottom = false; MinimizeBox = false; Name = "SettingsForm"; - Padding = new Padding(4, 6, 4, 6); + Padding = new Padding(8, 12, 8, 12); ShowIcon = false; StartPosition = FormStartPosition.CenterScreen; Text = "G-Helper"; diff --git a/Settings.cs b/Settings.cs index f1ad1aa9..74764f2a 100644 --- a/Settings.cs +++ b/Settings.cs @@ -338,34 +338,19 @@ namespace GHelper string gpuFan = " Fan: " + Math.Round(Program.wmi.DeviceGet(ASUSWmi.GPU_Fan) / 0.6) + "%"; string cpuTemp = ""; - string gpuTemp = ""; string battery = ""; - try - { - Program.hwmonitor.ReadSensors(); - } - catch - { - Debug.WriteLine("Failed reading sensors"); - } + HardwareMonitor.ReadSensors(); - if (Program.hwmonitor.cpuTemp > 0) - cpuTemp = ": " + Math.Round((decimal)Program.hwmonitor.cpuTemp).ToString() + "°C - "; + if (HardwareMonitor.cpuTemp > 0) + cpuTemp = ": " + Math.Round((decimal)HardwareMonitor.cpuTemp).ToString() + "°C - "; - if (Program.hwmonitor.gpuTemp > 0) - gpuTemp = ": " + Math.Round((decimal)Program.hwmonitor.gpuTemp).ToString() + "°C - "; - - if (Program.hwmonitor.batteryDischarge > 0) - battery = "Discharging: " + Math.Round((decimal)Program.hwmonitor.batteryDischarge, 1).ToString() + "W"; - - if (Program.hwmonitor.batteryCharge > 0) - battery = "Charging: " + Math.Round((decimal)Program.hwmonitor.batteryCharge, 1).ToString() + "W"; + if (HardwareMonitor.batteryDischarge > 0) + battery = "Discharging: " + Math.Round((decimal)HardwareMonitor.batteryDischarge, 1).ToString() + "W"; Program.settingsForm.BeginInvoke(delegate { Program.settingsForm.labelCPUFan.Text = "CPU" + cpuTemp + cpuFan; - Program.settingsForm.labelGPUFan.Text = "GPU" + gpuTemp + gpuFan; Program.settingsForm.labelBattery.Text = battery; }); } @@ -382,7 +367,7 @@ namespace GHelper { InitScreen(); - this.Left = Screen.FromControl(this).Bounds.Width - 10 - this.Width; + this.Left = Screen.FromControl(this).WorkingArea.Width - 10 - this.Width; this.Top = Screen.FromControl(this).WorkingArea.Height - 10 - this.Height; this.Activate(); @@ -393,7 +378,6 @@ namespace GHelper else { aTimer.Enabled = false; - Program.hwmonitor.StopReading(); } } @@ -435,7 +419,11 @@ namespace GHelper if (fans != null && fans.Text != "") fans.LoadFans(); - } + if (notify) { + Program.toast.RunToast(perfName); + } + +} public void CyclePerformanceMode() diff --git a/ToastForm.Designer.cs b/ToastForm.Designer.cs deleted file mode 100644 index b7bc2cf2..00000000 --- a/ToastForm.Designer.cs +++ /dev/null @@ -1,85 +0,0 @@ -namespace GHelper -{ - partial class ToastForm - { - /// - /// Required designer variable. - /// - private System.ComponentModel.IContainer components = null; - - /// - /// Clean up any resources being used. - /// - /// true if managed resources should be disposed; otherwise, false. - protected override void Dispose(bool disposing) - { - if (disposing && (components != null)) - { - components.Dispose(); - } - base.Dispose(disposing); - } - - #region Windows Form Designer generated code - - /// - /// Required method for Designer support - do not modify - /// the contents of this method with the code editor. - /// - private void InitializeComponent() - { - this.pictureIcon = new System.Windows.Forms.PictureBox(); - this.labelMode = new System.Windows.Forms.Label(); - ((System.ComponentModel.ISupportInitialize)(this.pictureIcon)).BeginInit(); - this.SuspendLayout(); - // - // pictureIcon - // - this.pictureIcon.BackgroundImage = global::GHelper.Properties.Resources.icons8_speed_96; - this.pictureIcon.BackgroundImageLayout = System.Windows.Forms.ImageLayout.Zoom; - this.pictureIcon.Location = new System.Drawing.Point(21, 21); - this.pictureIcon.Name = "pictureIcon"; - this.pictureIcon.Size = new System.Drawing.Size(82, 80); - this.pictureIcon.TabIndex = 0; - this.pictureIcon.TabStop = false; - // - // labelMode - // - this.labelMode.AutoSize = true; - this.labelMode.Font = new System.Drawing.Font("Segoe UI", 16F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point); - this.labelMode.Location = new System.Drawing.Point(127, 32); - this.labelMode.Name = "labelMode"; - this.labelMode.Size = new System.Drawing.Size(195, 59); - this.labelMode.TabIndex = 1; - this.labelMode.Text = "Balanced"; - this.labelMode.TextAlign = System.Drawing.ContentAlignment.MiddleCenter; - // - // ToastForm - // - this.AutoScaleDimensions = new System.Drawing.SizeF(13F, 32F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.BackColor = System.Drawing.SystemColors.ControlLightLight; - this.ClientSize = new System.Drawing.Size(356, 122); - this.Controls.Add(this.labelMode); - this.Controls.Add(this.pictureIcon); - this.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; - this.MaximizeBox = false; - this.MdiChildrenMinimizedAnchorBottom = false; - this.MinimizeBox = false; - this.Name = "ToastForm"; - this.ShowIcon = false; - this.ShowInTaskbar = false; - this.Text = "ToastForm"; - this.TopMost = true; - ((System.ComponentModel.ISupportInitialize)(this.pictureIcon)).EndInit(); - this.ResumeLayout(false); - this.PerformLayout(); - - } - - #endregion - - private PictureBox pictureIcon; - private Label labelMode; - } -} \ No newline at end of file diff --git a/ToastForm.cs b/ToastForm.cs index e1f168fa..d3ea8367 100644 --- a/ToastForm.cs +++ b/ToastForm.cs @@ -1,68 +1,94 @@ -using System.Runtime.InteropServices; +using System.Drawing.Drawing2D; +using OSD; namespace GHelper { - public partial class ToastForm : Form + + static class Drawing { - private System.Windows.Forms.Timer timer = default!; - - private const int SW_SHOWNOACTIVATE = 4; - private const int HWND_TOPMOST = -1; - private const uint SWP_NOACTIVATE = 0x0010; - - [DllImport("user32.dll", EntryPoint = "SetWindowPos")] - static extern bool SetWindowPos( - int hWnd, // Window handle - int hWndInsertAfter, // Placement-order handle - int X, // Horizontal position - int Y, // Vertical position - int cx, // Width - int cy, // Height - uint uFlags); // Window positioning flags - - [DllImport("user32.dll")] - static extern bool ShowWindow(IntPtr hWnd, int nCmdShow); - - static void ShowInactiveTopmost(Form frm) + public static GraphicsPath RoundedRect(Rectangle bounds, int radius) { - ShowWindow(frm.Handle, SW_SHOWNOACTIVATE); - SetWindowPos(frm.Handle.ToInt32(), HWND_TOPMOST, - frm.Left, frm.Top, frm.Width, frm.Height, - SWP_NOACTIVATE); + int diameter = radius * 2; + Size size = new Size(diameter, diameter); + Rectangle arc = new Rectangle(bounds.Location, size); + GraphicsPath path = new GraphicsPath(); + + if (radius == 0) + { + path.AddRectangle(bounds); + return path; + } + + path.AddArc(arc, 180, 90); + arc.X = bounds.Right - diameter; + path.AddArc(arc, 270, 90); + arc.Y = bounds.Bottom - diameter; + path.AddArc(arc, 0, 90); + arc.X = bounds.Left; + path.AddArc(arc, 90, 90); + path.CloseFigure(); + return path; } - public ToastForm() + public static void FillRoundedRectangle(this Graphics graphics, Brush brush, Rectangle bounds, int cornerRadius) { - InitializeComponent(); + using (GraphicsPath path = RoundedRect(bounds, cornerRadius)) + { + graphics.FillPath(brush, path); + } + } + } + + class ToastForm : OSDNativeForm + { + + protected static string toastText = "Balanced"; + protected static System.Windows.Forms.Timer timer = new System.Windows.Forms.Timer(); + + protected override void PerformPaint(PaintEventArgs e) + { + Brush brush = new SolidBrush(Color.FromArgb(150,Color.Black)); + Drawing.FillRoundedRectangle(e.Graphics, brush, this.Bound, 10); + + StringFormat format = new StringFormat(); + format.LineAlignment = StringAlignment.Center; + format.Alignment = StringAlignment.Center; + + e.Graphics.DrawString(toastText, + new Font("Segoe UI", 16f, FontStyle.Bold), + new SolidBrush(Color.White), + new PointF(this.Bound.Width/2, this.Bound.Height / 2), + format); } public void RunToast(string text) { - Top = Screen.FromControl(this).WorkingArea.Height - this.Height - 100; - Left = (Screen.FromControl(this).Bounds.Width - this.Width) / 2; + toastText = text; + Screen screen1 = Screen.FromHandle(base.Handle); - ShowInactiveTopmost(this); + Width = 300; + Height = 100; + X = (screen1.Bounds.Width - this.Width)/2; + Y = screen1.Bounds.Height - 300 - this.Height; - labelMode.Text = text; + Show(); - timer = new System.Windows.Forms.Timer(); - timer.Tick += new EventHandler(timer_Tick); + timer.Stop(); + timer.Tick -= timer_Tick; + + timer.Tick += timer_Tick; timer.Enabled = true; - timer.Interval = 1000; + timer.Interval = 2000; timer.Start(); } - private void ToastForm_Show(object? sender, EventArgs e) - { - } - - private void timer_Tick(object sender, EventArgs e) + private void timer_Tick(object? sender, EventArgs e) { timer.Stop(); - Close(); + Hide(); } } } diff --git a/ToastForm.resx b/ToastForm.resx deleted file mode 100644 index f298a7be..00000000 --- a/ToastForm.resx +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - text/microsoft-resx - - - 2.0 - - - System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - - System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089 - - \ No newline at end of file