summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2020-04-21 13:59:01 +0300
committerAndrew Dolgov <[email protected]>2020-04-21 13:59:01 +0300
commitbb060a340aabb4ef7ed75eb173ac657c051c200b (patch)
tree51f7d3a6b0c298a6a5291cf5be402bf79ded0b0f
parent70865af75770c5988217fa2a589bfab7d9703c04 (diff)
handle night/day changes a bit better
-rw-r--r--.idea/misc.xml2
-rw-r--r--build.gradle5
-rw-r--r--org.fox.epube/build.gradle4
-rw-r--r--org.fox.epube/src/main/AndroidManifest.xml1
-rw-r--r--org.fox.epube/src/main/java/org/fox/epube/Application.java45
-rw-r--r--org.fox.epube/src/main/java/org/fox/epube/MainActivity.java37
6 files changed, 87 insertions, 7 deletions
diff --git a/.idea/misc.xml b/.idea/misc.xml
index fd0cf8b..de1caf4 100644
--- a/.idea/misc.xml
+++ b/.idea/misc.xml
@@ -5,7 +5,7 @@
<item index="0" class="java.lang.String" itemvalue="android.webkit.JavascriptInterface" />
</list>
</component>
- <component name="ProjectRootManager" version="2" languageLevel="JDK_1_8" project-jdk-name="1.8" project-jdk-type="JavaSDK">
+ <component name="ProjectRootManager" version="2" languageLevel="JDK_1_7" project-jdk-name="1.8" project-jdk-type="JavaSDK">
<output url="file://$PROJECT_DIR$/build/classes" />
</component>
<component name="ProjectType">
diff --git a/build.gradle b/build.gradle
index 69cab14..c2e8024 100644
--- a/build.gradle
+++ b/build.gradle
@@ -4,7 +4,6 @@ buildscript {
repositories {
google()
jcenter()
-
}
dependencies {
classpath 'com.android.tools.build:gradle:3.5.2'
@@ -18,7 +17,9 @@ allprojects {
repositories {
google()
jcenter()
-
+ maven { url "http://dl.bintray.com/populov/maven" }
+ maven { url "https://jitpack.io" }
+ maven { url "https://clojars.org/repo" }
}
}
diff --git a/org.fox.epube/build.gradle b/org.fox.epube/build.gradle
index 25176bb..71c14f4 100644
--- a/org.fox.epube/build.gradle
+++ b/org.fox.epube/build.gradle
@@ -26,4 +26,8 @@ dependencies {
testImplementation 'junit:junit:4.12'
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+ implementation 'frankiesardo:icepick:3.2.0'
+ compileOnly 'frankiesardo:icepick-processor:3.2.0'
+ annotationProcessor 'frankiesardo:icepick-processor:3.2.0'
+ implementation 'com.github.livefront:bridge:v1.1.1'
}
diff --git a/org.fox.epube/src/main/AndroidManifest.xml b/org.fox.epube/src/main/AndroidManifest.xml
index a482b2c..4b461ff 100644
--- a/org.fox.epube/src/main/AndroidManifest.xml
+++ b/org.fox.epube/src/main/AndroidManifest.xml
@@ -8,6 +8,7 @@
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
<application
+ android:name=".Application"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
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