From 5feff1fa5700c20b6ba0cf53553ab097b8f8fe40 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jindra=20Pet=F8=EDk?= Date: Sun, 2 Mar 2014 15:10:08 +0100 Subject: [PATCH] configurable checking for updates --- .../decompiler/flash/ApplicationInfo.java | 2 +- .../flash/configuration/Configuration.java | 20 +++++++++++++ .../com/jpexs/decompiler/flash/gui/Main.java | 30 ++++++++++++++++--- 3 files changed, 47 insertions(+), 5 deletions(-) diff --git a/trunk/src/com/jpexs/decompiler/flash/ApplicationInfo.java b/trunk/src/com/jpexs/decompiler/flash/ApplicationInfo.java index 248defe42..47eff68fb 100644 --- a/trunk/src/com/jpexs/decompiler/flash/ApplicationInfo.java +++ b/trunk/src/com/jpexs/decompiler/flash/ApplicationInfo.java @@ -40,7 +40,7 @@ public class ApplicationInfo { static { loadProperties(); } - + private static void loadProperties() { Properties prop = new Properties(); try { diff --git a/trunk/src/com/jpexs/decompiler/flash/configuration/Configuration.java b/trunk/src/com/jpexs/decompiler/flash/configuration/Configuration.java index f7a00eda7..1866f2362 100644 --- a/trunk/src/com/jpexs/decompiler/flash/configuration/Configuration.java +++ b/trunk/src/com/jpexs/decompiler/flash/configuration/Configuration.java @@ -224,6 +224,26 @@ public class Configuration { @ConfigurationDefaultBoolean(true) public static final ConfigurationItem beginBlockOnNewLine = null; + @ConfigurationDefaultInt(1000 * 60 * 60 * 24) + @ConfigurationDescription("Minimum time between automatic checks for updates on application start") + @ConfigurationName("check.updates.delay") + public static final ConfigurationItem checkForUpdatesDelay = null; + + @ConfigurationDefaultBoolean(true) + @ConfigurationDescription("Checking for stable version updates") + @ConfigurationName("check.updates.stable") + public static final ConfigurationItem checkForUpdatesStable = null; + + @ConfigurationDefaultBoolean(false) + @ConfigurationDescription("Checking for nightly version updates") + @ConfigurationName("check.updates.nightly") + public static final ConfigurationItem checkForUpdatesNightly = null; + + @ConfigurationDefaultBoolean(true) + @ConfigurationDescription("Automatic checking for updates on application start") + @ConfigurationName("check.updates.enabled") + public static final ConfigurationItem checkForUpdatesAuto = null; + private enum OSId { WINDOWS, OSX, UNIX diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/Main.java b/trunk/src/com/jpexs/decompiler/flash/gui/Main.java index 266505431..ddabbfedd 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/Main.java +++ b/trunk/src/com/jpexs/decompiler/flash/gui/Main.java @@ -1018,19 +1018,41 @@ public class Main { } public static void autoCheckForUpdates() { - Calendar lastUpdatesCheckDate = Configuration.lastUpdatesCheckDate.get(); - if ((lastUpdatesCheckDate == null) || (lastUpdatesCheckDate.getTime().getTime() < Calendar.getInstance().getTime().getTime() - 1000 * 60 * 60 * 24)) { - checkForUpdates(); + if (Configuration.checkForUpdatesAuto.get()) { + Calendar lastUpdatesCheckDate = Configuration.lastUpdatesCheckDate.get(); + if ((lastUpdatesCheckDate == null) || (lastUpdatesCheckDate.getTime().getTime() < Calendar.getInstance().getTime().getTime() - Configuration.checkForUpdatesDelay.get())) { + checkForUpdates(); + } } } public static boolean checkForUpdates() { + List accepted = new ArrayList<>(); + if (Configuration.checkForUpdatesStable.get()) { + accepted.add("stable"); + } + if (Configuration.checkForUpdatesNightly.get()) { + accepted.add("nightly"); + } + + if (accepted.isEmpty()) { + return false; + } + + String acceptVersions = ""; + for (String a : accepted) { + if (!acceptVersions.equals("")) { + acceptVersions += ","; + } + acceptVersions += a; + } try { Socket sock = new Socket("www.free-decompiler.com", 80); OutputStream os = sock.getOutputStream(); String currentLoc = Configuration.locale.get("en"); - os.write(("GET /flash/update.html?action=check¤tVersion=" + ApplicationInfo.version + " HTTP/1.1\r\n" + os.write(("GET /flash/update.html?action=check¤tVersion=" + ApplicationInfo.version + "¤tBuild=" + ApplicationInfo.build + "¤tNightly=" + ApplicationInfo.nightly + " HTTP/1.1\r\n" + "Host: www.free-decompiler.com\r\n" + + "X-Accept-Versions: " + acceptVersions + "\r\n" + "User-Agent: " + ApplicationInfo.shortApplicationVerName + "\r\n" + "Accept-Language: " + currentLoc + ("en".equals(currentLoc) ? "" : ", en;q=0.8") + "\r\n" + "Connection: close\r\n"