Merge branch 'feature/start-on-boot' into develop

This commit is contained in:
Terry MacDonald 2020-12-30 22:50:59 +13:00
commit 999217c9b8
5 changed files with 81 additions and 6 deletions

View File

@ -232,6 +232,9 @@
<PackageReference Include="Autoupdater.NET.Official">
<Version>1.6.4</Version>
</PackageReference>
<PackageReference Include="BootMeUp">
<Version>1.2.0</Version>
</PackageReference>
<PackageReference Include="CircularProgressBar">
<Version>2.8.0.16</Version>
</PackageReference>
@ -239,7 +242,7 @@
<Version>1.2.0.1</Version>
</PackageReference>
<PackageReference Include="HtmlAgilityPack">
<Version>1.11.24</Version>
<Version>1.11.29</Version>
</PackageReference>
<PackageReference Include="IconExtractor.dll">
<Version>1.0.2.1-beta</Version>
@ -257,7 +260,7 @@
<Version>3.0.0</Version>
</PackageReference>
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers">
<Version>3.3.0-beta2.final</Version>
<Version>3.3.2</Version>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
<PrivateAssets>all</PrivateAssets>
</PackageReference>

View File

@ -20,11 +20,28 @@ namespace DisplayMagician
#endregion
#region Instance Variables
private bool _startOnBootUp = false;
private bool _minimiseOnStart = false;
private string _logLevel = NLog.LogLevel.Warn.ToString();
#endregion
#region Class Properties
public bool StartOnBootUp
{
get
{
return _startOnBootUp;
}
set
{
_startOnBootUp = value;
// Because a value has changed, we need to save the setting
// to remember it for later.
if (_programSettingsLoaded)
SaveSettings();
}
}
public bool MinimiseOnStart {
get
{

View File

@ -743,12 +743,18 @@ namespace DisplayMagician
Console.WriteLine($"Starting Steam Game: {steamGameToRun.Name}");
var steamProcess = Process.Start(address);
// Delay 500ms
Thread.Sleep(500);
// Wait for Steam game to update if needed
for (int secs = 0; secs >= (shortcutToUse.StartTimeout * 1000); secs += 500)
{
if (!steamGameToRun.IsUpdating)
{
// Delay 500ms
Thread.Sleep(500);
if (steamGameToRun.IsRunning)
{
logger.Info($"Found the '{steamGameToRun.Name}' process has started");

View File

@ -33,6 +33,7 @@ namespace DisplayMagician.UIForms
this.cmb_loglevel = new System.Windows.Forms.ComboBox();
this.label1 = new System.Windows.Forms.Label();
this.btn_back = new System.Windows.Forms.Button();
this.cb_start_on_boot = new System.Windows.Forms.CheckBox();
this.SuspendLayout();
//
// cb_minimise_notification_area
@ -42,7 +43,7 @@ namespace DisplayMagician.UIForms
this.cb_minimise_notification_area.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F);
this.cb_minimise_notification_area.ForeColor = System.Drawing.Color.White;
this.cb_minimise_notification_area.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.cb_minimise_notification_area.Location = new System.Drawing.Point(73, 41);
this.cb_minimise_notification_area.Location = new System.Drawing.Point(59, 61);
this.cb_minimise_notification_area.Name = "cb_minimise_notification_area";
this.cb_minimise_notification_area.Size = new System.Drawing.Size(332, 20);
this.cb_minimise_notification_area.TabIndex = 6;
@ -53,9 +54,9 @@ namespace DisplayMagician.UIForms
//
this.cmb_loglevel.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.cmb_loglevel.FormattingEnabled = true;
this.cmb_loglevel.Location = new System.Drawing.Point(213, 86);
this.cmb_loglevel.Location = new System.Drawing.Point(199, 100);
this.cmb_loglevel.Name = "cmb_loglevel";
this.cmb_loglevel.Size = new System.Drawing.Size(275, 24);
this.cmb_loglevel.Size = new System.Drawing.Size(294, 24);
this.cmb_loglevel.TabIndex = 7;
//
// label1
@ -63,7 +64,7 @@ namespace DisplayMagician.UIForms
this.label1.AutoSize = true;
this.label1.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
this.label1.ForeColor = System.Drawing.Color.Transparent;
this.label1.Location = new System.Drawing.Point(70, 89);
this.label1.Location = new System.Drawing.Point(56, 103);
this.label1.Name = "label1";
this.label1.Size = new System.Drawing.Size(137, 16);
this.label1.TabIndex = 8;
@ -85,12 +86,27 @@ namespace DisplayMagician.UIForms
this.btn_back.UseVisualStyleBackColor = true;
this.btn_back.Click += new System.EventHandler(this.btn_back_Click);
//
// cb_start_on_boot
//
this.cb_start_on_boot.Anchor = System.Windows.Forms.AnchorStyles.Top;
this.cb_start_on_boot.AutoSize = true;
this.cb_start_on_boot.Font = new System.Drawing.Font("Microsoft Sans Serif", 9.75F);
this.cb_start_on_boot.ForeColor = System.Drawing.Color.White;
this.cb_start_on_boot.ImeMode = System.Windows.Forms.ImeMode.NoControl;
this.cb_start_on_boot.Location = new System.Drawing.Point(59, 25);
this.cb_start_on_boot.Name = "cb_start_on_boot";
this.cb_start_on_boot.Size = new System.Drawing.Size(389, 20);
this.cb_start_on_boot.TabIndex = 10;
this.cb_start_on_boot.Text = "Start DisplayMagician automatically when the computer starts";
this.cb_start_on_boot.UseVisualStyleBackColor = true;
//
// SettingsForm
//
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
this.BackColor = System.Drawing.Color.Black;
this.ClientSize = new System.Drawing.Size(544, 187);
this.Controls.Add(this.cb_start_on_boot);
this.Controls.Add(this.btn_back);
this.Controls.Add(this.label1);
this.Controls.Add(this.cmb_loglevel);
@ -117,5 +133,6 @@ namespace DisplayMagician.UIForms
private System.Windows.Forms.ComboBox cmb_loglevel;
private System.Windows.Forms.Label label1;
private System.Windows.Forms.Button btn_back;
private System.Windows.Forms.CheckBox cb_start_on_boot;
}
}

View File

@ -7,6 +7,7 @@ using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
using WK.Libraries.BootMeUpNS;
namespace DisplayMagician.UIForms
{
@ -36,12 +37,19 @@ namespace DisplayMagician.UIForms
private void SettingsForm_Load(object sender, EventArgs e)
{
// start displaymagician when computer starts
if (Program.AppProgramSettings.StartOnBootUp)
cb_start_on_boot.Checked = true;
else
cb_start_on_boot.Checked = false;
// setup minimise on start
if (Program.AppProgramSettings.MinimiseOnStart)
cb_minimise_notification_area.Checked = true;
else
cb_minimise_notification_area.Checked = false;
// setup loglevel on start
switch (Program.AppProgramSettings.LogLevel)
{
@ -73,6 +81,30 @@ namespace DisplayMagician.UIForms
private void SettingsForm_FormClosing(object sender, FormClosingEventArgs e)
{
var bootMeUp = new BootMeUp();
bootMeUp.UseAlternativeOnFail = true;
bootMeUp.BootArea = BootMeUp.BootAreas.Registry;
bootMeUp.TargetUser = BootMeUp.TargetUsers.CurrentUser;
// save start on Boot up
if (cb_start_on_boot.Checked)
{
Program.AppProgramSettings.StartOnBootUp = true;
bootMeUp.Enabled = true;
if (!bootMeUp.Successful)
MessageBox.Show("There was an issue setting DisplayMagician to run when the computer starts. Please try launching DisplayMagician again as Admin to see if that helps.");
}
else
{
Program.AppProgramSettings.StartOnBootUp = false;
bootMeUp.Enabled = false;
if (!bootMeUp.Successful)
MessageBox.Show("There was an issue stopping DisplayMagician from running when the computer starts. Please try launching DisplayMagician again as Admin to see if that helps.");
}
// save minimise on close
if (cb_minimise_notification_area.Checked)
Program.AppProgramSettings.MinimiseOnStart = true;