From 4b5e6acbc06b1c96bd43fc25c58a264627627369 Mon Sep 17 00:00:00 2001 From: drdev Date: Sun, 17 Apr 2016 20:33:38 +0000 Subject: [PATCH] Support keeping system awake while downloading anything --- forge-gui-android/src/forge/app/Main.java | 11 +++++++++++ .../src/main/java/forge/GuiDesktop.java | 5 +++++ forge-gui-ios/src/forge/ios/Main.java | 5 +++++ forge-gui-mobile-dev/src/forge/app/Main.java | 6 ++++++ forge-gui-mobile/src/forge/GuiMobile.java | 5 +++++ .../java/forge/download/GuiDownloadService.java | 4 +++- .../java/forge/download/GuiDownloadZipService.java | 13 ++++++++++++- .../main/java/forge/interfaces/IDeviceAdapter.java | 1 + .../src/main/java/forge/interfaces/IGuiBase.java | 1 + 9 files changed, 49 insertions(+), 2 deletions(-) diff --git a/forge-gui-android/src/forge/app/Main.java b/forge-gui-android/src/forge/app/Main.java index 230199eb9ff..e37e94427fe 100644 --- a/forge-gui-android/src/forge/app/Main.java +++ b/forge-gui-android/src/forge/app/Main.java @@ -17,6 +17,7 @@ import android.net.NetworkInfo; import android.net.Uri; import android.os.Bundle; import android.os.Environment; +import android.view.WindowManager; import android.webkit.MimeTypeMap; import com.badlogic.gdx.Gdx; @@ -210,5 +211,15 @@ public class Main extends AndroidApplication { FileUtil.deleteFile(switchOrientationFile); } } + + @Override + public void preventSystemSleep(boolean preventSleep) { + if (preventSleep) { + getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + else { + getWindow().clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON); + } + } } } diff --git a/forge-gui-desktop/src/main/java/forge/GuiDesktop.java b/forge-gui-desktop/src/main/java/forge/GuiDesktop.java index 8ac6fe16e17..f3069c4c6f7 100644 --- a/forge-gui-desktop/src/main/java/forge/GuiDesktop.java +++ b/forge-gui-desktop/src/main/java/forge/GuiDesktop.java @@ -283,4 +283,9 @@ public class GuiDesktop implements IGuiBase { public String encodeSymbols(String str, boolean formatReminderText) { return FSkin.encodeSymbols(str, formatReminderText); } + + @Override + public void preventSystemSleep(boolean preventSleep) { + + } } \ No newline at end of file diff --git a/forge-gui-ios/src/forge/ios/Main.java b/forge-gui-ios/src/forge/ios/Main.java index 556616973e9..cd1f569eca0 100644 --- a/forge-gui-ios/src/forge/ios/Main.java +++ b/forge-gui-ios/src/forge/ios/Main.java @@ -75,6 +75,11 @@ public class Main extends IOSApplication.Delegate { // TODO implement this } + @Override + public void preventSystemSleep(boolean preventSleep) { + // TODO implement this + } + @Override public boolean isTablet() { return Gdx.graphics.getWidth() > Gdx.graphics.getHeight(); diff --git a/forge-gui-mobile-dev/src/forge/app/Main.java b/forge-gui-mobile-dev/src/forge/app/Main.java index f78b69665d2..28eb6a041ae 100644 --- a/forge-gui-mobile-dev/src/forge/app/Main.java +++ b/forge-gui-mobile-dev/src/forge/app/Main.java @@ -93,5 +93,11 @@ public class Main { FileUtil.deleteFile(switchOrientationFile); } } + + @Override + public void preventSystemSleep(boolean preventSleep) { + int k = 1; + k++; + } } } diff --git a/forge-gui-mobile/src/forge/GuiMobile.java b/forge-gui-mobile/src/forge/GuiMobile.java index d3a9b3347a4..eff1bd02586 100644 --- a/forge-gui-mobile/src/forge/GuiMobile.java +++ b/forge-gui-mobile/src/forge/GuiMobile.java @@ -290,4 +290,9 @@ public class GuiMobile implements IGuiBase { public String encodeSymbols(String str, boolean formatReminderText) { return str; //not needed for mobile } + + @Override + public void preventSystemSleep(boolean preventSleep) { + Forge.getDeviceAdapter().preventSystemSleep(preventSleep); + } } diff --git a/forge-gui/src/main/java/forge/download/GuiDownloadService.java b/forge-gui/src/main/java/forge/download/GuiDownloadService.java index 5753a9c721c..5875cf71bd7 100644 --- a/forge-gui/src/main/java/forge/download/GuiDownloadService.java +++ b/forge-gui/src/main/java/forge/download/GuiDownloadService.java @@ -227,6 +227,7 @@ public abstract class GuiDownloadService implements Runnable { @Override public void run() { + GuiBase.getInterface().preventSystemSleep(true); //prevent system from going into sleep mode while downloading Proxy p = getProxy(); @@ -294,8 +295,9 @@ public abstract class GuiDownloadService implements Runnable { } update(++iCard, fileDest); - } + + GuiBase.getInterface().preventSystemSleep(false); } protected Proxy getProxy() { diff --git a/forge-gui/src/main/java/forge/download/GuiDownloadZipService.java b/forge-gui/src/main/java/forge/download/GuiDownloadZipService.java index cf0238bf9ec..ea52e6de0e4 100644 --- a/forge-gui/src/main/java/forge/download/GuiDownloadZipService.java +++ b/forge-gui/src/main/java/forge/download/GuiDownloadZipService.java @@ -19,6 +19,7 @@ import com.esotericsoftware.minlog.Log; import com.google.common.io.Files; import forge.FThreads; +import forge.GuiBase; import forge.interfaces.IProgressBar; import forge.util.FileUtil; @@ -73,6 +74,8 @@ public class GuiDownloadZipService extends GuiDownloadService { //if assets.zip downloaded successfully, unzip into destination folder try { + GuiBase.getInterface().preventSystemSleep(true); //prevent system from going into sleep mode while unzipping + if (deleteFolder != null) { final File deleteDir = new File(deleteFolder); if (deleteDir.exists()) { @@ -132,9 +135,14 @@ public class GuiDownloadZipService extends GuiDownloadService { catch (final Exception e) { e.printStackTrace(); } + finally { + GuiBase.getInterface().preventSystemSleep(false); + } } public String download(final String filename) { + GuiBase.getInterface().preventSystemSleep(true); //prevent system from going into sleep mode while downloading + progressBar.reset(); progressBar.setPercentMode(true); progressBar.setDescription("Downloading " + desc); @@ -194,8 +202,11 @@ public class GuiDownloadZipService extends GuiDownloadService { } catch (final Exception ex) { Log.error("Downloading " + desc, "Error downloading " + desc, ex); + return null; + } + finally { + GuiBase.getInterface().preventSystemSleep(false); } - return null; } protected void copyInputStream(final InputStream in, final String outPath) throws IOException{ diff --git a/forge-gui/src/main/java/forge/interfaces/IDeviceAdapter.java b/forge-gui/src/main/java/forge/interfaces/IDeviceAdapter.java index 4c4d4e0fc86..56ea6506807 100644 --- a/forge-gui/src/main/java/forge/interfaces/IDeviceAdapter.java +++ b/forge-gui/src/main/java/forge/interfaces/IDeviceAdapter.java @@ -7,6 +7,7 @@ public interface IDeviceAdapter { String getDownloadsDir(); boolean openFile(String filename); void setLandscapeMode(boolean landscapeMode); + void preventSystemSleep(boolean preventSleep); void restart(); void exit(); } diff --git a/forge-gui/src/main/java/forge/interfaces/IGuiBase.java b/forge-gui/src/main/java/forge/interfaces/IGuiBase.java index 9b80dcbc9a4..24176414348 100644 --- a/forge-gui/src/main/java/forge/interfaces/IGuiBase.java +++ b/forge-gui/src/main/java/forge/interfaces/IGuiBase.java @@ -53,4 +53,5 @@ public interface IGuiBase { HostedMatch hostMatch(); void runBackgroundTask(String message, Runnable task); String encodeSymbols(String str, boolean formatReminderText); + void preventSystemSleep(boolean preventSleep); } \ No newline at end of file