diff --git a/app/src/cc/arduino/view/SplashScreenHelper.java b/app/src/cc/arduino/view/SplashScreenHelper.java index 108c1c8b2f6..5f43b7cd460 100644 --- a/app/src/cc/arduino/view/SplashScreenHelper.java +++ b/app/src/cc/arduino/view/SplashScreenHelper.java @@ -33,6 +33,7 @@ import java.awt.*; import java.awt.geom.Rectangle2D; +import java.net.URL; import java.util.Map; import processing.app.Theme; @@ -80,6 +81,12 @@ public void splashText(String text) { ensureTextIsDiplayed(); } + public void setImageURL(URL imageURL) { + try { + splash.setImageURL(imageURL); + } catch(Exception e) {} + } + private void ensureTextIsDiplayed() { synchronized (SplashScreen.class) { if (splash.isVisible()) { diff --git a/app/src/processing/app/Base.java b/app/src/processing/app/Base.java index 815f264da36..ad724fe8da3 100644 --- a/app/src/processing/app/Base.java +++ b/app/src/processing/app/Base.java @@ -66,6 +66,7 @@ import java.awt.*; import java.awt.event.*; import java.io.*; +import java.net.URL; import java.util.List; import java.util.Timer; import java.util.*; @@ -237,6 +238,10 @@ public Base(String[] args) throws Exception { SplashScreenHelper splash; if (parser.isGuiMode()) { + splash = new SplashScreenHelper(SplashScreen.getSplashScreen()); + if (PreferencesData.has("update.splashImage")) + splash.setImageURL(new URL(PreferencesData.get("update.splashImage"))); + // Setup all notification widgets splash = new SplashScreenHelper(SplashScreen.getSplashScreen()); BaseNoGui.notifier = new GUIUserNotifier(this); diff --git a/app/src/processing/app/UpdateCheck.java b/app/src/processing/app/UpdateCheck.java index cdca1b71783..1f7b8832fb9 100644 --- a/app/src/processing/app/UpdateCheck.java +++ b/app/src/processing/app/UpdateCheck.java @@ -31,6 +31,7 @@ import java.io.InputStreamReader; import java.net.URL; import java.net.URLEncoder; +import java.util.HashMap; import java.util.Random; import static processing.app.I18n.tr; @@ -87,7 +88,35 @@ public void run() { System.getProperty("os.version") + "\t" + System.getProperty("os.arch"), "UTF-8"); - int latest = readInt(downloadURL + "?" + info); + // read data from server + BufferedReader reader = null; + int latest = -1; + HashMap serverInfo = new HashMap(); + try { + URL url = new URL(downloadURL + "?" + info); + reader = new BufferedReader(new InputStreamReader(url.openStream())); + + // parse the latest version number + latest = Integer.parseInt(reader.readLine()); + + // parse the key=value pairs + while (true) { + String line = reader.readLine(); + if (line == null) + break; + String[] parts = line.split("=", 2); + if (parts.length == 2) + serverInfo.put(parts[0], parts[1]); + } + } catch (Exception e) { + e.printStackTrace(); + } finally { + IOUtils.closeQuietly(reader); + } + + if (serverInfo.containsKey("splashImage")) + PreferencesData.set("update.splashImage", + serverInfo.get("splashImage")); String lastString = PreferencesData.get("update.last"); long now = System.currentTimeMillis();