diff --git a/SparkleShare/SparkleAbout.cs b/SparkleShare/SparkleAbout.cs
index 6f9ef684..6d086f2f 100644
--- a/SparkleShare/SparkleAbout.cs
+++ b/SparkleShare/SparkleAbout.cs
@@ -45,138 +45,114 @@ namespace SparkleShare {
BorderWidth = 0;
IconName = "folder-sparkleshare";
- Resizable = true;
WindowPosition = WindowPosition.Center;
Title = "About SparkleShare";
Resizable = false;
- Gdk.Color color = Style.Foreground (StateType.Insensitive);
- string secondary_text_color = SparkleUIHelpers.GdkColorToHex (color);
+ CreateAbout ();
+
+ SparkleShare.Controller.CheckForNewVersion ();
+ SparkleShare.Controller.NewVersionAvailable += delegate (string new_version) {
+
+ ApplicationId.Invoke (delegate {
+
+ Version.Markup = "A newer version (" + new_version + ") is available!";
+ Version.ShowAll ();
+
+ });
+
+ };
+
+ }
- EventBox box = new EventBox ();
- box.ModifyBg (StateType.Normal, new TreeView ().Style.Base (StateType.Normal));
+ private void CreateAbout ()
+ {
- Label header = new Label () {
- Markup = "SparkleShare\n" + Defines.VERSION + "",
- Xalign = 0,
- Xpad = 18,
- Ypad = 18
+ Gdk.Color color = Style.Foreground (StateType.Insensitive);
+ string secondary_text_color = SparkleUIHelpers.GdkColorToHex (color);
- };
- box.Add (header);
+ EventBox box = new EventBox ();
+ box.ModifyBg (StateType.Normal, new TreeView ().Style.Base (StateType.Normal));
- Version = new Label () {
- Markup = "Checking for updates...",
- Xalign = 0,
- Xpad = 18,
- Ypad = 22,
- };
+ Label header = new Label () {
+ Markup = "SparkleShare\n" + Defines.VERSION + "",
+ Xalign = 0,
+ Xpad = 18,
+ Ypad = 18
- Label license = new Label () {
- Xalign = 0,
- Xpad = 18,
- Ypad = 22,
- LineWrap = true,
- Wrap = true,
- LineWrapMode = Pango.WrapMode.Word,
+ };
- Markup = "Copyright © 2010–" + DateTime.Now.Year + " Hylke Bons and others\n" +
+ box.Add (header);
+
+ Version = new Label () {
+ Markup = "Checking for updates...",
+ Xalign = 0,
+ Xpad = 18,
+ Ypad = 22,
+ };
+
+ Label license = new Label () {
+ Xalign = 0,
+ Xpad = 18,
+ Ypad = 22,
+ LineWrap = true,
+ Wrap = true,
+ LineWrapMode = Pango.WrapMode.Word,
+
+ Markup = "Copyright © 2010–" + DateTime.Now.Year + " Hylke Bons and others\n" +
"\n" +
"SparkleShare is Free and Open Source Software. " +
"You are free to use, modify, and redistribute it " +
"under the terms of the GNU General Public License version 3 or later."
- };
+ };
- VBox vbox = new VBox (false, 0) {
- BorderWidth = 0
- };
+ VBox vbox = new VBox (false, 0) {
+ BorderWidth = 0
+ };
- HButtonBox button_bar = new HButtonBox () {
- BorderWidth = 12
- };
+ HButtonBox button_bar = new HButtonBox () {
+ BorderWidth = 12
+ };
- Button credits_button = new Button (_("_Show Credits")) {
- UseUnderline = true
- };
+ Button credits_button = new Button (_("_Show Credits")) {
+ UseUnderline = true
+ };
- credits_button.Clicked += delegate {
-
- Process process = new Process ();
- process.StartInfo.FileName = "xdg-open";
- process.StartInfo.Arguments = "http://www.sparkleshare.org/credits";
- process.Start ();
+ credits_button.Clicked += delegate {
- };
+ Process process = new Process ();
+ process.StartInfo.FileName = "xdg-open";
+ process.StartInfo.Arguments = "http://www.sparkleshare.org/credits";
+ process.Start ();
- Button website_button = new Button (_("_Visit Website")) {
- UseUnderline = true
- };
-
- website_button.Clicked += delegate {
+ };
- Process process = new Process ();
- process.StartInfo.FileName = "xdg-open";
- process.StartInfo.Arguments = "http://www.sparkleshare.org/";
- process.Start ();
+ Button website_button = new Button (_("_Visit Website")) {
+ UseUnderline = true
+ };
- };
+ website_button.Clicked += delegate {
- button_bar.Add (website_button);
- button_bar.Add (credits_button);
+ Process process = new Process ();
+ process.StartInfo.FileName = "xdg-open";
+ process.StartInfo.Arguments = "http://www.sparkleshare.org/";
+ process.Start ();
- vbox.PackStart (box, true, true, 0);
- vbox.PackStart (Version, false, false, 0);
- vbox.PackStart (license, true, true, 0);
- vbox.PackStart (button_bar, false, false, 0);
+ };
- Add (vbox);
+ button_bar.Add (website_button);
+ button_bar.Add (credits_button);
- }
+ vbox.PackStart (box, true, true, 0);
+ vbox.PackStart (Version, false, false, 0);
+ vbox.PackStart (license, true, true, 0);
+ vbox.PackStart (button_bar, false, false, 0);
+ Add (vbox);
- // TODO: Move to controller
- private void CheckForNewVersion ()
- {
-
- string new_version_file_path = System.IO.Path.Combine (SparklePaths.SparkleTmpPath,
- "version");
-
- if (File.Exists (new_version_file_path))
- File.Delete (new_version_file_path);
-
- WebClient web_client = new WebClient ();
- Uri uri = new Uri ("http://www.sparkleshare.org/version");
-
- web_client.DownloadFileCompleted += delegate {
-
- if (new FileInfo (new_version_file_path).Length > 0) {
-
- StreamReader reader = new StreamReader (new_version_file_path);
- string downloaded_version_number = reader.ReadToEnd ().Trim ();
-
- if (!Defines.VERSION.Equals (downloaded_version_number)) {
-
- Application.Invoke (delegate {
-
-
-
- });
-
- } else {
-
-
-
- }
-
- }
-
- };
-
- web_client.DownloadFileAsync (uri, new_version_file_path);
-
- }
+ }
}
diff --git a/SparkleShare/SparkleController.cs b/SparkleShare/SparkleController.cs
index a63ce357..f9425394 100644
--- a/SparkleShare/SparkleController.cs
+++ b/SparkleShare/SparkleController.cs
@@ -77,7 +77,13 @@ namespace SparkleShare {
public delegate void NotificationRaisedEventHandler (string user_name, string user_email,
string message, string repository_path);
+ public event NewVersionAvailableEventHandler NewVersionAvailable;
+ public delegate void NewVersionAvailableEventHandler (string new_version);
+ public event VersionUpToDateEventHandler VersionUpToDate;
+ public delegate void VersionUpToDateEventHandler ();
+
+
// Short alias for the translations
public static string _ (string s)
{
@@ -1285,7 +1291,47 @@ namespace SparkleShare {
return regex.IsMatch (email);
}
-
+
+
+ private void CheckForNewVersion ()
+ {
+
+ string new_version_file_path = System.IO.Path.Combine (SparklePaths.SparkleTmpPath,
+ "version");
+
+ if (File.Exists (new_version_file_path))
+ File.Delete (new_version_file_path);
+
+ WebClient web_client = new WebClient ();
+ Uri uri = new Uri ("http://www.sparkleshare.org/version");
+
+ web_client.DownloadFileCompleted += delegate {
+
+ if (new FileInfo (new_version_file_path).Length > 0) {
+
+ StreamReader reader = new StreamReader (new_version_file_path);
+ string downloaded_version_number = reader.ReadToEnd ().Trim ();
+
+ if (!Defines.VERSION.Equals (downloaded_version_number)) {
+
+ if (NewVersionAvailable != null)
+ NewVersionAvailable (downloaded_version_number);
+
+ } else {
+
+ if (VersionUpToDate != null)
+ VersionUpToDate ();
+
+ }
+
+ }
+
+ };
+
+ web_client.DownloadFileAsync (uri, new_version_file_path);
+
+ }
+
}