diff --git a/AUTHORS b/AUTHORS index 3c6c8496..8fcbc8e8 100755 --- a/AUTHORS +++ b/AUTHORS @@ -17,6 +17,7 @@ Code: Alex Hudson Benjamin Podszun Bertrand Lorentz + Chris Magee Gabriel Burt Garrett LeSage Hylke Bons diff --git a/SparkleShare/SparkleAboutController.cs b/SparkleShare/SparkleAboutController.cs index fb9fa5ee..88e67f6c 100755 --- a/SparkleShare/SparkleAboutController.cs +++ b/SparkleShare/SparkleAboutController.cs @@ -1,108 +1,120 @@ -// SparkleShare, a collaboration and sharing tool. -// Copyright (C) 2010 Hylke Bons -// -// This program is free software: you can redistribute it and/or modify -// it under the terms of the GNU General Public License as published by -// the Free Software Foundation, either version 3 of the License, or -// (at your option) any later version. -// -// This program is distributed in the hope that it will be useful, -// but WITHOUT ANY WARRANTY; without even the implied warranty of -// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -// GNU General Public License for more details. -// -// You should have received a copy of the GNU General Public License -// along with this program. If not, see . - - -using System; -using System.Net; -using System.Threading; -using System.Timers; - -using SparkleLib; - -namespace SparkleShare { - - public class SparkleAboutController { - - public event ShowWindowEventHandler ShowWindowEvent; - public delegate void ShowWindowEventHandler (); - - public event HideWindowEventHandler HideWindowEvent; - public delegate void HideWindowEventHandler (); - - public event NewVersionEventHandler NewVersionEvent; - public delegate void NewVersionEventHandler (string new_version); - - public event VersionUpToDateEventHandler VersionUpToDateEvent; - public delegate void VersionUpToDateEventHandler (); - - public event CheckingForNewVersionEventHandler CheckingForNewVersionEvent; - public delegate void CheckingForNewVersionEventHandler (); - - - public string RunningVersion { - get { - return SparkleBackend.Version; - } - } - - - public SparkleAboutController () - { - Program.Controller.ShowAboutWindowEvent += delegate { - if (ShowWindowEvent != null) - ShowWindowEvent (); - - CheckForNewVersion (); - }; - } - - - public void WindowClosed () - { - if (HideWindowEvent != null) - HideWindowEvent (); - } - - - public void CheckForNewVersion () - { - if (CheckingForNewVersionEvent != null) - CheckingForNewVersionEvent (); - - WebClient web_client = new WebClient (); - Uri uri = new Uri ("http://www.sparkleshare.org/version"); - - web_client.DownloadStringCompleted += delegate (object o, DownloadStringCompletedEventArgs args) { - if (args.Error != null) - return; - - int running_version = int.Parse ( - "" + RunningVersion [0] + RunningVersion [2] + RunningVersion [4] - ); - - string result = args.Result.Trim (); - int new_version = int.Parse ( - "" + result [0] + result [2] + result [4] - ); - - // Add a little delay, making it seems we're - // actually doing hard work - Thread.Sleep (1000); - - if (running_version >= new_version) { - if (VersionUpToDateEvent != null) - VersionUpToDateEvent (); - - } else { - if (NewVersionEvent != null) - NewVersionEvent (result); - } - }; - - web_client.DownloadStringAsync (uri); - } - } -} +// SparkleShare, a collaboration and sharing tool. +// Copyright (C) 2010 Hylke Bons +// +// This program is free software: you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation, either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program. If not, see . + +using System; +using System.Net; +using SparkleLib; + +namespace SparkleShare { + + public class SparkleAboutController { + + public event Action ShowWindowEvent = delegate { }; + public event Action HideWindowEvent = delegate { }; + public event Action VersionUpToDateEvent = delegate { }; + public event Action CheckingForNewVersionEvent = delegate { }; + + public event NewVersionEventDelegate NewVersionEvent = delegate { }; + public delegate void NewVersionEventDelegate (string new_version_string); + + public string RunningVersion { + get { + return SparkleBackend.Version; + } + } + + public SparkleAboutController () + { + Program.Controller.ShowAboutWindowEvent += delegate { + ShowWindowEvent (); + CheckForNewVersion (); + }; + } + + public void WindowClosed () + { + HideWindowEvent (); + } + + private void CheckForNewVersion () + { + CheckingForNewVersionEvent (); + + WebClient web_client = new WebClient (); + Uri uri = new Uri ("http://www.sparkleshare.org/version"); + + web_client.DownloadStringCompleted += delegate (object o, DownloadStringCompletedEventArgs args) { + if (args.Error != null) + return; + + string latest_version_string = args.Result.Trim (); + + if (UpdateRequired (RunningVersion, latest_version_string)) { + NewVersionEvent (latest_version_string); + } else { + VersionUpToDateEvent (); + } + }; + + web_client.DownloadStringAsync (uri); + } + + private bool UpdateRequired (string running_version_string, string latest_version_string) + { + if (running_version_string == null) + throw new ArgumentNullException ("running_version_string"); + + if (string.IsNullOrWhiteSpace (running_version_string)) + throw new ArgumentException ("running_version_string"); + + if (latest_version_string == null) + throw new ArgumentNullException ("latest_version_string"); + + if (string.IsNullOrWhiteSpace (latest_version_string)) + throw new ArgumentException ("latest_version_string"); + + int running_major; + int running_minor; + int running_build; + try { + string[] running_split = running_version_string.Split ('.'); + running_major = int.Parse (running_split [0]); + running_minor = int.Parse (running_split [1]); + running_build = int.Parse (running_split [2]); + } catch (Exception ex) { + throw new FormatException ("running_version_string", ex); + } + + int latest_major; + int latest_minor; + int latest_build; + try { + string[] latest_split = latest_version_string.Split ('.'); + latest_major = int.Parse (latest_split [0]); + latest_minor = int.Parse (latest_split [1]); + latest_build = int.Parse (latest_split [2]); + } catch (Exception ex) { + throw new FormatException ("latest_version_string", ex); + } + + bool higher_major = latest_major > running_major; + bool higher_minor = latest_major == running_major && latest_minor > running_minor; + bool higher_build = latest_major == running_major && latest_minor == running_minor && latest_build > running_build; + + return higher_major || higher_minor || higher_build; + } + } +} \ No newline at end of file diff --git a/SparkleShare/Windows/.gitignore b/SparkleShare/Windows/.gitignore new file mode 100644 index 00000000..452a2557 --- /dev/null +++ b/SparkleShare/Windows/.gitignore @@ -0,0 +1,2 @@ + +*.dotCover \ No newline at end of file diff --git a/SparkleShare/Windows/SparkleShare.sln.DotSettings b/SparkleShare/Windows/SparkleShare.sln.DotSettings new file mode 100644 index 00000000..c0f5f065 --- /dev/null +++ b/SparkleShare/Windows/SparkleShare.sln.DotSettings @@ -0,0 +1,17 @@ + + DO_NOT_SHOW + DO_NOT_SHOW + DO_NOT_SHOW + END_OF_LINE + END_OF_LINE + ALWAYS_REMOVE + False + False + False + True + True + True + True + True + <Policy Inspect="True" Prefix="" Suffix="" Style="aa_bb" /> + <Policy Inspect="True" Prefix="" Suffix="" Style="aa_bb" /> \ No newline at end of file