diff options
Diffstat (limited to 'org.fox.epube/src/main/java')
-rw-r--r-- | org.fox.epube/src/main/java/org/fox/epube/Application.java | 45 | ||||
-rw-r--r-- | org.fox.epube/src/main/java/org/fox/epube/MainActivity.java | 37 |
2 files changed, 78 insertions, 4 deletions
diff --git a/org.fox.epube/src/main/java/org/fox/epube/Application.java b/org.fox.epube/src/main/java/org/fox/epube/Application.java new file mode 100644 index 0000000..5069dd4 --- /dev/null +++ b/org.fox.epube/src/main/java/org/fox/epube/Application.java @@ -0,0 +1,45 @@ +package org.fox.epube; + +import android.os.Bundle; + +import com.livefront.bridge.Bridge; +import com.livefront.bridge.SavedStateHandler; + +import java.net.CookieHandler; +import java.net.CookieManager; + +import androidx.annotation.NonNull; +import androidx.annotation.Nullable; +import icepick.Icepick; + +public class Application extends android.app.Application { + private static Application m_singleton; + + @Override + public final void onCreate() { + super.onCreate(); + + CookieManager cookieManager = new CookieManager(); + CookieHandler.setDefault(cookieManager); + + Bridge.initialize(getApplicationContext(), new SavedStateHandler() { + @Override + public void saveInstanceState(@NonNull Object target, @NonNull Bundle state) { + Icepick.saveInstanceState(target, state); + } + + @Override + public void restoreInstanceState(@NonNull Object target, @Nullable Bundle state) { + Icepick.restoreInstanceState(target, state); + } + }); + + m_singleton = this; + } + + public static Application getInstance(){ + return m_singleton; + } + + +} diff --git a/org.fox.epube/src/main/java/org/fox/epube/MainActivity.java b/org.fox.epube/src/main/java/org/fox/epube/MainActivity.java index 423f945..6b8d41c 100644 --- a/org.fox.epube/src/main/java/org/fox/epube/MainActivity.java +++ b/org.fox.epube/src/main/java/org/fox/epube/MainActivity.java @@ -1,6 +1,7 @@ package org.fox.epube;
import android.content.Context;
+import android.content.res.Configuration;
import android.os.Build;
import android.os.Bundle;
import android.util.Log;
@@ -17,8 +18,11 @@ import android.webkit.WebViewClient; import android.widget.ProgressBar;
import android.widget.Toast;
+import com.livefront.bridge.Bridge;
+
import androidx.appcompat.app.AppCompatActivity;
import androidx.appcompat.widget.Toolbar;
+import icepick.State;
public class MainActivity extends AppCompatActivity {
@@ -30,8 +34,10 @@ public class MainActivity extends AppCompatActivity { private ProgressBar m_loadingBar;
private WebView m_web;
private Menu m_menu;
- private boolean m_offlineMode;
- private AppPage m_currentPage = AppPage.PAGE_UNKNOWN;
+
+ @State protected boolean m_offlineMode;
+ @State protected AppPage m_currentPage = AppPage.PAGE_UNKNOWN;
+ @State protected String m_lastVisitedURL;
@Override
protected void onCreate(Bundle savedInstanceState) {
@@ -89,7 +95,8 @@ public class MainActivity extends AppCompatActivity { CookieManager.getInstance().acceptCookie();
CookieManager.getInstance().flush();
- Log.d(TAG, "finished loading:" + url + " " + view.getOriginalUrl());
+ Log.d(TAG, "finished loading URL:" + url);
+ m_lastVisitedURL = url;
view.getUrl();
}
@@ -105,7 +112,14 @@ public class MainActivity extends AppCompatActivity { m_web.addJavascriptInterface(new WebAppInterface(this), "EpubeApp");
m_web.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
- m_web.loadUrl(BASE_URL + "/index.php");
+
+ Bridge.restoreInstanceState(this, savedInstanceState);
+
+ if (savedInstanceState == null || m_lastVisitedURL == null) {
+ m_web.loadUrl(BASE_URL + "/index.php");
+ } else {
+ m_web.loadUrl(m_lastVisitedURL);
+ }
}
private void onPageSwitched(MainActivity.AppPage page) {
@@ -318,5 +332,20 @@ public class MainActivity extends AppCompatActivity { }
});
}
+
+ @JavascriptInterface
+ public boolean isNightMode() {
+ int nightModeFlags = getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_MASK;
+ return nightModeFlags == Configuration.UI_MODE_NIGHT_YES;
+ }
+ }
+
+ @Override
+ public void onSaveInstanceState(Bundle out) {
+ super.onSaveInstanceState(out);
+
+ Log.d(TAG, "onSaveInstanceState");
+
+ Bridge.saveInstanceState(this, out);
}
}
\ No newline at end of file |