From a134dea59e62cc3c66ce8d161b71de8a53ebf170 Mon Sep 17 00:00:00 2001 From: Jaex Date: Sat, 3 Jan 2015 16:06:32 +0200 Subject: [PATCH] ShareX will check for updates every hour --- ShareX.HelpersLib/Links.cs | 1 + .../UpdateChecker/UpdateMessageBox.cs | 31 +++++++++++++------ ShareX/Forms/AboutForm.cs | 6 ++-- ShareX/Forms/MainForm.cs | 14 +++++---- ShareX/TaskHelpers.cs | 2 +- 5 files changed, 34 insertions(+), 20 deletions(-) diff --git a/ShareX.HelpersLib/Links.cs b/ShareX.HelpersLib/Links.cs index 45505d1ce..716c7b34f 100644 --- a/ShareX.HelpersLib/Links.cs +++ b/ShareX.HelpersLib/Links.cs @@ -30,6 +30,7 @@ public static class Links public const string URL_WEBSITE = "http://getsharex.com"; public const string URL_PROJECT = "https://github.com/ShareX/ShareX"; public const string URL_ISSUES = URL_PROJECT + "/issues"; + public const string URL_UPDATE = URL_WEBSITE + "/Update.xml"; public const string URL_CALLBACK = URL_WEBSITE + "/callback/"; public const string URL_VERSION_HISTORY = URL_PROJECT + "/wiki/Changelog"; public const string URL_DONATE = "https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=PCNWK2G6ZYJ2E"; diff --git a/ShareX.HelpersLib/UpdateChecker/UpdateMessageBox.cs b/ShareX.HelpersLib/UpdateChecker/UpdateMessageBox.cs index aa188ea2a..1f77bcd83 100644 --- a/ShareX.HelpersLib/UpdateChecker/UpdateMessageBox.cs +++ b/ShareX.HelpersLib/UpdateChecker/UpdateMessageBox.cs @@ -32,6 +32,8 @@ namespace ShareX.HelpersLib { public partial class UpdateMessageBox : Form { + public static bool IsOpen { get; private set; } + private Rectangle fillRect; public UpdateMessageBox() @@ -49,25 +51,34 @@ public static void Start(UpdateChecker updateChecker) { if (updateChecker != null && updateChecker.Status == UpdateStatus.UpdateAvailable) { - DialogResult result; + IsOpen = true; - using (UpdateMessageBox messageBox = new UpdateMessageBox()) + try { - result = messageBox.ShowDialog(); - } + DialogResult result; - if (result == DialogResult.Yes) - { - using (DownloaderForm updaterForm = new DownloaderForm(updateChecker)) + using (UpdateMessageBox messageBox = new UpdateMessageBox()) { - updaterForm.ShowDialog(); + result = messageBox.ShowDialog(); + } - if (updaterForm.Status == DownloaderFormStatus.InstallStarted) + if (result == DialogResult.Yes) + { + using (DownloaderForm updaterForm = new DownloaderForm(updateChecker)) { - Application.Exit(); + updaterForm.ShowDialog(); + + if (updaterForm.Status == DownloaderFormStatus.InstallStarted) + { + Application.Exit(); + } } } } + finally + { + IsOpen = false; + } } } diff --git a/ShareX/Forms/AboutForm.cs b/ShareX/Forms/AboutForm.cs index c6269c88e..ab5b98f0b 100644 --- a/ShareX/Forms/AboutForm.cs +++ b/ShareX/Forms/AboutForm.cs @@ -46,9 +46,9 @@ public AboutForm() uclUpdate.CheckUpdate(TaskHelpers.CheckUpdate); - rtbShareXInfo.Text = string.Format(@"{0}: http://getsharex.com -{1}: https://github.com/ShareX/ShareX -{2}: https://github.com/ShareX/ShareX/issues", Resources.AboutForm_AboutForm_Website, Resources.AboutForm_AboutForm_Project_page, Resources.AboutForm_AboutForm_Issues); + rtbShareXInfo.Text = string.Format(@"{0}: {1} +{2}: {3} +{4}: {5}", Resources.AboutForm_AboutForm_Website, Links.URL_WEBSITE, Resources.AboutForm_AboutForm_Project_page, Links.URL_PROJECT, Resources.AboutForm_AboutForm_Issues, Links.URL_ISSUES); rtbCredits.Text = string.Format(@"{0}: diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs index 1875a8c01..ca4c98354 100644 --- a/ShareX/Forms/MainForm.cs +++ b/ShareX/Forms/MainForm.cs @@ -46,6 +46,7 @@ public partial class MainForm : HotkeyForm private bool forceClose; private UploadInfoManager uim; private ToolStripDropDownItem tsmiImageFileUploaders, tsmiTrayImageFileUploaders, tsmiTextFileUploaders, tsmiTrayTextFileUploaders; + private System.Threading.Timer updateTimer; public MainForm() { @@ -650,18 +651,19 @@ private void UpdateUploaderMenuNames() private void AutoCheckUpdate() { - if (Program.Settings.AutoCheckUpdate) + if (Program.Settings.AutoCheckUpdate && updateTimer == null) { - Thread updateThread = new Thread(CheckUpdate); - updateThread.IsBackground = true; - updateThread.Start(); + updateTimer = new System.Threading.Timer(state => CheckUpdate(), null, 0, 1000 * 60 * 60); } } private void CheckUpdate() { - UpdateChecker updateChecker = TaskHelpers.CheckUpdate(); - UpdateMessageBox.Start(updateChecker); + if (!UpdateMessageBox.IsOpen) + { + UpdateChecker updateChecker = TaskHelpers.CheckUpdate(); + UpdateMessageBox.Start(updateChecker); + } } private void ForceClose() diff --git a/ShareX/TaskHelpers.cs b/ShareX/TaskHelpers.cs index 43d92b687..06df3deb4 100644 --- a/ShareX/TaskHelpers.cs +++ b/ShareX/TaskHelpers.cs @@ -411,7 +411,7 @@ public static UpdateChecker CheckUpdate() // Fallback if GitHub API fails if (updateChecker.Status == UpdateStatus.None || updateChecker.Status == UpdateStatus.UpdateCheckFailed) { - updateChecker = new XMLUpdateChecker("http://getsharex.com/Update.xml", "ShareX"); + updateChecker = new XMLUpdateChecker(Links.URL_UPDATE, "ShareX"); updateChecker.IsBeta = Program.IsBeta; updateChecker.Proxy = ProxyInfo.Current.GetWebProxy(); updateChecker.CheckUpdate();