delay check for updates
This commit is contained in:
@@ -28,12 +28,41 @@ namespace Shadowsocks.Controller
|
||||
|
||||
public const string Version = "2.5.8";
|
||||
|
||||
private class CheckUpdateTimer : System.Timers.Timer
|
||||
{
|
||||
public Configuration config;
|
||||
|
||||
public CheckUpdateTimer(int p) : base(p)
|
||||
{
|
||||
}
|
||||
}
|
||||
|
||||
public void CheckUpdate(Configuration config, int delay)
|
||||
{
|
||||
CheckUpdateTimer timer = new CheckUpdateTimer(delay);
|
||||
timer.AutoReset = false;
|
||||
timer.Elapsed += Timer_Elapsed;
|
||||
timer.config = config;
|
||||
timer.Enabled = true;
|
||||
}
|
||||
|
||||
private void Timer_Elapsed(object sender, System.Timers.ElapsedEventArgs e)
|
||||
{
|
||||
CheckUpdateTimer timer = (CheckUpdateTimer)sender;
|
||||
Configuration config = timer.config;
|
||||
timer.Elapsed -= Timer_Elapsed;
|
||||
timer.Enabled = false;
|
||||
timer.Dispose();
|
||||
CheckUpdate(config);
|
||||
}
|
||||
|
||||
public void CheckUpdate(Configuration config)
|
||||
{
|
||||
this.config = config;
|
||||
|
||||
try
|
||||
{
|
||||
Logging.Debug("Checking updates...");
|
||||
WebClient http = CreateWebClient();
|
||||
http.DownloadStringCompleted += http_DownloadStringCompleted;
|
||||
http.DownloadStringAsync(new Uri(UpdateURL));
|
||||
@@ -81,9 +110,13 @@ namespace Shadowsocks.Controller
|
||||
|
||||
startDownload();
|
||||
}
|
||||
else if (CheckUpdateCompleted != null)
|
||||
else
|
||||
{
|
||||
CheckUpdateCompleted(this, new EventArgs());
|
||||
Logging.Debug("No update is available");
|
||||
if (CheckUpdateCompleted != null)
|
||||
{
|
||||
CheckUpdateCompleted(this, new EventArgs());
|
||||
}
|
||||
}
|
||||
}
|
||||
catch (Exception ex)
|
||||
@@ -117,6 +150,7 @@ namespace Shadowsocks.Controller
|
||||
Logging.LogUsefulException(e.Error);
|
||||
return;
|
||||
}
|
||||
Logging.Debug($"New version {LatestVersionNumber} found: {LatestVersionLocalName}");
|
||||
if (CheckUpdateCompleted != null)
|
||||
{
|
||||
CheckUpdateCompleted(this, new EventArgs());
|
||||
|
||||
@@ -66,7 +66,9 @@ namespace Shadowsocks.View
|
||||
UpdateTrayIcon();
|
||||
_notifyIcon.Visible = true;
|
||||
_notifyIcon.ContextMenu = contextMenu1;
|
||||
_notifyIcon.BalloonTipClicked += notifyIcon1_BalloonTipClicked;
|
||||
_notifyIcon.MouseDoubleClick += notifyIcon1_DoubleClick;
|
||||
_notifyIcon.BalloonTipClosed += _notifyIcon_BalloonTipClosed;
|
||||
|
||||
this.updateChecker = new UpdateChecker();
|
||||
updateChecker.CheckUpdateCompleted += updateChecker_CheckUpdateCompleted;
|
||||
@@ -78,7 +80,7 @@ namespace Shadowsocks.View
|
||||
if (config.autoCheckUpdate)
|
||||
{
|
||||
_isStartupChecking = true;
|
||||
updateChecker.CheckUpdate(config);
|
||||
updateChecker.CheckUpdate(config, 3000);
|
||||
}
|
||||
|
||||
if (config.isDefault)
|
||||
@@ -256,7 +258,6 @@ namespace Shadowsocks.View
|
||||
if (updateChecker.NewVersionFound)
|
||||
{
|
||||
ShowBalloonTip(String.Format(I18N.GetString("Shadowsocks {0} Update Found"), updateChecker.LatestVersionNumber), I18N.GetString("Click here to update"), ToolTipIcon.Info, 5000);
|
||||
_notifyIcon.BalloonTipClicked += notifyIcon1_BalloonTipClicked;
|
||||
_isFirstRun = false;
|
||||
}
|
||||
else if (!_isStartupChecking)
|
||||
@@ -269,9 +270,23 @@ namespace Shadowsocks.View
|
||||
|
||||
void notifyIcon1_BalloonTipClicked(object sender, EventArgs e)
|
||||
{
|
||||
_notifyIcon.BalloonTipClicked -= notifyIcon1_BalloonTipClicked;
|
||||
string argument = "/select, \"" + updateChecker.LatestVersionLocalName + "\"";
|
||||
System.Diagnostics.Process.Start("explorer.exe", argument);
|
||||
if (updateChecker.NewVersionFound)
|
||||
{
|
||||
updateChecker.NewVersionFound = false; /* Reset the flag */
|
||||
if (System.IO.File.Exists(updateChecker.LatestVersionLocalName))
|
||||
{
|
||||
string argument = "/select, \"" + updateChecker.LatestVersionLocalName + "\"";
|
||||
System.Diagnostics.Process.Start("explorer.exe", argument);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private void _notifyIcon_BalloonTipClosed(object sender, EventArgs e)
|
||||
{
|
||||
if (updateChecker.NewVersionFound)
|
||||
{
|
||||
updateChecker.NewVersionFound = false; /* Reset the flag */
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user