summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2020-04-20 19:32:03 +0300
committerAndrew Dolgov <[email protected]>2020-04-20 19:32:03 +0300
commitfa25f18453c05e1907b425b11edf4802a6448754 (patch)
tree626c3ff8c2211a8b4ee142d7eb7660de8f42d2b2
initial
-rw-r--r--.gitignore14
-rw-r--r--.idea/.name1
-rw-r--r--.idea/codeStyles/Project.xml113
-rw-r--r--.idea/gradle.xml16
-rw-r--r--.idea/misc.xml9
-rw-r--r--.idea/runConfigurations.xml12
-rw-r--r--build.gradle27
-rw-r--r--gradle.properties20
-rw-r--r--gradle/wrapper/gradle-wrapper.jarbin0 -> 54329 bytes
-rw-r--r--gradle/wrapper/gradle-wrapper.properties6
-rw-r--r--gradlew172
-rw-r--r--gradlew.bat84
-rw-r--r--org.fox.epube/.gitignore1
-rw-r--r--org.fox.epube/build.gradle29
-rw-r--r--org.fox.epube/proguard-rules.pro21
-rw-r--r--org.fox.epube/src/androidTest/java/org/fox/epube/ExampleInstrumentedTest.java27
-rw-r--r--org.fox.epube/src/main/AndroidManifest.xml25
-rw-r--r--org.fox.epube/src/main/ic_launcher-web.pngbin0 -> 33271 bytes
-rw-r--r--org.fox.epube/src/main/java/org/fox/epube/MainActivity.java80
-rw-r--r--org.fox.epube/src/main/res/layout/activity_main.xml22
-rw-r--r--org.fox.epube/src/main/res/mipmap-anydpi-v26/ic_launcher.xml5
-rw-r--r--org.fox.epube/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml5
-rw-r--r--org.fox.epube/src/main/res/mipmap-hdpi/ic_launcher.pngbin0 -> 3097 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-hdpi/ic_launcher_background.pngbin0 -> 2635 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-hdpi/ic_launcher_foreground.pngbin0 -> 2723 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-hdpi/ic_launcher_round.pngbin0 -> 4721 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-mdpi/ic_launcher.pngbin0 -> 2039 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-mdpi/ic_launcher_background.pngbin0 -> 1613 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-mdpi/ic_launcher_foreground.pngbin0 -> 1787 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-mdpi/ic_launcher_round.pngbin0 -> 2982 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-xhdpi/ic_launcher.pngbin0 -> 4280 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-xhdpi/ic_launcher_background.pngbin0 -> 4089 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-xhdpi/ic_launcher_foreground.pngbin0 -> 3725 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-xhdpi/ic_launcher_round.pngbin0 -> 6535 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-xxhdpi/ic_launcher.pngbin0 -> 6504 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-xxhdpi/ic_launcher_background.pngbin0 -> 7790 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.pngbin0 -> 6090 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-xxhdpi/ic_launcher_round.pngbin0 -> 10415 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-xxxhdpi/ic_launcher.pngbin0 -> 9115 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-xxxhdpi/ic_launcher_background.pngbin0 -> 12783 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.pngbin0 -> 9089 bytes
-rw-r--r--org.fox.epube/src/main/res/mipmap-xxxhdpi/ic_launcher_round.pngbin0 -> 14892 bytes
-rw-r--r--org.fox.epube/src/main/res/values/colors.xml6
-rw-r--r--org.fox.epube/src/main/res/values/strings.xml3
-rw-r--r--org.fox.epube/src/main/res/values/styles.xml12
-rw-r--r--org.fox.epube/src/test/java/org/fox/epube/ExampleUnitTest.java17
-rw-r--r--org.fox.epube/src_drawable/ic_launcher_bg.pngbin0 -> 14584 bytes
-rw-r--r--org.fox.epube/src_drawable/ic_launcher_fg.pngbin0 -> 15371 bytes
-rw-r--r--org.fox.epube/src_drawable/s_launcher_bg.svg166
-rw-r--r--org.fox.epube/src_drawable/s_launcher_fg.svg161
-rw-r--r--settings.gradle2
51 files changed, 1056 insertions, 0 deletions
diff --git a/.gitignore b/.gitignore
new file mode 100644
index 0000000..ebdd23d
--- /dev/null
+++ b/.gitignore
@@ -0,0 +1,14 @@
+*.iml
+.gradle
+/local.properties
+/.idea/caches
+/.idea/libraries
+/.idea/modules.xml
+/.idea/workspace.xml
+/.idea/navEditor.xml
+/.idea/assetWizardSettings.xml
+.DS_Store
+/build
+/captures
+.externalNativeBuild
+.cxx
diff --git a/.idea/.name b/.idea/.name
new file mode 100644
index 0000000..8d84210
--- /dev/null
+++ b/.idea/.name
@@ -0,0 +1 @@
+The Epube \ No newline at end of file
diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml
new file mode 100644
index 0000000..1903f0a
--- /dev/null
+++ b/.idea/codeStyles/Project.xml
@@ -0,0 +1,113 @@
+<component name="ProjectCodeStyleConfiguration">
+ <code_scheme name="Project" version="173">
+ <codeStyleSettings language="XML">
+ <arrangement>
+ <rules>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>xmlns:android</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>xmlns:.*</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:id</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*:name</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>name</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>style</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>^$</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>http://schemas.android.com/apk/res/android</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>ANDROID_ATTRIBUTE_ORDER</order>
+ </rule>
+ </section>
+ <section>
+ <rule>
+ <match>
+ <AND>
+ <NAME>.*</NAME>
+ <XML_ATTRIBUTE />
+ <XML_NAMESPACE>.*</XML_NAMESPACE>
+ </AND>
+ </match>
+ <order>BY_NAME</order>
+ </rule>
+ </section>
+ </rules>
+ </arrangement>
+ </codeStyleSettings>
+ </code_scheme>
+</component> \ No newline at end of file
diff --git a/.idea/gradle.xml b/.idea/gradle.xml
new file mode 100644
index 0000000..2a80f60
--- /dev/null
+++ b/.idea/gradle.xml
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="GradleSettings">
+ <option name="linkedExternalProjectsSettings">
+ <GradleProjectSettings>
+ <compositeConfiguration>
+ <compositeBuild compositeDefinitionSource="SCRIPT" />
+ </compositeConfiguration>
+ <option name="distributionType" value="DEFAULT_WRAPPED" />
+ <option name="externalProjectPath" value="$PROJECT_DIR$" />
+ <option name="resolveModulePerSourceSet" value="false" />
+ <option name="testRunner" value="PLATFORM" />
+ </GradleProjectSettings>
+ </option>
+ </component>
+</project> \ No newline at end of file
diff --git a/.idea/misc.xml b/.idea/misc.xml
new file mode 100644
index 0000000..f797995
--- /dev/null
+++ b/.idea/misc.xml
@@ -0,0 +1,9 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <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">
+ <option name="id" value="Android" />
+ </component>
+</project> \ No newline at end of file
diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml
new file mode 100644
index 0000000..9b770a6
--- /dev/null
+++ b/.idea/runConfigurations.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project version="4">
+ <component name="RunConfigurationProducerService">
+ <option name="ignoredProducers">
+ <set>
+ <option value="org.jetbrains.plugins.gradle.execution.test.runner.AllInPackageGradleConfigurationProducer" />
+ <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestClassGradleConfigurationProducer" />
+ <option value="org.jetbrains.plugins.gradle.execution.test.runner.TestMethodGradleConfigurationProducer" />
+ </set>
+ </option>
+ </component>
+</project> \ No newline at end of file
diff --git a/build.gradle b/build.gradle
new file mode 100644
index 0000000..69cab14
--- /dev/null
+++ b/build.gradle
@@ -0,0 +1,27 @@
+// Top-level build file where you can add configuration options common to all sub-projects/modules.
+
+buildscript {
+ repositories {
+ google()
+ jcenter()
+
+ }
+ dependencies {
+ classpath 'com.android.tools.build:gradle:3.5.2'
+
+ // NOTE: Do not place your application dependencies here; they belong
+ // in the individual module build.gradle files
+ }
+}
+
+allprojects {
+ repositories {
+ google()
+ jcenter()
+
+ }
+}
+
+task clean(type: Delete) {
+ delete rootProject.buildDir
+}
diff --git a/gradle.properties b/gradle.properties
new file mode 100644
index 0000000..55f37b3
--- /dev/null
+++ b/gradle.properties
@@ -0,0 +1,20 @@
+# Project-wide Gradle settings.
+# IDE (e.g. Android Studio) users:
+# Gradle settings configured through the IDE *will override*
+# any settings specified in this file.
+# For more details on how to configure your build environment visit
+# http://www.gradle.org/docs/current/userguide/build_environment.html
+# Specifies the JVM arguments used for the daemon process.
+# The setting is particularly useful for tweaking memory settings.
+org.gradle.jvmargs=-Xmx1536m
+# When configured, Gradle will run in incubating parallel mode.
+# This option should only be used with decoupled projects. More details, visit
+# http://www.gradle.org/docs/current/userguide/multi_project_builds.html#sec:decoupled_projects
+# org.gradle.parallel=true
+# AndroidX package structure to make it clearer which packages are bundled with the
+# Android operating system, and which are packaged with your app's APK
+# https://developer.android.com/topic/libraries/support-library/androidx-rn
+android.useAndroidX=true
+# Automatically convert third-party libraries to use AndroidX
+android.enableJetifier=true
+
diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar
new file mode 100644
index 0000000..f6b961f
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.jar
Binary files differ
diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties
new file mode 100644
index 0000000..0464269
--- /dev/null
+++ b/gradle/wrapper/gradle-wrapper.properties
@@ -0,0 +1,6 @@
+#Mon Apr 20 17:19:42 MSK 2020
+distributionBase=GRADLE_USER_HOME
+distributionPath=wrapper/dists
+zipStoreBase=GRADLE_USER_HOME
+zipStorePath=wrapper/dists
+distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip
diff --git a/gradlew b/gradlew
new file mode 100644
index 0000000..cccdd3d
--- /dev/null
+++ b/gradlew
@@ -0,0 +1,172 @@
+#!/usr/bin/env sh
+
+##############################################################################
+##
+## Gradle start up script for UN*X
+##
+##############################################################################
+
+# Attempt to set APP_HOME
+# Resolve links: $0 may be a link
+PRG="$0"
+# Need this for relative symlinks.
+while [ -h "$PRG" ] ; do
+ ls=`ls -ld "$PRG"`
+ link=`expr "$ls" : '.*-> \(.*\)$'`
+ if expr "$link" : '/.*' > /dev/null; then
+ PRG="$link"
+ else
+ PRG=`dirname "$PRG"`"/$link"
+ fi
+done
+SAVED="`pwd`"
+cd "`dirname \"$PRG\"`/" >/dev/null
+APP_HOME="`pwd -P`"
+cd "$SAVED" >/dev/null
+
+APP_NAME="Gradle"
+APP_BASE_NAME=`basename "$0"`
+
+# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+DEFAULT_JVM_OPTS=""
+
+# Use the maximum available, or set MAX_FD != -1 to use that value.
+MAX_FD="maximum"
+
+warn () {
+ echo "$*"
+}
+
+die () {
+ echo
+ echo "$*"
+ echo
+ exit 1
+}
+
+# OS specific support (must be 'true' or 'false').
+cygwin=false
+msys=false
+darwin=false
+nonstop=false
+case "`uname`" in
+ CYGWIN* )
+ cygwin=true
+ ;;
+ Darwin* )
+ darwin=true
+ ;;
+ MINGW* )
+ msys=true
+ ;;
+ NONSTOP* )
+ nonstop=true
+ ;;
+esac
+
+CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
+
+# Determine the Java command to use to start the JVM.
+if [ -n "$JAVA_HOME" ] ; then
+ if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
+ # IBM's JDK on AIX uses strange locations for the executables
+ JAVACMD="$JAVA_HOME/jre/sh/java"
+ else
+ JAVACMD="$JAVA_HOME/bin/java"
+ fi
+ if [ ! -x "$JAVACMD" ] ; then
+ die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+ fi
+else
+ JAVACMD="java"
+ which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+
+Please set the JAVA_HOME variable in your environment to match the
+location of your Java installation."
+fi
+
+# Increase the maximum file descriptors if we can.
+if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
+ MAX_FD_LIMIT=`ulimit -H -n`
+ if [ $? -eq 0 ] ; then
+ if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
+ MAX_FD="$MAX_FD_LIMIT"
+ fi
+ ulimit -n $MAX_FD
+ if [ $? -ne 0 ] ; then
+ warn "Could not set maximum file descriptor limit: $MAX_FD"
+ fi
+ else
+ warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
+ fi
+fi
+
+# For Darwin, add options to specify how the application appears in the dock
+if $darwin; then
+ GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
+fi
+
+# For Cygwin, switch paths to Windows format before running java
+if $cygwin ; then
+ APP_HOME=`cygpath --path --mixed "$APP_HOME"`
+ CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
+ JAVACMD=`cygpath --unix "$JAVACMD"`
+
+ # We build the pattern for arguments to be converted via cygpath
+ ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
+ SEP=""
+ for dir in $ROOTDIRSRAW ; do
+ ROOTDIRS="$ROOTDIRS$SEP$dir"
+ SEP="|"
+ done
+ OURCYGPATTERN="(^($ROOTDIRS))"
+ # Add a user-defined pattern to the cygpath arguments
+ if [ "$GRADLE_CYGPATTERN" != "" ] ; then
+ OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
+ fi
+ # Now convert the arguments - kludge to limit ourselves to /bin/sh
+ i=0
+ for arg in "$@" ; do
+ CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
+ CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
+
+ if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
+ eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
+ else
+ eval `echo args$i`="\"$arg\""
+ fi
+ i=$((i+1))
+ done
+ case $i in
+ (0) set -- ;;
+ (1) set -- "$args0" ;;
+ (2) set -- "$args0" "$args1" ;;
+ (3) set -- "$args0" "$args1" "$args2" ;;
+ (4) set -- "$args0" "$args1" "$args2" "$args3" ;;
+ (5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
+ (6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
+ (7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
+ (8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
+ (9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
+ esac
+fi
+
+# Escape application args
+save () {
+ for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
+ echo " "
+}
+APP_ARGS=$(save "$@")
+
+# Collect all arguments for the java command, following the shell quoting and substitution rules
+eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
+
+# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
+if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
+ cd "$(dirname "$0")"
+fi
+
+exec "$JAVACMD" "$@"
diff --git a/gradlew.bat b/gradlew.bat
new file mode 100644
index 0000000..e95643d
--- /dev/null
+++ b/gradlew.bat
@@ -0,0 +1,84 @@
+@if "%DEBUG%" == "" @echo off
+@rem ##########################################################################
+@rem
+@rem Gradle startup script for Windows
+@rem
+@rem ##########################################################################
+
+@rem Set local scope for the variables with windows NT shell
+if "%OS%"=="Windows_NT" setlocal
+
+set DIRNAME=%~dp0
+if "%DIRNAME%" == "" set DIRNAME=.
+set APP_BASE_NAME=%~n0
+set APP_HOME=%DIRNAME%
+
+@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
+set DEFAULT_JVM_OPTS=
+
+@rem Find java.exe
+if defined JAVA_HOME goto findJavaFromJavaHome
+
+set JAVA_EXE=java.exe
+%JAVA_EXE% -version >NUL 2>&1
+if "%ERRORLEVEL%" == "0" goto init
+
+echo.
+echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:findJavaFromJavaHome
+set JAVA_HOME=%JAVA_HOME:"=%
+set JAVA_EXE=%JAVA_HOME%/bin/java.exe
+
+if exist "%JAVA_EXE%" goto init
+
+echo.
+echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
+echo.
+echo Please set the JAVA_HOME variable in your environment to match the
+echo location of your Java installation.
+
+goto fail
+
+:init
+@rem Get command-line arguments, handling Windows variants
+
+if not "%OS%" == "Windows_NT" goto win9xME_args
+
+:win9xME_args
+@rem Slurp the command line arguments.
+set CMD_LINE_ARGS=
+set _SKIP=2
+
+:win9xME_args_slurp
+if "x%~1" == "x" goto execute
+
+set CMD_LINE_ARGS=%*
+
+:execute
+@rem Setup the command line
+
+set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
+
+@rem Execute Gradle
+"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
+
+:end
+@rem End local scope for the variables with windows NT shell
+if "%ERRORLEVEL%"=="0" goto mainEnd
+
+:fail
+rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
+rem the _cmd.exe /c_ return code!
+if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
+exit /b 1
+
+:mainEnd
+if "%OS%"=="Windows_NT" endlocal
+
+:omega
diff --git a/org.fox.epube/.gitignore b/org.fox.epube/.gitignore
new file mode 100644
index 0000000..3543521
--- /dev/null
+++ b/org.fox.epube/.gitignore
@@ -0,0 +1 @@
+/build
diff --git a/org.fox.epube/build.gradle b/org.fox.epube/build.gradle
new file mode 100644
index 0000000..25176bb
--- /dev/null
+++ b/org.fox.epube/build.gradle
@@ -0,0 +1,29 @@
+apply plugin: 'com.android.application'
+
+android {
+ compileSdkVersion 29
+ buildToolsVersion "29.0.2"
+ defaultConfig {
+ applicationId "org.fox.epube"
+ minSdkVersion 26
+ targetSdkVersion 29
+ versionCode 1
+ versionName "1.0"
+ testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
+ }
+ buildTypes {
+ release {
+ minifyEnabled false
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
+ }
+ }
+}
+
+dependencies {
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ implementation 'androidx.appcompat:appcompat:1.1.0'
+ implementation 'androidx.constraintlayout:constraintlayout:1.1.3'
+ testImplementation 'junit:junit:4.12'
+ androidTestImplementation 'androidx.test.ext:junit:1.1.1'
+ androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
+}
diff --git a/org.fox.epube/proguard-rules.pro b/org.fox.epube/proguard-rules.pro
new file mode 100644
index 0000000..6e7ffa9
--- /dev/null
+++ b/org.fox.epube/proguard-rules.pro
@@ -0,0 +1,21 @@
+# Add project specific ProGuard rules here.
+# You can control the set of applied configuration files using the
+# proguardFiles setting in build.gradle.
+#
+# For more details, see
+# http://developer.android.com/guide/developing/tools/proguard.html
+
+# If your project uses WebView with JS, uncomment the following
+# and specify the fully qualified class name to the JavaScript interface
+# class:
+#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
+# public *;
+#}
+
+# Uncomment this to preserve the line number information for
+# debugging stack traces.
+#-keepattributes SourceFile,LineNumberTable
+
+# If you keep the line number information, uncomment this to
+# hide the original source file name.
+#-renamesourcefileattribute SourceFile
diff --git a/org.fox.epube/src/androidTest/java/org/fox/epube/ExampleInstrumentedTest.java b/org.fox.epube/src/androidTest/java/org/fox/epube/ExampleInstrumentedTest.java
new file mode 100644
index 0000000..170d665
--- /dev/null
+++ b/org.fox.epube/src/androidTest/java/org/fox/epube/ExampleInstrumentedTest.java
@@ -0,0 +1,27 @@
+package org.fox.epube;
+
+import android.content.Context;
+
+import androidx.test.platform.app.InstrumentationRegistry;
+import androidx.test.ext.junit.runners.AndroidJUnit4;
+
+import org.junit.Test;
+import org.junit.runner.RunWith;
+
+import static org.junit.Assert.*;
+
+/**
+ * Instrumented test, which will execute on an Android device.
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+@RunWith(AndroidJUnit4.class)
+public class ExampleInstrumentedTest {
+ @Test
+ public void useAppContext() {
+ // Context of the app under test.
+ Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
+
+ assertEquals("org.fox.epube", appContext.getPackageName());
+ }
+}
diff --git a/org.fox.epube/src/main/AndroidManifest.xml b/org.fox.epube/src/main/AndroidManifest.xml
new file mode 100644
index 0000000..c2fe4db
--- /dev/null
+++ b/org.fox.epube/src/main/AndroidManifest.xml
@@ -0,0 +1,25 @@
+<?xml version="1.0" encoding="utf-8"?>
+<manifest xmlns:android="http://schemas.android.com/apk/res/android"
+ package="org.fox.epube">
+
+ <uses-permission android:name="android.permission.INTERNET"/>
+ <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>
+ <uses-permission android:name="android.permission.ACCESS_WIFI_STATE"/>
+
+ <application
+ android:allowBackup="true"
+ android:icon="@mipmap/ic_launcher"
+ android:label="@string/app_name"
+ android:roundIcon="@mipmap/ic_launcher_round"
+ android:supportsRtl="true"
+ android:theme="@style/AppTheme">
+ <activity android:name=".MainActivity">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
+ </application>
+
+</manifest> \ No newline at end of file
diff --git a/org.fox.epube/src/main/ic_launcher-web.png b/org.fox.epube/src/main/ic_launcher-web.png
new file mode 100644
index 0000000..b1531e0
--- /dev/null
+++ b/org.fox.epube/src/main/ic_launcher-web.png
Binary files differ
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
new file mode 100644
index 0000000..0db9de5
--- /dev/null
+++ b/org.fox.epube/src/main/java/org/fox/epube/MainActivity.java
@@ -0,0 +1,80 @@
+package org.fox.epube;
+
+import androidx.annotation.Nullable;
+import androidx.appcompat.app.AppCompatActivity;
+
+import android.graphics.Bitmap;
+import android.os.Bundle;
+import android.util.Log;
+import android.view.View;
+import android.webkit.CookieManager;
+import android.webkit.ServiceWorkerClient;
+import android.webkit.ServiceWorkerController;
+import android.webkit.WebResourceRequest;
+import android.webkit.WebResourceResponse;
+import android.webkit.WebSettings;
+import android.webkit.WebView;
+import android.webkit.WebViewClient;
+import android.widget.ProgressBar;
+
+public class MainActivity extends AppCompatActivity {
+
+ private final String TAG = this.getClass().getSimpleName();
+ private ProgressBar m_loadingBar;
+
+ @Override
+ protected void onCreate(Bundle savedInstanceState) {
+ super.onCreate(savedInstanceState);
+ setContentView(R.layout.activity_main);
+
+ getSupportActionBar().hide();
+
+ WebView web = findViewById(R.id.webview_main);
+
+ WebSettings settings = web.getSettings();
+
+ settings.setJavaScriptEnabled(true);
+ settings.setDomStorageEnabled(true);
+ settings.setCacheMode(WebSettings.LOAD_DEFAULT);
+ settings.setDatabaseEnabled(true);
+ settings.setAppCachePath(getCacheDir().getAbsolutePath());
+ settings.setAppCacheEnabled(true);
+
+ m_loadingBar = findViewById(R.id.loading_progress);
+ m_loadingBar.setIndeterminate(true);
+ m_loadingBar.setVisibility(View.VISIBLE);
+
+ web.setWebViewClient(new WebViewClient() {
+
+ @Override
+ public boolean shouldOverrideUrlLoading(WebView view, String url) {
+ view.loadUrl(url);
+ return true;
+ }
+
+ @Override
+ public void onPageStarted(WebView view, String url, Bitmap favicon) {
+ m_loadingBar.setVisibility(View.VISIBLE);
+ }
+
+ @Override
+ public void onPageFinished(WebView view, String url) {
+ Log.i(TAG, "Finished loading URL: " +url);
+
+ CookieManager.getInstance().setAcceptCookie(true);
+ CookieManager.getInstance().acceptCookie();
+ CookieManager.getInstance().flush();
+
+ m_loadingBar.setVisibility(View.GONE);
+ }
+
+ @Override
+ public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
+ Log.e(TAG, "Error: " + description);
+ }
+ });
+
+ web.setScrollBarStyle(WebView.SCROLLBARS_OUTSIDE_OVERLAY);
+ web.loadUrl("https://fakecake.org/books/index.php?wrapper=1");
+ }
+}
diff --git a/org.fox.epube/src/main/res/layout/activity_main.xml b/org.fox.epube/src/main/res/layout/activity_main.xml
new file mode 100644
index 0000000..4b67b75
--- /dev/null
+++ b/org.fox.epube/src/main/res/layout/activity_main.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="utf-8"?>
+<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
+ xmlns:app="http://schemas.android.com/apk/res-auto"
+ xmlns:tools="http://schemas.android.com/tools"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent"
+ tools:context=".MainActivity">
+
+ <WebView
+ android:id="@+id/webview_main"
+ android:layout_width="match_parent"
+ android:layout_height="match_parent" >
+ </WebView>
+
+ <ProgressBar
+ android:id="@+id/loading_progress"
+ style="@style/Widget.AppCompat.ProgressBar.Horizontal"
+ android:layout_width="match_parent"
+ android:visibility="gone"
+ android:layout_height="wrap_content" />
+
+</FrameLayout> \ No newline at end of file
diff --git a/org.fox.epube/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/org.fox.epube/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
new file mode 100644
index 0000000..83b52fc
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-anydpi-v26/ic_launcher.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@mipmap/ic_launcher_background"/>
+ <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/org.fox.epube/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/org.fox.epube/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
new file mode 100644
index 0000000..83b52fc
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml
@@ -0,0 +1,5 @@
+<?xml version="1.0" encoding="utf-8"?>
+<adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android">
+ <background android:drawable="@mipmap/ic_launcher_background"/>
+ <foreground android:drawable="@mipmap/ic_launcher_foreground"/>
+</adaptive-icon> \ No newline at end of file
diff --git a/org.fox.epube/src/main/res/mipmap-hdpi/ic_launcher.png b/org.fox.epube/src/main/res/mipmap-hdpi/ic_launcher.png
new file mode 100644
index 0000000..06c608e
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-hdpi/ic_launcher.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-hdpi/ic_launcher_background.png b/org.fox.epube/src/main/res/mipmap-hdpi/ic_launcher_background.png
new file mode 100644
index 0000000..5d8c59e
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-hdpi/ic_launcher_background.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-hdpi/ic_launcher_foreground.png b/org.fox.epube/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..4d33db4
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-hdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-hdpi/ic_launcher_round.png b/org.fox.epube/src/main/res/mipmap-hdpi/ic_launcher_round.png
new file mode 100644
index 0000000..ed08f44
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-hdpi/ic_launcher_round.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-mdpi/ic_launcher.png b/org.fox.epube/src/main/res/mipmap-mdpi/ic_launcher.png
new file mode 100644
index 0000000..0d3ec11
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-mdpi/ic_launcher.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-mdpi/ic_launcher_background.png b/org.fox.epube/src/main/res/mipmap-mdpi/ic_launcher_background.png
new file mode 100644
index 0000000..e964272
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-mdpi/ic_launcher_background.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-mdpi/ic_launcher_foreground.png b/org.fox.epube/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..05e12d0
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-mdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-mdpi/ic_launcher_round.png b/org.fox.epube/src/main/res/mipmap-mdpi/ic_launcher_round.png
new file mode 100644
index 0000000..a50cd5e
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-mdpi/ic_launcher_round.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-xhdpi/ic_launcher.png b/org.fox.epube/src/main/res/mipmap-xhdpi/ic_launcher.png
new file mode 100644
index 0000000..a325d02
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-xhdpi/ic_launcher.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-xhdpi/ic_launcher_background.png b/org.fox.epube/src/main/res/mipmap-xhdpi/ic_launcher_background.png
new file mode 100644
index 0000000..c7d1590
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-xhdpi/ic_launcher_background.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png b/org.fox.epube/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..6ca2bc0
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-xhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-xhdpi/ic_launcher_round.png b/org.fox.epube/src/main/res/mipmap-xhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..baf5f27
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-xhdpi/ic_launcher_round.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-xxhdpi/ic_launcher.png b/org.fox.epube/src/main/res/mipmap-xxhdpi/ic_launcher.png
new file mode 100644
index 0000000..88ce4f7
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-xxhdpi/ic_launcher.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-xxhdpi/ic_launcher_background.png b/org.fox.epube/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
new file mode 100644
index 0000000..ce94cf7
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-xxhdpi/ic_launcher_background.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png b/org.fox.epube/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..7dd2d47
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-xxhdpi/ic_launcher_round.png b/org.fox.epube/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..815bba8
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-xxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-xxxhdpi/ic_launcher.png b/org.fox.epube/src/main/res/mipmap-xxxhdpi/ic_launcher.png
new file mode 100644
index 0000000..9a44ca1
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-xxxhdpi/ic_launcher.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png b/org.fox.epube/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
new file mode 100644
index 0000000..9c2ea57
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-xxxhdpi/ic_launcher_background.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png b/org.fox.epube/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
new file mode 100644
index 0000000..f5df761
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/org.fox.epube/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
new file mode 100644
index 0000000..366f8f6
--- /dev/null
+++ b/org.fox.epube/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png
Binary files differ
diff --git a/org.fox.epube/src/main/res/values/colors.xml b/org.fox.epube/src/main/res/values/colors.xml
new file mode 100644
index 0000000..6b3f6ab
--- /dev/null
+++ b/org.fox.epube/src/main/res/values/colors.xml
@@ -0,0 +1,6 @@
+<?xml version="1.0" encoding="utf-8"?>
+<resources>
+ <color name="colorPrimary">#008577</color>
+ <color name="colorPrimaryDark">#00574B</color>
+ <color name="colorAccent">#D81B60</color>
+</resources>
diff --git a/org.fox.epube/src/main/res/values/strings.xml b/org.fox.epube/src/main/res/values/strings.xml
new file mode 100644
index 0000000..622a909
--- /dev/null
+++ b/org.fox.epube/src/main/res/values/strings.xml
@@ -0,0 +1,3 @@
+<resources>
+ <string name="app_name">The Epube</string>
+</resources>
diff --git a/org.fox.epube/src/main/res/values/styles.xml b/org.fox.epube/src/main/res/values/styles.xml
new file mode 100644
index 0000000..05674a6
--- /dev/null
+++ b/org.fox.epube/src/main/res/values/styles.xml
@@ -0,0 +1,12 @@
+<resources>
+
+ <!-- Base application theme. -->
+ <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
+ <!-- Customize your theme here. -->
+ <item name="colorPrimary">@color/colorPrimary</item>
+ <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
+ <item name="colorAccent">@color/colorAccent</item>
+ <item name="android:navigationBarColor">@android:color/black</item>
+ </style>
+
+</resources>
diff --git a/org.fox.epube/src/test/java/org/fox/epube/ExampleUnitTest.java b/org.fox.epube/src/test/java/org/fox/epube/ExampleUnitTest.java
new file mode 100644
index 0000000..afc44bd
--- /dev/null
+++ b/org.fox.epube/src/test/java/org/fox/epube/ExampleUnitTest.java
@@ -0,0 +1,17 @@
+package org.fox.epube;
+
+import org.junit.Test;
+
+import static org.junit.Assert.*;
+
+/**
+ * Example local unit test, which will execute on the development machine (host).
+ *
+ * @see <a href="http://d.android.com/tools/testing">Testing documentation</a>
+ */
+public class ExampleUnitTest {
+ @Test
+ public void addition_isCorrect() {
+ assertEquals(4, 2 + 2);
+ }
+} \ No newline at end of file
diff --git a/org.fox.epube/src_drawable/ic_launcher_bg.png b/org.fox.epube/src_drawable/ic_launcher_bg.png
new file mode 100644
index 0000000..20e653c
--- /dev/null
+++ b/org.fox.epube/src_drawable/ic_launcher_bg.png
Binary files differ
diff --git a/org.fox.epube/src_drawable/ic_launcher_fg.png b/org.fox.epube/src_drawable/ic_launcher_fg.png
new file mode 100644
index 0000000..ae302b4
--- /dev/null
+++ b/org.fox.epube/src_drawable/ic_launcher_fg.png
Binary files differ
diff --git a/org.fox.epube/src_drawable/s_launcher_bg.svg b/org.fox.epube/src_drawable/s_launcher_bg.svg
new file mode 100644
index 0000000..9334e59
--- /dev/null
+++ b/org.fox.epube/src_drawable/s_launcher_bg.svg
@@ -0,0 +1,166 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="32px"
+ height="32px"
+ viewBox="0 0 32 32"
+ version="1.1"
+ id="SVGRoot"
+ inkscape:export-filename="C:\Users\fox\Projects\the-epube-android\org.fox.epube\src_drawable\ic_launcher_bg.png"
+ inkscape:export-xdpi="1536"
+ inkscape:export-ydpi="1536"
+ inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
+ sodipodi:docname="s_launcher_bg.svg">
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="11.313708"
+ inkscape:cx="16"
+ inkscape:cy="16.236405"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer3"
+ showgrid="false"
+ inkscape:window-width="1920"
+ inkscape:window-height="1170"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:grid-bbox="true"
+ inkscape:snap-others="false"
+ inkscape:object-nodes="false"
+ inkscape:snap-nodes="false"
+ showguides="true"
+ inkscape:guide-bbox="true">
+ <sodipodi:guide
+ position="25.04067,26.055832"
+ orientation="0,1"
+ id="guide2064"
+ inkscape:locked="false" />
+ <sodipodi:guide
+ position="39.917732,5.937131"
+ orientation="0,1"
+ id="guide2068"
+ inkscape:locked="false" />
+ <sodipodi:guide
+ position="4.5475897,30.759392"
+ orientation="1,0"
+ id="guide2070"
+ inkscape:locked="false" />
+ <sodipodi:guide
+ position="27.41186,13.07432"
+ orientation="1,0"
+ id="guide2073"
+ inkscape:locked="false" />
+ </sodipodi:namedview>
+ <defs
+ id="defs815">
+ <linearGradient
+ id="linearGradient1579"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#00e0ca;stop-opacity:1;"
+ offset="0"
+ id="stop1577" />
+ </linearGradient>
+ <filter
+ id="filter4222-2"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB">
+ <feFlood
+ id="feFlood4224-7"
+ result="flood"
+ flood-color="rgb(0,0,0)"
+ flood-opacity="0.321569" />
+ <feComposite
+ id="feComposite4226-0"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur4228-9"
+ result="blur"
+ stdDeviation="2"
+ in="composite1" />
+ <feOffset
+ id="feOffset4230-3"
+ result="offset"
+ dy="0"
+ dx="0" />
+ <feComposite
+ id="feComposite4232-6"
+ result="composite2"
+ operator="over"
+ in2="offset"
+ in="SourceGraphic" />
+ </filter>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath2060">
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:6.02456713;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.32142861"
+ id="circle2062"
+ cx="16"
+ cy="16"
+ r="15.25" />
+ </clipPath>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath2075">
+ <circle
+ r="15.25"
+ cy="16"
+ cx="16"
+ id="circle2077"
+ style="fill:#2a0a00;fill-opacity:1;stroke:none;stroke-width:6.02456713;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.32142861" />
+ </clipPath>
+ </defs>
+ <metadata
+ id="metadata818">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ inkscape:groupmode="layer"
+ id="layer3"
+ inkscape:label="Layer 2">
+ <path
+ style="fill:#006b61;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:0.23986833px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="m 22.550481,-3.1332253 10.783511,1.4866724 0.255693,35.5493179 -5.676088,-0.67172 -12.146756,0.101762 z"
+ id="path4208"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccccc" />
+ <path
+ style="fill:#006b61;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:0.23986833px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 15.47976,33.35615 -0.70953,33.43504 -0.89562,-1.2708945 5.52428,-1.4286499 Z"
+ id="path4160"
+ inkscape:connector-curvature="0" />
+ <path
+ style="fill:#009688;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;filter:url(#filter4222-2)"
+ d="M 120.39815,877.82677 62.238859,1073.6501 3.9936139,894.70784 Z"
+ id="path4156"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="cccc"
+ transform="matrix(0.26051742,0,0,0.22085592,0.31393,-200.16854)" />
+ </g>
+</svg>
diff --git a/org.fox.epube/src_drawable/s_launcher_fg.svg b/org.fox.epube/src_drawable/s_launcher_fg.svg
new file mode 100644
index 0000000..b3982f9
--- /dev/null
+++ b/org.fox.epube/src_drawable/s_launcher_fg.svg
@@ -0,0 +1,161 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:osb="http://www.openswatchbook.org/uri/2009/osb"
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ width="32px"
+ height="32px"
+ viewBox="0 0 32 32"
+ version="1.1"
+ id="SVGRoot"
+ inkscape:export-filename="C:\Users\fox\Projects\the-epube-android\org.fox.epube\src_drawable\ic_launcher_fg.png"
+ inkscape:export-xdpi="1536"
+ inkscape:export-ydpi="1536"
+ inkscape:version="0.92.5 (2060ec1f9f, 2020-04-08)"
+ sodipodi:docname="s_launcher_fg.svg">
+ <sodipodi:namedview
+ id="base"
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1.0"
+ inkscape:pageopacity="0.0"
+ inkscape:pageshadow="2"
+ inkscape:zoom="11.313708"
+ inkscape:cx="16"
+ inkscape:cy="16.236405"
+ inkscape:document-units="px"
+ inkscape:current-layer="layer1"
+ showgrid="false"
+ inkscape:window-width="1920"
+ inkscape:window-height="1170"
+ inkscape:window-x="0"
+ inkscape:window-y="0"
+ inkscape:window-maximized="0"
+ inkscape:grid-bbox="true"
+ inkscape:snap-others="false"
+ inkscape:object-nodes="false"
+ inkscape:snap-nodes="false"
+ showguides="true"
+ inkscape:guide-bbox="true">
+ <sodipodi:guide
+ position="25.04067,26.055832"
+ orientation="0,1"
+ id="guide2064"
+ inkscape:locked="false" />
+ <sodipodi:guide
+ position="39.917732,5.937131"
+ orientation="0,1"
+ id="guide2068"
+ inkscape:locked="false" />
+ <sodipodi:guide
+ position="4.5475897,30.759392"
+ orientation="1,0"
+ id="guide2070"
+ inkscape:locked="false" />
+ <sodipodi:guide
+ position="27.41186,13.07432"
+ orientation="1,0"
+ id="guide2073"
+ inkscape:locked="false" />
+ </sodipodi:namedview>
+ <defs
+ id="defs815">
+ <linearGradient
+ id="linearGradient1579"
+ osb:paint="solid">
+ <stop
+ style="stop-color:#00e0ca;stop-opacity:1;"
+ offset="0"
+ id="stop1577" />
+ </linearGradient>
+ <filter
+ id="filter4222-2"
+ inkscape:label="Drop Shadow"
+ style="color-interpolation-filters:sRGB">
+ <feFlood
+ id="feFlood4224-7"
+ result="flood"
+ flood-color="rgb(0,0,0)"
+ flood-opacity="0.321569" />
+ <feComposite
+ id="feComposite4226-0"
+ result="composite1"
+ operator="in"
+ in2="SourceGraphic"
+ in="flood" />
+ <feGaussianBlur
+ id="feGaussianBlur4228-9"
+ result="blur"
+ stdDeviation="2"
+ in="composite1" />
+ <feOffset
+ id="feOffset4230-3"
+ result="offset"
+ dy="0"
+ dx="0" />
+ <feComposite
+ id="feComposite4232-6"
+ result="composite2"
+ operator="over"
+ in2="offset"
+ in="SourceGraphic" />
+ </filter>
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath2060">
+ <circle
+ style="fill:#000000;fill-opacity:1;stroke:none;stroke-width:6.02456713;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.32142861"
+ id="circle2062"
+ cx="16"
+ cy="16"
+ r="15.25" />
+ </clipPath>
+ </defs>
+ <metadata
+ id="metadata818">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ id="layer1"
+ inkscape:groupmode="layer"
+ inkscape:label="Layer 1">
+ <path
+ style="fill:#000000;fill-opacity:0.25098039;stroke:none;stroke-width:0.91927344px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
+ d="M 6.0606899,23.391297 18.421162,44.798954 37.782177,41.560914 36.269257,22.988422 26.108345,9.4767025 24.526345,9.0705233 22.431251,5.339972 18.006282,12.816697 15.996337,9.4767025 8.7278277,17.263513 Z"
+ id="path3112"
+ inkscape:connector-curvature="0"
+ sodipodi:nodetypes="ccccccccccc"
+ clip-path="none" />
+ <path
+ style="fill:#ffffff;fill-opacity:1;stroke:none;stroke-width:0.03779528;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:0.7091837"
+ d="M 22.429688,5.3398438 17.833984,9.4765625 V 19.589844 l 4.595704,-4.136719 z M 10.939453,8.0976562 c -1.7925831,0 -3.723694,0.3677055 -5.0566405,1.3789063 V 22.953125 c 0,0.229818 0.2311192,0.460937 0.4609375,0.460937 0.091927,0 0.1365882,-0.06445 0.2285156,-0.06445 1.2410192,-0.597528 3.034241,-1.001954 4.3671874,-1.001953 1.792583,0 3.723695,0.367706 5.056641,1.378906 1.241019,-0.781383 3.491922,-1.378906 5.054687,-1.378906 1.516801,0 3.080205,0.285155 4.367188,0.97461 0.09193,0.04596 0.138541,0.02734 0.230469,0.02734 0.229818,0 0.458984,-0.231119 0.458984,-0.460937 V 9.4765625 C 25.555858,9.0628895 24.958986,8.788412 24.269531,8.5585938 v 1.8378902 5.056641 5.515625 c -1.011201,-0.321745 -2.115622,-0.460938 -3.21875,-0.460938 -1.562765,0 -3.813668,0.597524 -5.054687,1.378907 V 15.453125 11.316406 9.4765625 C 14.663148,8.4653617 12.732036,8.0976563 10.939453,8.0976562 Z"
+ id="path1403"
+ inkscape:connector-curvature="0" />
+ <text
+ xml:space="preserve"
+ style="font-style:normal;font-weight:normal;font-size:40px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none"
+ x="6.717515"
+ y="19.625631"
+ id="text972"><tspan
+ sodipodi:role="line"
+ id="tspan970"
+ x="6.717515"
+ y="19.625631"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:16px;font-family:'Noto Serif';-inkscape-font-specification:'Noto Serif';fill:#000000;fill-opacity:1">ε</tspan></text>
+ </g>
+</svg>
diff --git a/settings.gradle b/settings.gradle
new file mode 100644
index 0000000..9d93383
--- /dev/null
+++ b/settings.gradle
@@ -0,0 +1,2 @@
+include ':org.fox.epube'
+rootProject.name='The Epube'