From 196b550d70e925d8a5605c99d4c00a0d6f7ed237 Mon Sep 17 00:00:00 2001 From: Lich Date: Mon, 2 Nov 2020 12:59:12 +0900 Subject: [PATCH] WinForms disable DPI scaling and add delay time at windows startup --- ControlForm.Designer.cs | 5 ++- FanCtrl/Data/Option/OptionManager.cs | 15 +++++++++ FanCtrl/Data/Option/StartupControl.cs | 6 +++- LightingForm.Designer.cs | 3 +- MainForm.Designer.cs | 3 +- MainForm.cs | 2 -- OSDForm.Designer.cs | 3 +- OptionForm.Designer.cs | 31 ++++++++++++++--- OptionForm.cs | 48 ++++++++++++++++++++++----- Properties/AssemblyInfo.cs | 6 ++-- StringLib.Designer.cs | 9 +++++ StringLib.ko.resx | 3 ++ StringLib.resx | 3 ++ 13 files changed, 110 insertions(+), 27 deletions(-) diff --git a/ControlForm.Designer.cs b/ControlForm.Designer.cs index 3579838..4498702 100644 --- a/ControlForm.Designer.cs +++ b/ControlForm.Designer.cs @@ -296,9 +296,8 @@ private void InitializeComponent() // // ControlForm // - this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; - this.ClientSize = new System.Drawing.Size(924, 504); + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; + this.ClientSize = new System.Drawing.Size(1155, 630); this.Controls.Add(this.mUnitComboBox); this.Controls.Add(this.mModeGroupBox); this.Controls.Add(this.mHysNumericUpDown); diff --git a/FanCtrl/Data/Option/OptionManager.cs b/FanCtrl/Data/Option/OptionManager.cs index 030cc8e..4f6e05f 100644 --- a/FanCtrl/Data/Option/OptionManager.cs +++ b/FanCtrl/Data/Option/OptionManager.cs @@ -62,6 +62,19 @@ private OptionManager() public bool IsMinimized { get; set; } + public int DelayTime + { + get + { + return mStartupControl.DelayTime; + } + set + { + + mStartupControl.DelayTime = value; + } + } + public bool IsStartUp { get @@ -99,6 +112,7 @@ public bool read() IsAnimation = (rootObject.ContainsKey("animation") == true) ? rootObject.Value("animation") : true; IsFahrenheit = (rootObject.ContainsKey("fahrenheit") == true) ? rootObject.Value("fahrenheit") : false; IsMinimized = (rootObject.ContainsKey("minimized") == true) ? rootObject.Value("minimized") : false; + DelayTime = (rootObject.ContainsKey("delay") == true) ? rootObject.Value("delay") : 0; IsStartUp = (rootObject.ContainsKey("startup") == true) ? rootObject.Value("startup") : false; } catch @@ -124,6 +138,7 @@ public void write() rootObject["animation"] = IsAnimation; rootObject["fahrenheit"] = IsFahrenheit; rootObject["minimized"] = IsMinimized; + rootObject["delay"] = DelayTime; rootObject["startup"] = IsStartUp; File.WriteAllText(mOptionFileName, rootObject.ToString()); } diff --git a/FanCtrl/Data/Option/StartupControl.cs b/FanCtrl/Data/Option/StartupControl.cs index 16b37a9..0a9a987 100644 --- a/FanCtrl/Data/Option/StartupControl.cs +++ b/FanCtrl/Data/Option/StartupControl.cs @@ -22,6 +22,8 @@ public class StartupControl private bool _startup; private const string RegistryName = "FanControl"; + public int DelayTime { get; set; } + public StartupControl() { if (Environment.OSVersion.Platform >= PlatformID.Unix) @@ -145,7 +147,9 @@ private void CreateTask() TaskDefinition taskDefinition = TaskService.Instance.NewTask(); taskDefinition.RegistrationInfo.Description = "Starts FanCtrl on Windows startup."; - taskDefinition.Triggers.Add(new LogonTrigger()); + var trigger = new LogonTrigger(); + trigger.Delay = new TimeSpan(0, 0, DelayTime); + taskDefinition.Triggers.Add(trigger); taskDefinition.Settings.StartWhenAvailable = true; taskDefinition.Settings.DisallowStartIfOnBatteries = false; diff --git a/LightingForm.Designer.cs b/LightingForm.Designer.cs index 1369db2..35f1cb7 100644 --- a/LightingForm.Designer.cs +++ b/LightingForm.Designer.cs @@ -78,8 +78,7 @@ private void InitializeComponent() // // LightingForm // - this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.ClientSize = new System.Drawing.Size(409, 136); this.Controls.Add(this.mApplyButton); diff --git a/MainForm.Designer.cs b/MainForm.Designer.cs index 15f2c83..27bbb79 100644 --- a/MainForm.Designer.cs +++ b/MainForm.Designer.cs @@ -243,8 +243,7 @@ private void InitializeComponent() // // MainForm // - this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.ClientSize = new System.Drawing.Size(719, 122); this.Controls.Add(this.mOSDButton); diff --git a/MainForm.cs b/MainForm.cs index 89c026c..d07dffc 100644 --- a/MainForm.cs +++ b/MainForm.cs @@ -625,8 +625,6 @@ private void onFanControlButtonClick(object sender, EventArgs e) mPerformanceToolStripMenuItem.Checked = (ControlManager.getInstance().ModeIndex == 2); mGameToolStripMenuItem.Checked = (ControlManager.getInstance().ModeIndex == 3); }; - mControlForm.StartPosition = FormStartPosition.Manual; - mControlForm.Location = new Point(this.Location.X + 100, this.Location.Y + 100); mControlForm.ShowDialog(); mControlForm = null; } diff --git a/OSDForm.Designer.cs b/OSDForm.Designer.cs index a46ba5d..602a831 100644 --- a/OSDForm.Designer.cs +++ b/OSDForm.Designer.cs @@ -298,8 +298,7 @@ private void InitializeComponent() // // OSDForm // - this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; this.ClientSize = new System.Drawing.Size(719, 377); this.Controls.Add(this.mDigitNumericUpDown); diff --git a/OptionForm.Designer.cs b/OptionForm.Designer.cs index de98a20..46adf7e 100644 --- a/OptionForm.Designer.cs +++ b/OptionForm.Designer.cs @@ -54,6 +54,8 @@ private void InitializeComponent() this.mKrakenCheckBox = new System.Windows.Forms.CheckBox(); this.mAnimationCheckBox = new System.Windows.Forms.CheckBox(); this.mFahrenheitCheckBox = new System.Windows.Forms.CheckBox(); + this.mStartupDelayLabel = new System.Windows.Forms.Label(); + this.mStartupDelayTextBox = new System.Windows.Forms.TextBox(); this.mIntervalGroupBox.SuspendLayout(); this.mLibraryGroupBox.SuspendLayout(); this.panel1.SuspendLayout(); @@ -109,7 +111,7 @@ private void InitializeComponent() // // mOKButton // - this.mOKButton.Location = new System.Drawing.Point(11, 448); + this.mOKButton.Location = new System.Drawing.Point(12, 473); this.mOKButton.Name = "mOKButton"; this.mOKButton.Size = new System.Drawing.Size(188, 38); this.mOKButton.TabIndex = 14; @@ -300,12 +302,31 @@ private void InitializeComponent() this.mFahrenheitCheckBox.Text = "Fahrenheit (°F)"; this.mFahrenheitCheckBox.UseVisualStyleBackColor = true; // + // mStartupDelayLabel + // + this.mStartupDelayLabel.AutoSize = true; + this.mStartupDelayLabel.Location = new System.Drawing.Point(36, 446); + this.mStartupDelayLabel.Name = "mStartupDelayLabel"; + this.mStartupDelayLabel.Size = new System.Drawing.Size(80, 12); + this.mStartupDelayLabel.TabIndex = 15; + this.mStartupDelayLabel.Text = "Delay(sec) : "; + // + // mStartupDelayTextBox + // + this.mStartupDelayTextBox.Location = new System.Drawing.Point(123, 441); + this.mStartupDelayTextBox.MaxLength = 2; + this.mStartupDelayTextBox.Name = "mStartupDelayTextBox"; + this.mStartupDelayTextBox.Size = new System.Drawing.Size(73, 21); + this.mStartupDelayTextBox.TabIndex = 2; + this.mStartupDelayTextBox.TextAlign = System.Windows.Forms.HorizontalAlignment.Center; + // // OptionForm // - this.AutoScaleDimensions = new System.Drawing.SizeF(7F, 12F); - this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; + this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.None; this.AutoSizeMode = System.Windows.Forms.AutoSizeMode.GrowAndShrink; - this.ClientSize = new System.Drawing.Size(212, 495); + this.ClientSize = new System.Drawing.Size(212, 523); + this.Controls.Add(this.mStartupDelayTextBox); + this.Controls.Add(this.mStartupDelayLabel); this.Controls.Add(this.mFahrenheitCheckBox); this.Controls.Add(this.mAnimationCheckBox); this.Controls.Add(this.mLibraryGroupBox); @@ -357,5 +378,7 @@ private void InitializeComponent() private System.Windows.Forms.CheckBox mFahrenheitCheckBox; private System.Windows.Forms.CheckBox mRGBnFCCheckBox; private System.Windows.Forms.Button mRGBnFCButton; + private System.Windows.Forms.Label mStartupDelayLabel; + private System.Windows.Forms.TextBox mStartupDelayTextBox; } } \ No newline at end of file diff --git a/OptionForm.cs b/OptionForm.cs index fe5d0e4..e075369 100644 --- a/OptionForm.cs +++ b/OptionForm.cs @@ -21,6 +21,7 @@ public OptionForm() this.localizeComponent(); mToolTip.SetToolTip(mIntervalTextBox, "100 ≤ value ≤ 5000"); + mToolTip.SetToolTip(mStartupDelayTextBox, "0 ≤ value ≤ 59"); mIntervalTextBox.Text = OptionManager.getInstance().Interval.ToString(); mIntervalTextBox.KeyPress += onTextBoxKeyPress; @@ -49,6 +50,8 @@ public OptionForm() mFahrenheitCheckBox.Checked = OptionManager.getInstance().IsFahrenheit; mAnimationCheckBox.Checked = OptionManager.getInstance().IsAnimation; mMinimizeCheckBox.Checked = OptionManager.getInstance().IsMinimized; + + mStartupDelayTextBox.Text = OptionManager.getInstance().DelayTime.ToString(); mStartupCheckBox.Checked = OptionManager.getInstance().IsStartUp; } @@ -63,6 +66,7 @@ private void localizeComponent() mFahrenheitCheckBox.Text = StringLib.Fahrenheit; mMinimizeCheckBox.Text = StringLib.Start_minimized; mStartupCheckBox.Text = StringLib.Start_with_Windows; + mStartupDelayLabel.Text = StringLib.Delay_Time; mLibraryGroupBox.Text = StringLib.Library; mOKButton.Text = StringLib.OK; } @@ -93,6 +97,16 @@ private void onOKButtonClick(object sender, EventArgs e) interval = 5000; } + int delayTime = int.Parse(mStartupDelayTextBox.Text); + if (delayTime < 0) + { + delayTime = 0; + } + else if (delayTime > 59) + { + delayTime = 59; + } + var optionManager = OptionManager.getInstance(); bool isRestart = false; @@ -123,7 +137,9 @@ private void onOKButtonClick(object sender, EventArgs e) optionManager.IsFahrenheit = mFahrenheitCheckBox.Checked; optionManager.IsAnimation = mAnimationCheckBox.Checked; optionManager.IsMinimized = mMinimizeCheckBox.Checked; - optionManager.IsStartUp = mStartupCheckBox.Checked; + optionManager.DelayTime = delayTime; + optionManager.IsStartUp = false; + optionManager.IsStartUp = mStartupCheckBox.Checked; optionManager.write(); if (isRestart == true) @@ -153,16 +169,32 @@ private void onTextBoxKeyPress(object sender, KeyPressEventArgs e) private void onTextBoxLeaves(object sender, EventArgs e) { var textBox = (TextBox)sender; - int interval = int.Parse(mIntervalTextBox.Text); - if (interval < 100) + if (textBox == mIntervalTextBox) { - interval = 100; + int interval = int.Parse(mIntervalTextBox.Text); + if (interval < 100) + { + interval = 100; + } + else if (interval > 5000) + { + interval = 5000; + } + mIntervalTextBox.Text = interval.ToString(); } - else if (interval > 5000) + else if (textBox == mStartupDelayTextBox) { - interval = 5000; - } - mIntervalTextBox.Text = interval.ToString(); + int delay = int.Parse(mStartupDelayTextBox.Text); + if (delay < 0) + { + delay = 0; + } + else if (delay > 59) + { + delay = 59; + } + mStartupDelayTextBox.Text = delay.ToString(); + } } private void onKrakenButtonClick(object sender, EventArgs e) diff --git a/Properties/AssemblyInfo.cs b/Properties/AssemblyInfo.cs index 28e9757..07c65c4 100644 --- a/Properties/AssemblyInfo.cs +++ b/Properties/AssemblyInfo.cs @@ -31,6 +31,6 @@ // // 모든 값을 지정하거나 아래와 같이 '*'를 사용하여 빌드 번호 및 수정 번호를 // 기본값으로 할 수 있습니다. -[assembly: AssemblyVersion("1.2.4")] -[assembly: AssemblyFileVersion("1.2.4")] -[assembly: AssemblyInformationalVersion("1.2.4")] +[assembly: AssemblyVersion("1.2.5")] +[assembly: AssemblyFileVersion("1.2.5")] +[assembly: AssemblyInformationalVersion("1.2.5")] diff --git a/StringLib.Designer.cs b/StringLib.Designer.cs index 82c4034..922c9c9 100644 --- a/StringLib.Designer.cs +++ b/StringLib.Designer.cs @@ -150,6 +150,15 @@ internal class StringLib { } } + /// + /// Delay(sec) :과(와) 유사한 지역화된 문자열을 찾습니다. + /// + internal static string Delay_Time { + get { + return ResourceManager.GetString("Delay_Time", resourceCulture); + } + } + /// /// Enable automatic fan control과(와) 유사한 지역화된 문자열을 찾습니다. /// diff --git a/StringLib.ko.resx b/StringLib.ko.resx index 586dc20..0656c13 100644 --- a/StringLib.ko.resx +++ b/StringLib.ko.resx @@ -147,6 +147,9 @@ 기본 색 + + 지연시간(초) : + 자동 팬 제어 활성화 diff --git a/StringLib.resx b/StringLib.resx index 886682e..c7fc7d8 100644 --- a/StringLib.resx +++ b/StringLib.resx @@ -147,6 +147,9 @@ Default color + + Delay(sec) : + Enable automatic fan control