From 54b15d421acca573eee5c4e404b203f428428e8f Mon Sep 17 00:00:00 2001 From: Jaex Date: Thu, 24 Nov 2016 03:18:42 +0300 Subject: [PATCH] Added GitHubUpdateManager to HelpersLib --- ShareX.HelpersLib/ShareX.HelpersLib.csproj | 1 + .../UpdateChecker/GitHubUpdateManager.cs | 40 +++++++++++-------- ShareX/Forms/AboutForm.cs | 2 +- ShareX/Forms/MainForm.cs | 7 ++-- ShareX/Program.cs | 3 ++ ShareX/ShareX.csproj | 1 - 6 files changed, 32 insertions(+), 22 deletions(-) rename ShareX/UpdateManager.cs => ShareX.HelpersLib/UpdateChecker/GitHubUpdateManager.cs (59%) diff --git a/ShareX.HelpersLib/ShareX.HelpersLib.csproj b/ShareX.HelpersLib/ShareX.HelpersLib.csproj index 021c56f18..c943d42f3 100644 --- a/ShareX.HelpersLib/ShareX.HelpersLib.csproj +++ b/ShareX.HelpersLib/ShareX.HelpersLib.csproj @@ -399,6 +399,7 @@ MyPictureBox.cs + Form diff --git a/ShareX/UpdateManager.cs b/ShareX.HelpersLib/UpdateChecker/GitHubUpdateManager.cs similarity index 59% rename from ShareX/UpdateManager.cs rename to ShareX.HelpersLib/UpdateChecker/GitHubUpdateManager.cs index 978fdd5be..b53caa0c4 100644 --- a/ShareX/UpdateManager.cs +++ b/ShareX.HelpersLib/UpdateChecker/GitHubUpdateManager.cs @@ -23,39 +23,48 @@ You should have received a copy of the GNU General Public License #endregion License Information (GPL v3) -using ShareX.HelpersLib; using System; using System.Windows.Forms; using Timer = System.Threading.Timer; -namespace ShareX +namespace ShareX.HelpersLib { - public class UpdateManager : IDisposable + public class GitHubUpdateManager : IDisposable { - public double UpdateCheckInterval { get; private set; } = 1; // Hour + public bool AutoUpdateEnabled { get; set; } // ConfigureAutoUpdate function must be called after change this + public TimeSpan UpdateCheckInterval { get; private set; } = TimeSpan.FromHours(1); + public TimeSpan UpdateReCheckInterval { get; private set; } = TimeSpan.FromHours(24); // If "No" button pressed in update message box then this interval will be used + public string GitHubOwner { get; set; } + public string GitHubRepo { get; set; } + public bool IsBeta { get; set; } // If current build is beta and latest stable release is same version as current build then it will be downloaded + public bool IsPortable { get; set; } // If current build is portable then download URL will be opened in browser instead of downloading it + public bool CheckPreReleaseUpdates { get; set; } private bool firstUpdateCheck = true; private Timer updateTimer = null; private readonly object updateTimerLock = new object(); - public UpdateManager() + public GitHubUpdateManager(string owner, string repo) { + GitHubOwner = owner; + GitHubRepo = repo; } - public UpdateManager(double updateCheckInterval) + public GitHubUpdateManager(string owner, string repo, bool beta, bool portable) : this(owner, repo) { - UpdateCheckInterval = updateCheckInterval; + IsBeta = beta; + IsPortable = portable; } public void ConfigureAutoUpdate() { lock (updateTimerLock) { - if (Program.Settings.AutoCheckUpdate && !Program.PortableApps) + if (AutoUpdateEnabled) { if (updateTimer == null) { - updateTimer = new Timer(state => CheckUpdate(), null, TimeSpan.Zero, TimeSpan.FromHours(UpdateCheckInterval)); + updateTimer = new Timer(state => CheckUpdate(), null, TimeSpan.Zero, UpdateCheckInterval); } } else @@ -74,21 +83,20 @@ private void CheckUpdate() if (UpdateMessageBox.Start(updateChecker, firstUpdateCheck) != DialogResult.Yes) { - TimeSpan interval = TimeSpan.FromHours(24); - updateTimer.Change(interval, interval); + updateTimer.Change(UpdateReCheckInterval, UpdateReCheckInterval); } firstUpdateCheck = false; } } - public static UpdateChecker CreateUpdateChecker() + public GitHubUpdateChecker CreateUpdateChecker() { - return new GitHubUpdateChecker("ShareX", "ShareX") + return new GitHubUpdateChecker(GitHubOwner, GitHubRepo) { - IsBeta = Program.Beta, - IsPortable = Program.Portable, - IncludePreRelease = Program.Settings.CheckPreReleaseUpdates, + IsBeta = IsBeta, + IsPortable = IsPortable, + IncludePreRelease = CheckPreReleaseUpdates, Proxy = HelpersOptions.CurrentProxy.GetWebProxy() }; } diff --git a/ShareX/Forms/AboutForm.cs b/ShareX/Forms/AboutForm.cs index 5fe2e39af..10af3314b 100644 --- a/ShareX/Forms/AboutForm.cs +++ b/ShareX/Forms/AboutForm.cs @@ -52,7 +52,7 @@ public AboutForm() if (!Program.PortableApps) { - UpdateChecker updateChecker = UpdateManager.CreateUpdateChecker(); + UpdateChecker updateChecker = Program.UpdateManager.CreateUpdateChecker(); uclUpdate.CheckUpdate(updateChecker); } else diff --git a/ShareX/Forms/MainForm.cs b/ShareX/Forms/MainForm.cs index 1a96d5494..d80ec2bec 100644 --- a/ShareX/Forms/MainForm.cs +++ b/ShareX/Forms/MainForm.cs @@ -45,7 +45,6 @@ public partial class MainForm : HotkeyForm private bool forceClose, trayMenuSaveSettings = true; private UploadInfoManager uim; private ToolStripDropDownItem tsmiImageFileUploaders, tsmiTrayImageFileUploaders, tsmiTextFileUploaders, tsmiTrayTextFileUploaders; - private UpdateManager updateManager; public MainForm() { @@ -180,8 +179,6 @@ private void InitializeControls() ExportImportControl.UploadRequested += json => UploadManager.UploadText(json); - updateManager = new UpdateManager(); - HandleCreated += MainForm_HandleCreated; } @@ -670,7 +667,9 @@ private void AfterSettingsJobs() TaskManager.RecentManager.MaxCount = Program.Settings.RecentTasksMaxCount; #if RELEASE - updateManager.ConfigureAutoUpdate(); + Program.UpdateManager.AutoUpdateEnabled = Program.Settings.AutoCheckUpdate && !Program.PortableApps; + Program.UpdateManager.CheckPreReleaseUpdates = Program.Settings.CheckPreReleaseUpdates; + Program.UpdateManager.ConfigureAutoUpdate(); #endif } diff --git a/ShareX/Program.cs b/ShareX/Program.cs index 9a4765d04..2542a3afe 100644 --- a/ShareX/Program.cs +++ b/ShareX/Program.cs @@ -92,6 +92,7 @@ public static string Title public static Stopwatch StartTimer { get; private set; } public static HotkeyManager HotkeyManager { get; set; } public static WatchFolderManager WatchFolderManager { get; set; } + public static GitHubUpdateManager UpdateManager { get; set; } public static CLIManager CLI { get; private set; } private static bool restarting; @@ -341,6 +342,8 @@ private static void Run() HotkeySettingsResetEvent = new ManualResetEvent(false); TaskEx.Run(LoadSettings); + UpdateManager = new GitHubUpdateManager("ShareX", "ShareX", Beta, Portable); + LanguageHelper.ChangeLanguage(Settings.Language); DebugHelper.WriteLine("MainForm init started"); diff --git a/ShareX/ShareX.csproj b/ShareX/ShareX.csproj index 2f088041b..53e59a9f0 100644 --- a/ShareX/ShareX.csproj +++ b/ShareX/ShareX.csproj @@ -276,7 +276,6 @@ -