2022-11-15 17:00:13 +01:00
|
|
|
|
using CommonHelpers;
|
|
|
|
|
|
using CommonHelpers.FromLibreHardwareMonitor;
|
2022-11-12 12:22:19 +01:00
|
|
|
|
using System;
|
2022-11-11 19:56:08 +01:00
|
|
|
|
using System.Collections.Generic;
|
|
|
|
|
|
using System.ComponentModel;
|
|
|
|
|
|
using System.Data;
|
|
|
|
|
|
using System.Data.Common;
|
2022-11-12 12:22:19 +01:00
|
|
|
|
using System.Diagnostics;
|
2022-11-11 19:56:08 +01:00
|
|
|
|
using System.Drawing;
|
|
|
|
|
|
using System.Linq;
|
|
|
|
|
|
using System.Net.Sockets;
|
|
|
|
|
|
using System.Text;
|
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
|
using System.Windows.Forms;
|
|
|
|
|
|
|
|
|
|
|
|
namespace FanControl
|
|
|
|
|
|
{
|
|
|
|
|
|
public partial class FanControlForm : Form
|
|
|
|
|
|
{
|
2022-11-12 11:41:24 +01:00
|
|
|
|
private FanController fanControl = new FanController();
|
2022-11-13 14:39:29 +01:00
|
|
|
|
private StartupManager startupManager = new StartupManager(
|
|
|
|
|
|
"Steam Deck Fan Control",
|
|
|
|
|
|
"Starts Steam Deck Fan Control on Windows startup."
|
|
|
|
|
|
);
|
2022-11-11 19:56:08 +01:00
|
|
|
|
|
|
|
|
|
|
public FanControlForm()
|
|
|
|
|
|
{
|
|
|
|
|
|
InitializeComponent();
|
|
|
|
|
|
|
2022-11-12 12:22:19 +01:00
|
|
|
|
Text += " v" + Application.ProductVersion.ToString();
|
2022-11-15 17:00:13 +01:00
|
|
|
|
Instance.Open(Text, "Global\\FanControlOnce");
|
|
|
|
|
|
|
2022-11-12 12:22:19 +01:00
|
|
|
|
notifyIcon.Text = Text;
|
2022-11-15 17:00:13 +01:00
|
|
|
|
notifyIcon.Visible = true;
|
2022-11-12 12:22:19 +01:00
|
|
|
|
|
2022-11-12 22:22:48 +01:00
|
|
|
|
toolStripMenuItemAlwaysOnTop.Checked = TopMost = Properties.Settings.Default.AlwaysOnTop;
|
2022-11-12 12:22:19 +01:00
|
|
|
|
toolStripMenuItemStartupOnBoot.Visible = startupManager.IsAvailable;
|
|
|
|
|
|
toolStripMenuItemStartupOnBoot.Checked = startupManager.Startup;
|
|
|
|
|
|
|
2022-11-11 19:56:08 +01:00
|
|
|
|
propertyGrid1.SelectedObject = fanControl;
|
2022-11-12 10:14:09 +01:00
|
|
|
|
propertyGrid1.ExpandAllGridItems();
|
2022-11-11 19:56:08 +01:00
|
|
|
|
|
2022-11-12 11:41:24 +01:00
|
|
|
|
foreach (var item in Enum.GetValues(typeof(FanController.FanMode)))
|
2022-11-11 19:56:08 +01:00
|
|
|
|
{
|
|
|
|
|
|
fanModeSelectMenu.Items.Add(item);
|
|
|
|
|
|
fanModeSelectNotifyMenu.Items.Add(item);
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-11-12 12:22:19 +01:00
|
|
|
|
try
|
|
|
|
|
|
{
|
|
|
|
|
|
var fanMode = Enum.Parse(typeof(FanController.FanMode), Properties.Settings.Default.FanMode);
|
|
|
|
|
|
setFanMode((FanController.FanMode)fanMode);
|
|
|
|
|
|
}
|
|
|
|
|
|
catch(System.ArgumentException)
|
|
|
|
|
|
{
|
|
|
|
|
|
setFanMode(FanController.FanMode.Default);
|
|
|
|
|
|
}
|
2022-11-11 19:56:08 +01:00
|
|
|
|
|
2022-11-12 12:22:19 +01:00
|
|
|
|
notifyIcon.ShowBalloonTip(3000, Text, "Fan Control Started", ToolTipIcon.Info);
|
2022-11-13 07:51:47 +01:00
|
|
|
|
|
|
|
|
|
|
Microsoft.Win32.SystemEvents.PowerModeChanged += SystemEvents_PowerModeChanged;
|
|
|
|
|
|
}
|
|
|
|
|
|
protected override void OnClosed(EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
base.OnClosed(e);
|
|
|
|
|
|
|
|
|
|
|
|
Microsoft.Win32.SystemEvents.PowerModeChanged -= SystemEvents_PowerModeChanged;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void SystemEvents_PowerModeChanged(object sender, Microsoft.Win32.PowerModeChangedEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
// Restore fan mode on resume
|
|
|
|
|
|
if (e.Mode == Microsoft.Win32.PowerModes.Resume)
|
|
|
|
|
|
{
|
|
|
|
|
|
fanControl.SetMode(fanControl.Mode);
|
|
|
|
|
|
}
|
2022-11-12 12:22:19 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void setFanMode(FanController.FanMode mode)
|
|
|
|
|
|
{
|
|
|
|
|
|
fanControl.SetMode(mode);
|
|
|
|
|
|
fanModeSelectMenu.SelectedItem = mode;
|
|
|
|
|
|
fanModeSelectNotifyMenu.SelectedItem = mode;
|
|
|
|
|
|
Properties.Settings.Default["FanMode"] = mode.ToString();
|
|
|
|
|
|
Properties.Settings.Default.Save();
|
2022-11-11 19:56:08 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void fanModeSelect_SelectedValueChanged(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
var comboBox = (ToolStripComboBox)sender;
|
2022-11-12 11:41:24 +01:00
|
|
|
|
var selectedMode = (FanController.FanMode)comboBox.SelectedItem;
|
2022-11-12 12:22:19 +01:00
|
|
|
|
setFanMode(selectedMode);
|
2022-11-11 19:56:08 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void FanControlForm_FormClosing(object sender, FormClosingEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (e.CloseReason == CloseReason.UserClosing && Visible)
|
|
|
|
|
|
{
|
|
|
|
|
|
e.Cancel = true;
|
2022-11-12 13:56:15 +01:00
|
|
|
|
Hide();
|
2022-11-11 19:56:08 +01:00
|
|
|
|
}
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void formShow_Event(object sender, EventArgs e)
|
|
|
|
|
|
{
|
2022-11-12 12:22:19 +01:00
|
|
|
|
WindowState = FormWindowState.Normal;
|
2022-11-12 13:56:15 +01:00
|
|
|
|
Show();
|
2022-11-12 14:25:57 +01:00
|
|
|
|
Activate();
|
2022-11-12 10:14:09 +01:00
|
|
|
|
propertyGrid1.Refresh();
|
2022-11-11 19:56:08 +01:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void formClose_Event(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
Hide();
|
|
|
|
|
|
Close();
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private void FanControlForm_FormClosed(object sender, FormClosedEventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
// Always revert to default on closing
|
2022-11-12 11:41:24 +01:00
|
|
|
|
fanControl.SetMode(FanController.FanMode.Default);
|
2022-11-11 19:56:08 +01:00
|
|
|
|
}
|
2022-11-11 20:01:44 +01:00
|
|
|
|
|
2022-11-12 10:14:09 +01:00
|
|
|
|
private void fanLoopTimer_Tick(object sender, EventArgs e)
|
2022-11-11 20:01:44 +01:00
|
|
|
|
{
|
|
|
|
|
|
fanControl.Update();
|
2022-11-12 10:14:09 +01:00
|
|
|
|
}
|
2022-11-11 20:01:44 +01:00
|
|
|
|
|
2022-11-12 10:14:09 +01:00
|
|
|
|
private void propertyGridUpdateTimer_Tick(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
if (!Visible)
|
|
|
|
|
|
return;
|
2022-11-11 20:01:44 +01:00
|
|
|
|
|
2022-11-12 10:14:09 +01:00
|
|
|
|
propertyGrid1.Refresh();
|
2022-11-12 11:41:24 +01:00
|
|
|
|
sensorWarningLabel.Visible = fanControl.IsAnyInvalid();
|
2022-11-11 20:01:44 +01:00
|
|
|
|
notifyIcon.Text = String.Format("Fan: {0} RPM Mode: {1}", fanControl.CurrentRPM, fanControl.Mode);
|
|
|
|
|
|
}
|
2022-11-12 12:22:19 +01:00
|
|
|
|
|
|
|
|
|
|
private void toolStripMenuItemStartupOnBoot_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
startupManager.Startup = !startupManager.Startup;
|
|
|
|
|
|
toolStripMenuItemStartupOnBoot.Checked = startupManager.Startup;
|
|
|
|
|
|
}
|
|
|
|
|
|
|
2022-11-12 13:56:15 +01:00
|
|
|
|
private void help_DoubleClick(object sender, EventArgs e)
|
2022-11-12 12:22:19 +01:00
|
|
|
|
{
|
2022-11-12 23:35:13 +01:00
|
|
|
|
System.Diagnostics.Process.Start("explorer.exe", "http://github.com/ayufan-research/steam-deck-tools");
|
2022-11-12 12:22:19 +01:00
|
|
|
|
}
|
2022-11-12 22:22:48 +01:00
|
|
|
|
|
|
|
|
|
|
private void toolStripMenuItemAlwaysOnTop_Click(object sender, EventArgs e)
|
|
|
|
|
|
{
|
|
|
|
|
|
toolStripMenuItemAlwaysOnTop.Checked = !toolStripMenuItemAlwaysOnTop.Checked;
|
|
|
|
|
|
TopMost = toolStripMenuItemAlwaysOnTop.Checked;
|
|
|
|
|
|
Properties.Settings.Default.AlwaysOnTop = toolStripMenuItemAlwaysOnTop.Checked;
|
|
|
|
|
|
Properties.Settings.Default.Save();
|
|
|
|
|
|
}
|
2022-11-11 19:56:08 +01:00
|
|
|
|
}
|
|
|
|
|
|
}
|