From 2a7814798bab8a20d149d3cbb15d3e72b0b432f5 Mon Sep 17 00:00:00 2001 From: tom5079 Date: Sat, 11 May 2019 22:59:12 +0900 Subject: [PATCH] Initial commit --- .gitignore | 13 + .idea/codeStyles/Project.xml | 122 +++++++ .idea/codeStyles/codeStyleConfig.xml | 5 + .idea/encodings.xml | 4 + .idea/gradle.xml | 20 ++ .idea/inspectionProfiles/Project_Default.xml | 10 + .idea/misc.xml | 6 + .idea/runConfigurations.xml | 12 + .idea/vcs.xml | 6 + app/.gitignore | 1 + app/build.gradle | 44 +++ app/proguard-rules.pro | 21 ++ .../quaver/pupil/ExampleInstrumentedTest.kt | 53 +++ app/src/main/AndroidManifest.xml | 33 ++ app/src/main/ic_launcher-web.png | Bin 0 -> 14680 bytes .../java/xyz/quaver/pupil/GalleryActivity.kt | 127 +++++++ .../java/xyz/quaver/pupil/MainActivity.kt | 296 ++++++++++++++++ .../java/xyz/quaver/pupil/SettingsActivity.kt | 80 +++++ .../quaver/pupil/adapters/GalleryAdapter.kt | 59 ++++ .../pupil/adapters/GalleryBlockAdapter.kt | 109 ++++++ .../xyz/quaver/pupil/types/TagSuggestion.kt | 14 + .../xyz/quaver/pupil/util/SetLineOverlap.kt | 37 ++ .../main/res/drawable-anydpi/ic_expand.xml | 10 + .../main/res/drawable-anydpi/ic_search.xml | 10 + .../main/res/drawable-anydpi/ic_settings.xml | 10 + .../res/drawable-hdpi/ic_account_group.png | Bin 0 -> 1332 bytes .../res/drawable-hdpi/ic_account_star.png | Bin 0 -> 1255 bytes .../main/res/drawable-hdpi/ic_book_open.png | Bin 0 -> 620 bytes app/src/main/res/drawable-hdpi/ic_brush.png | Bin 0 -> 975 bytes app/src/main/res/drawable-hdpi/ic_expand.png | Bin 0 -> 197 bytes .../res/drawable-hdpi/ic_gender_female.png | Bin 0 -> 1113 bytes .../main/res/drawable-hdpi/ic_gender_male.png | Bin 0 -> 1249 bytes app/src/main/res/drawable-hdpi/ic_search.png | Bin 0 -> 470 bytes .../main/res/drawable-hdpi/ic_settings.png | Bin 0 -> 469 bytes app/src/main/res/drawable-hdpi/ic_tag.png | Bin 0 -> 965 bytes .../main/res/drawable-hdpi/ic_translate.png | Bin 0 -> 1531 bytes .../res/drawable-ldpi/ic_account_group.png | Bin 0 -> 793 bytes .../res/drawable-ldpi/ic_account_star.png | Bin 0 -> 802 bytes .../main/res/drawable-ldpi/ic_book_open.png | Bin 0 -> 495 bytes app/src/main/res/drawable-ldpi/ic_brush.png | Bin 0 -> 639 bytes .../res/drawable-ldpi/ic_gender_female.png | Bin 0 -> 733 bytes .../main/res/drawable-ldpi/ic_gender_male.png | Bin 0 -> 817 bytes app/src/main/res/drawable-ldpi/ic_tag.png | Bin 0 -> 670 bytes .../main/res/drawable-ldpi/ic_translate.png | Bin 0 -> 934 bytes .../res/drawable-mdpi/ic_account_group.png | Bin 0 -> 1036 bytes .../res/drawable-mdpi/ic_account_star.png | Bin 0 -> 979 bytes .../main/res/drawable-mdpi/ic_book_open.png | Bin 0 -> 636 bytes app/src/main/res/drawable-mdpi/ic_brush.png | Bin 0 -> 760 bytes app/src/main/res/drawable-mdpi/ic_expand.png | Bin 0 -> 145 bytes .../res/drawable-mdpi/ic_gender_female.png | Bin 0 -> 947 bytes .../main/res/drawable-mdpi/ic_gender_male.png | Bin 0 -> 1001 bytes app/src/main/res/drawable-mdpi/ic_search.png | Bin 0 -> 236 bytes .../main/res/drawable-mdpi/ic_settings.png | Bin 0 -> 352 bytes app/src/main/res/drawable-mdpi/ic_tag.png | Bin 0 -> 848 bytes .../main/res/drawable-mdpi/ic_translate.png | Bin 0 -> 1259 bytes .../drawable-v24/ic_launcher_foreground.xml | 34 ++ .../res/drawable-xhdpi/ic_account_group.png | Bin 0 -> 1760 bytes .../res/drawable-xhdpi/ic_account_star.png | Bin 0 -> 1678 bytes .../main/res/drawable-xhdpi/ic_book_open.png | Bin 0 -> 892 bytes app/src/main/res/drawable-xhdpi/ic_brush.png | Bin 0 -> 1098 bytes app/src/main/res/drawable-xhdpi/ic_expand.png | Bin 0 -> 226 bytes .../res/drawable-xhdpi/ic_gender_female.png | Bin 0 -> 1593 bytes .../res/drawable-xhdpi/ic_gender_male.png | Bin 0 -> 1657 bytes app/src/main/res/drawable-xhdpi/ic_search.png | Bin 0 -> 416 bytes .../main/res/drawable-xhdpi/ic_settings.png | Bin 0 -> 628 bytes app/src/main/res/drawable-xhdpi/ic_tag.png | Bin 0 -> 1257 bytes .../main/res/drawable-xhdpi/ic_translate.png | Bin 0 -> 2052 bytes .../res/drawable-xxhdpi/ic_account_group.png | Bin 0 -> 2439 bytes .../res/drawable-xxhdpi/ic_account_star.png | Bin 0 -> 2382 bytes .../main/res/drawable-xxhdpi/ic_book_open.png | Bin 0 -> 948 bytes app/src/main/res/drawable-xxhdpi/ic_brush.png | Bin 0 -> 1576 bytes .../main/res/drawable-xxhdpi/ic_expand.png | Bin 0 -> 294 bytes .../res/drawable-xxhdpi/ic_gender_female.png | Bin 0 -> 2250 bytes .../res/drawable-xxhdpi/ic_gender_male.png | Bin 0 -> 2454 bytes .../main/res/drawable-xxhdpi/ic_search.png | Bin 0 -> 687 bytes .../main/res/drawable-xxhdpi/ic_settings.png | Bin 0 -> 914 bytes app/src/main/res/drawable-xxhdpi/ic_tag.png | Bin 0 -> 1642 bytes .../main/res/drawable-xxhdpi/ic_translate.png | Bin 0 -> 2643 bytes .../res/drawable-xxxhdpi/ic_account_group.png | Bin 0 -> 3327 bytes .../res/drawable-xxxhdpi/ic_account_star.png | Bin 0 -> 3138 bytes .../res/drawable-xxxhdpi/ic_book_open.png | Bin 0 -> 1301 bytes .../main/res/drawable-xxxhdpi/ic_brush.png | Bin 0 -> 2030 bytes .../res/drawable-xxxhdpi/ic_gender_female.png | Bin 0 -> 2856 bytes .../res/drawable-xxxhdpi/ic_gender_male.png | Bin 0 -> 3131 bytes app/src/main/res/drawable-xxxhdpi/ic_tag.png | Bin 0 -> 2306 bytes .../res/drawable-xxxhdpi/ic_translate.png | Bin 0 -> 3596 bytes .../res/drawable/ic_launcher_background.xml | 74 ++++ .../res/drawable/ic_launcher_foreground.xml | 17 + app/src/main/res/drawable/img_thumbnail.jpg | Bin 0 -> 69921 bytes app/src/main/res/layout/activity_gallery.xml | 30 ++ app/src/main/res/layout/activity_main.xml | 83 +++++ app/src/main/res/layout/item_gallery.xml | 9 + app/src/main/res/layout/item_galleryblock.xml | 98 ++++++ app/src/main/res/layout/item_progressbar.xml | 10 + app/src/main/res/layout/settings_activity.xml | 9 + app/src/main/res/menu/main.xml | 17 + .../res/mipmap-anydpi-v26/ic_launcher.xml | 5 + .../mipmap-anydpi-v26/ic_launcher_round.xml | 5 + app/src/main/res/mipmap-hdpi/ic_launcher.png | Bin 0 -> 1168 bytes .../res/mipmap-hdpi/ic_launcher_round.png | Bin 0 -> 2968 bytes app/src/main/res/mipmap-mdpi/ic_launcher.png | Bin 0 -> 835 bytes .../res/mipmap-mdpi/ic_launcher_round.png | Bin 0 -> 1782 bytes app/src/main/res/mipmap-xhdpi/ic_launcher.png | Bin 0 -> 1662 bytes .../res/mipmap-xhdpi/ic_launcher_round.png | Bin 0 -> 4227 bytes .../main/res/mipmap-xxhdpi/ic_launcher.png | Bin 0 -> 2762 bytes .../res/mipmap-xxhdpi/ic_launcher_round.png | Bin 0 -> 7068 bytes .../main/res/mipmap-xxxhdpi/ic_launcher.png | Bin 0 -> 4110 bytes .../res/mipmap-xxxhdpi/ic_launcher_round.png | Bin 0 -> 10484 bytes app/src/main/res/values-v23/styles.xml | 13 + app/src/main/res/values/arrays.xml | 60 ++++ app/src/main/res/values/colors.xml | 7 + app/src/main/res/values/dimen.xml | 5 + .../res/values/ic_launcher_background.xml | 4 + app/src/main/res/values/strings.xml | 32 ++ app/src/main/res/values/styles.xml | 18 + app/src/main/res/xml/root_preferences.xml | 33 ++ .../java/xyz/quaver/pupil/ExampleUnitTest.kt | 11 + build.gradle | 28 ++ gradle.properties | 18 + gradle/wrapper/gradle-wrapper.jar | Bin 0 -> 54329 bytes gradle/wrapper/gradle-wrapper.properties | 6 + gradlew | 172 ++++++++++ gradlew.bat | 84 +++++ libpupil/.gitignore | 1 + libpupil/build.gradle | 40 +++ .../src/main/java/xyz/quaver/hitomi/common.kt | 62 ++++ .../main/java/xyz/quaver/hitomi/download.kt | 3 + .../main/java/xyz/quaver/hitomi/galleries.kt | 61 ++++ .../java/xyz/quaver/hitomi/galleryblock.kt | 79 +++++ .../main/java/xyz/quaver/hitomi/readers.kt | 50 +++ .../main/java/xyz/quaver/hitomi/results.kt | 73 ++++ .../src/main/java/xyz/quaver/hitomi/search.kt | 317 ++++++++++++++++++ .../test/java/xyz/quaver/hitomi/UnitTest.kt | 64 ++++ settings.gradle | 1 + 134 files changed, 2735 insertions(+) create mode 100644 .gitignore create mode 100644 .idea/codeStyles/Project.xml create mode 100644 .idea/codeStyles/codeStyleConfig.xml create mode 100644 .idea/encodings.xml create mode 100644 .idea/gradle.xml create mode 100644 .idea/inspectionProfiles/Project_Default.xml create mode 100644 .idea/misc.xml create mode 100644 .idea/runConfigurations.xml create mode 100644 .idea/vcs.xml create mode 100644 app/.gitignore create mode 100644 app/build.gradle create mode 100644 app/proguard-rules.pro create mode 100644 app/src/androidTest/java/xyz/quaver/pupil/ExampleInstrumentedTest.kt create mode 100644 app/src/main/AndroidManifest.xml create mode 100644 app/src/main/ic_launcher-web.png create mode 100644 app/src/main/java/xyz/quaver/pupil/GalleryActivity.kt create mode 100644 app/src/main/java/xyz/quaver/pupil/MainActivity.kt create mode 100644 app/src/main/java/xyz/quaver/pupil/SettingsActivity.kt create mode 100644 app/src/main/java/xyz/quaver/pupil/adapters/GalleryAdapter.kt create mode 100644 app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt create mode 100644 app/src/main/java/xyz/quaver/pupil/types/TagSuggestion.kt create mode 100644 app/src/main/java/xyz/quaver/pupil/util/SetLineOverlap.kt create mode 100644 app/src/main/res/drawable-anydpi/ic_expand.xml create mode 100644 app/src/main/res/drawable-anydpi/ic_search.xml create mode 100644 app/src/main/res/drawable-anydpi/ic_settings.xml create mode 100644 app/src/main/res/drawable-hdpi/ic_account_group.png create mode 100644 app/src/main/res/drawable-hdpi/ic_account_star.png create mode 100644 app/src/main/res/drawable-hdpi/ic_book_open.png create mode 100644 app/src/main/res/drawable-hdpi/ic_brush.png create mode 100644 app/src/main/res/drawable-hdpi/ic_expand.png create mode 100644 app/src/main/res/drawable-hdpi/ic_gender_female.png create mode 100644 app/src/main/res/drawable-hdpi/ic_gender_male.png create mode 100644 app/src/main/res/drawable-hdpi/ic_search.png create mode 100644 app/src/main/res/drawable-hdpi/ic_settings.png create mode 100644 app/src/main/res/drawable-hdpi/ic_tag.png create mode 100644 app/src/main/res/drawable-hdpi/ic_translate.png create mode 100644 app/src/main/res/drawable-ldpi/ic_account_group.png create mode 100644 app/src/main/res/drawable-ldpi/ic_account_star.png create mode 100644 app/src/main/res/drawable-ldpi/ic_book_open.png create mode 100644 app/src/main/res/drawable-ldpi/ic_brush.png create mode 100644 app/src/main/res/drawable-ldpi/ic_gender_female.png create mode 100644 app/src/main/res/drawable-ldpi/ic_gender_male.png create mode 100644 app/src/main/res/drawable-ldpi/ic_tag.png create mode 100644 app/src/main/res/drawable-ldpi/ic_translate.png create mode 100644 app/src/main/res/drawable-mdpi/ic_account_group.png create mode 100644 app/src/main/res/drawable-mdpi/ic_account_star.png create mode 100644 app/src/main/res/drawable-mdpi/ic_book_open.png create mode 100644 app/src/main/res/drawable-mdpi/ic_brush.png create mode 100644 app/src/main/res/drawable-mdpi/ic_expand.png create mode 100644 app/src/main/res/drawable-mdpi/ic_gender_female.png create mode 100644 app/src/main/res/drawable-mdpi/ic_gender_male.png create mode 100644 app/src/main/res/drawable-mdpi/ic_search.png create mode 100644 app/src/main/res/drawable-mdpi/ic_settings.png create mode 100644 app/src/main/res/drawable-mdpi/ic_tag.png create mode 100644 app/src/main/res/drawable-mdpi/ic_translate.png create mode 100644 app/src/main/res/drawable-v24/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable-xhdpi/ic_account_group.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_account_star.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_book_open.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_brush.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_expand.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_gender_female.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_gender_male.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_search.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_settings.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_tag.png create mode 100644 app/src/main/res/drawable-xhdpi/ic_translate.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_account_group.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_account_star.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_book_open.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_brush.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_expand.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_gender_female.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_gender_male.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_search.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_settings.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_tag.png create mode 100644 app/src/main/res/drawable-xxhdpi/ic_translate.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_account_group.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_account_star.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_book_open.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_brush.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_gender_female.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_gender_male.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_tag.png create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_translate.png create mode 100644 app/src/main/res/drawable/ic_launcher_background.xml create mode 100644 app/src/main/res/drawable/ic_launcher_foreground.xml create mode 100644 app/src/main/res/drawable/img_thumbnail.jpg create mode 100644 app/src/main/res/layout/activity_gallery.xml create mode 100644 app/src/main/res/layout/activity_main.xml create mode 100644 app/src/main/res/layout/item_gallery.xml create mode 100644 app/src/main/res/layout/item_galleryblock.xml create mode 100644 app/src/main/res/layout/item_progressbar.xml create mode 100644 app/src/main/res/layout/settings_activity.xml create mode 100644 app/src/main/res/menu/main.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml create mode 100644 app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-hdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-mdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher.png create mode 100644 app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png create mode 100644 app/src/main/res/values-v23/styles.xml create mode 100644 app/src/main/res/values/arrays.xml create mode 100644 app/src/main/res/values/colors.xml create mode 100644 app/src/main/res/values/dimen.xml create mode 100644 app/src/main/res/values/ic_launcher_background.xml create mode 100644 app/src/main/res/values/strings.xml create mode 100644 app/src/main/res/values/styles.xml create mode 100644 app/src/main/res/xml/root_preferences.xml create mode 100644 app/src/test/java/xyz/quaver/pupil/ExampleUnitTest.kt create mode 100644 build.gradle create mode 100644 gradle.properties create mode 100644 gradle/wrapper/gradle-wrapper.jar create mode 100644 gradle/wrapper/gradle-wrapper.properties create mode 100644 gradlew create mode 100644 gradlew.bat create mode 100644 libpupil/.gitignore create mode 100644 libpupil/build.gradle create mode 100644 libpupil/src/main/java/xyz/quaver/hitomi/common.kt create mode 100644 libpupil/src/main/java/xyz/quaver/hitomi/download.kt create mode 100644 libpupil/src/main/java/xyz/quaver/hitomi/galleries.kt create mode 100644 libpupil/src/main/java/xyz/quaver/hitomi/galleryblock.kt create mode 100644 libpupil/src/main/java/xyz/quaver/hitomi/readers.kt create mode 100644 libpupil/src/main/java/xyz/quaver/hitomi/results.kt create mode 100644 libpupil/src/main/java/xyz/quaver/hitomi/search.kt create mode 100644 libpupil/src/test/java/xyz/quaver/hitomi/UnitTest.kt create mode 100644 settings.gradle diff --git a/.gitignore b/.gitignore new file mode 100644 index 00000000..2b75303a --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +*.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 diff --git a/.idea/codeStyles/Project.xml b/.idea/codeStyles/Project.xml new file mode 100644 index 00000000..cb22ebb7 --- /dev/null +++ b/.idea/codeStyles/Project.xml @@ -0,0 +1,122 @@ + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/codeStyles/codeStyleConfig.xml b/.idea/codeStyles/codeStyleConfig.xml new file mode 100644 index 00000000..79ee123c --- /dev/null +++ b/.idea/codeStyles/codeStyleConfig.xml @@ -0,0 +1,5 @@ + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 00000000..15a15b21 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/.idea/gradle.xml b/.idea/gradle.xml new file mode 100644 index 00000000..3e352b83 --- /dev/null +++ b/.idea/gradle.xml @@ -0,0 +1,20 @@ + + + + + + \ No newline at end of file diff --git a/.idea/inspectionProfiles/Project_Default.xml b/.idea/inspectionProfiles/Project_Default.xml new file mode 100644 index 00000000..146ab09b --- /dev/null +++ b/.idea/inspectionProfiles/Project_Default.xml @@ -0,0 +1,10 @@ + + + + \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml new file mode 100644 index 00000000..7631aec3 --- /dev/null +++ b/.idea/misc.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/.idea/runConfigurations.xml b/.idea/runConfigurations.xml new file mode 100644 index 00000000..7f68460d --- /dev/null +++ b/.idea/runConfigurations.xml @@ -0,0 +1,12 @@ + + + + + + \ No newline at end of file diff --git a/.idea/vcs.xml b/.idea/vcs.xml new file mode 100644 index 00000000..94a25f7f --- /dev/null +++ b/.idea/vcs.xml @@ -0,0 +1,6 @@ + + + + + + \ No newline at end of file diff --git a/app/.gitignore b/app/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/app/.gitignore @@ -0,0 +1 @@ +/build diff --git a/app/build.gradle b/app/build.gradle new file mode 100644 index 00000000..bf27adc7 --- /dev/null +++ b/app/build.gradle @@ -0,0 +1,44 @@ +apply plugin: 'com.android.application' +apply plugin: 'kotlin-android' +apply plugin: 'kotlin-android-extensions' + +android { + compileSdkVersion 28 + defaultConfig { + applicationId "xyz.quaver.pupil" + minSdkVersion 15 + targetSdkVersion 28 + 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 "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.2.1' + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.2.1' + implementation 'androidx.appcompat:appcompat:1.0.2' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + implementation 'androidx.preference:preference:1.1.0-alpha05' + implementation 'com.google.android.material:material:1.0.0' + implementation 'com.github.arimorty:floatingsearchview:2.1.1' + implementation 'androidx.appcompat:appcompat:1.0.2' + implementation 'androidx.constraintlayout:constraintlayout:1.1.3' + testImplementation 'junit:junit:4.12' + androidTestImplementation 'androidx.test.ext:junit:1.1.0' + androidTestImplementation 'androidx.test:runner:1.1.1' + androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1' + implementation project(path: ':libpupil') +} + +androidExtensions { + experimental = true +} diff --git a/app/proguard-rules.pro b/app/proguard-rules.pro new file mode 100644 index 00000000..481bb434 --- /dev/null +++ b/app/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 \ No newline at end of file diff --git a/app/src/androidTest/java/xyz/quaver/pupil/ExampleInstrumentedTest.kt b/app/src/androidTest/java/xyz/quaver/pupil/ExampleInstrumentedTest.kt new file mode 100644 index 00000000..73714252 --- /dev/null +++ b/app/src/androidTest/java/xyz/quaver/pupil/ExampleInstrumentedTest.kt @@ -0,0 +1,53 @@ +package xyz.quaver.pupil + +import android.graphics.BitmapFactory +import android.util.Log +import androidx.test.ext.junit.runners.AndroidJUnit4 +import androidx.test.platform.app.InstrumentationRegistry +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking +import org.junit.Assert.assertEquals +import org.junit.Test +import org.junit.runner.RunWith +import java.io.File + +/** + * Instrumented test, which will execute on an Android device. + * + * See [testing documentation](http://d.android.com/tools/testing). + */ +@RunWith(AndroidJUnit4::class) +class ExampleInstrumentedTest { + @Test + fun useAppContext() { + // Context of the app under test. + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + assertEquals("xyz.quaver.pupil", appContext.packageName) + } + + @Test + fun checkCacheDir() { + val appContext = InstrumentationRegistry.getInstrumentation().targetContext + val file = File(appContext.cacheDir, "imageCache/1412251/01.jpg.webp") + + val bitmap = BitmapFactory.decodeFile(file.absolutePath) + + Log.d("Pupil", bitmap.byteCount.toString()) + } + + @Test + @ExperimentalUnsignedTypes + fun test_doSearch() { + Log.d("TEST", "Starting...") + + runBlocking { + CoroutineScope(Dispatchers.Main).launch { + Log.d("TEST", "This is started! wow") + }.join() + } + + Log.d("TEST", "Finished! ...Really?") + } +} diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml new file mode 100644 index 00000000..ae7692db --- /dev/null +++ b/app/src/main/AndroidManifest.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/ic_launcher-web.png b/app/src/main/ic_launcher-web.png new file mode 100644 index 0000000000000000000000000000000000000000..18fdf67b47066035596ad204e3410127f6659995 GIT binary patch literal 14680 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 w*-Nwv;F#VK_F8bg*eQlR3IG5A literal 0 HcmV?d00001 diff --git a/app/src/main/java/xyz/quaver/pupil/GalleryActivity.kt b/app/src/main/java/xyz/quaver/pupil/GalleryActivity.kt new file mode 100644 index 00000000..8b397b2d --- /dev/null +++ b/app/src/main/java/xyz/quaver/pupil/GalleryActivity.kt @@ -0,0 +1,127 @@ +package xyz.quaver.pupil + +import android.os.Bundle +import android.view.View +import android.view.WindowManager +import androidx.appcompat.app.AppCompatActivity +import kotlinx.android.synthetic.main.activity_gallery.* +import kotlinx.coroutines.* +import xyz.quaver.hitomi.Reader +import xyz.quaver.hitomi.getReader +import xyz.quaver.hitomi.getReferer +import xyz.quaver.pupil.adapters.GalleryAdapter +import java.io.File +import java.io.FileOutputStream +import java.net.URL +import javax.net.ssl.HttpsURLConnection + +class GalleryActivity : AppCompatActivity() { + + private val images = ArrayList() + private var galleryID = 0 + private lateinit var reader: Deferred + private var loadJob: Job? = null + private var screenMode = 0 + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_gallery) + + galleryID = intent.getIntExtra("GALLERY_ID", 0) + CoroutineScope(Dispatchers.Unconfined).launch { + reader = async(Dispatchers.IO) { + getReader(galleryID) + } + } + + initView() + loadImages() + } + + override fun onDestroy() { + super.onDestroy() + loadJob?.cancel() + } + + private fun initView() { + gallery_recyclerview.adapter = GalleryAdapter(images).apply { + setOnClick { + val attrs = window.attributes + + screenMode = (screenMode+1)%2 + + when(screenMode) { + 0 -> { + attrs.flags = attrs.flags and WindowManager.LayoutParams.FLAG_FULLSCREEN.inv() + supportActionBar?.show() + } + 1 -> { + attrs.flags = attrs.flags or WindowManager.LayoutParams.FLAG_FULLSCREEN + supportActionBar?.hide() + } + } + window.attributes = attrs + } + } + } + + private fun loadImages() { + + fun webpUrlFromUrl(url: URL) = URL(url.toString().replace("/galleries/", "/webp/") + ".webp") + + loadJob = CoroutineScope(Dispatchers.Default).launch { + val reader = reader.await() + + launch(Dispatchers.Main) { + supportActionBar?.title = reader.title + + with(gallery_progressbar) { + max = reader.images.size + progress = 0 + + visibility = View.VISIBLE + } + } + + reader.images.chunked(8).forEach { chunked -> + chunked.map { + async(Dispatchers.IO) { + val url = if (it.second?.haswebp == 1) webpUrlFromUrl(it.first) else it.first + + val fileName: String + + with(url.path) { + fileName = substring(lastIndexOf('/')+1) + } + + val cache = File(cacheDir, "/imageCache/$galleryID/$fileName") + + if (!cache.exists()) + with(url.openConnection() as HttpsURLConnection) { + setRequestProperty("Referer", getReferer(galleryID)) + + if (!cache.parentFile.exists()) + cache.parentFile.mkdirs() + + inputStream.copyTo(FileOutputStream(cache)) + } + + cache.absolutePath + } + }.forEach { + val cache = it.await() + + launch(Dispatchers.Main) { + images.add(cache) + gallery_recyclerview.adapter?.notifyItemInserted(images.size - 1) + gallery_progressbar.progress++ + } + } + } + + launch(Dispatchers.Main) { + gallery_progressbar.visibility = View.GONE + } + } + } +} \ No newline at end of file diff --git a/app/src/main/java/xyz/quaver/pupil/MainActivity.kt b/app/src/main/java/xyz/quaver/pupil/MainActivity.kt new file mode 100644 index 00000000..f06503d8 --- /dev/null +++ b/app/src/main/java/xyz/quaver/pupil/MainActivity.kt @@ -0,0 +1,296 @@ +package xyz.quaver.pupil + +import android.content.Intent +import android.graphics.Bitmap +import android.graphics.BitmapFactory +import android.os.Bundle +import android.preference.PreferenceManager +import android.text.* +import android.text.style.AlignmentSpan +import android.view.View +import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.res.ResourcesCompat +import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView +import com.arlib.floatingsearchview.FloatingSearchView +import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion +import com.arlib.floatingsearchview.util.view.SearchInputView +import com.google.android.material.appbar.AppBarLayout +import kotlinx.android.synthetic.main.activity_main.* +import kotlinx.coroutines.* +import xyz.quaver.hitomi.* +import xyz.quaver.pupil.adapters.GalleryBlockAdapter +import xyz.quaver.pupil.types.TagSuggestion +import xyz.quaver.pupil.util.SetLineOverlap +import javax.net.ssl.HttpsURLConnection + +class MainActivity : AppCompatActivity() { + + private val galleries = ArrayList>() + + private var isLoading = false + private var query = "" + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.activity_main) + + main_appbar_layout.addOnOffsetChangedListener( + AppBarLayout.OnOffsetChangedListener { _, p1 -> + main_searchview.translationY = p1.toFloat() + main_recyclerview.translationY = p1.toFloat() + } + ) + + with(main_swipe_layout) { + setProgressViewOffset(false, 0, resources.getDimensionPixelSize(R.dimen.progress_view_offset)) + + setOnRefreshListener { + runBlocking { + cleanJob?.join() + } + fetchGalleries(query, true) + } + } + + setupRecyclerView() + setupSearchBar() + fetchGalleries(query) + } + + private fun setupRecyclerView() { + with(main_recyclerview) { + adapter = GalleryBlockAdapter(galleries).apply { + setClickListener { + val intent = Intent(this@MainActivity, GalleryActivity::class.java) + intent.putExtra("GALLERY_ID", it) + + //TODO: Maybe sprinke some transitions will be nice :D + startActivity(intent) + } + } + addOnScrollListener( + object: RecyclerView.OnScrollListener() { + override fun onScrolled(recyclerView: RecyclerView, dx: Int, dy: Int) { + super.onScrolled(recyclerView, dx, dy) + + val layoutManager = recyclerView.layoutManager as LinearLayoutManager + + if (!isLoading) + if (layoutManager.findLastCompletelyVisibleItemPosition() == galleries.size) + fetchGalleries(query) + } + } + ) + } + } + + private var suggestionJob : Job? = null + private fun setupSearchBar() { + val searchInputView = findViewById(R.id.search_bar_text) + //Change upper case letters to lower case + searchInputView.addTextChangedListener(object: TextWatcher { + override fun beforeTextChanged(s: CharSequence?, start: Int, count: Int, after: Int) { + + } + + override fun onTextChanged(s: CharSequence?, start: Int, before: Int, count: Int) { + + } + + override fun afterTextChanged(s: Editable?) { + s ?: return + + if (s.any { it.isUpperCase() }) + s.replace(0, s.length, s.toString().toLowerCase()) + } + }) + + with(main_searchview as FloatingSearchView) { + setOnMenuItemClickListener { + when(it.itemId) { + R.id.main_menu_settings -> startActivity(Intent(this@MainActivity, SettingsActivity::class.java)) + R.id.main_menu_search -> setSearchFocused(true) + } + } + + setOnQueryChangeListener { _, query -> + clearSuggestions() + + if (query.isEmpty() or query.endsWith(' ')) + return@setOnQueryChangeListener + + val currentQuery = query.split(" ").last().replace('_', ' ') + + suggestionJob?.cancel() + + suggestionJob = CoroutineScope(Dispatchers.IO).launch { + val suggestions = getSuggestionsForQuery(currentQuery).map { TagSuggestion(it) } + + withContext(Dispatchers.Main) { + swapSuggestions(suggestions) + } + } + } + + setOnBindSuggestionCallback { _, leftIcon, textView, item, _ -> + val suggestion = item as TagSuggestion + + leftIcon.setImageDrawable( + ResourcesCompat.getDrawable( + resources, + when(suggestion.n) { + "female" -> R.drawable.ic_gender_female + "male" -> R.drawable.ic_gender_male + "language" -> R.drawable.ic_translate + "group" -> R.drawable.ic_account_group + "character" -> R.drawable.ic_account_star + "series" -> R.drawable.ic_book_open + "artist" -> R.drawable.ic_brush + else -> R.drawable.ic_tag + }, + null) + ) + + val text = "${suggestion.s}\n ${suggestion.t}" + + val len = text.length + val left = suggestion.s.length + + textView.text = SpannableString(text).apply { + val s = AlignmentSpan.Standard(Layout.Alignment.ALIGN_OPPOSITE) + setSpan(s, left, len, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + setSpan(SetLineOverlap(true), 1, len-2, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + setSpan(SetLineOverlap(false), len-1, len, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE) + } + } + + setOnSearchListener(object : FloatingSearchView.OnSearchListener { + override fun onSuggestionClicked(searchSuggestion: SearchSuggestion?) { + val suggestion = searchSuggestion as TagSuggestion + + with(searchInputView.text) { + delete(if (lastIndexOf(' ') == -1) 0 else lastIndexOf(' ')+1, length) + append("${suggestion.n}:${suggestion.s.replace(Regex("\\s"), "_")} ") + } + + clearSuggestions() + } + + override fun onSearchAction(currentQuery: String?) { + //Do search on onFocusCleared() + } + }) + + setOnFocusChangeListener(object: FloatingSearchView.OnFocusChangeListener { + override fun onFocus() { + //Do Nothing + } + + override fun onFocusCleared() { + suggestionJob?.cancel() + + val query = searchInputView.text.toString() + + if (query != this@MainActivity.query) { + this@MainActivity.query = query + + fetchGalleries(query, true) + } + } + }) + } + } + + private val cache = ArrayList() + private var currentFetchingJob: Job? = null + private var cleanJob: Job? = null + + private fun cancelFetch() { + isLoading = false + + runBlocking { + cleanJob?.join() + currentFetchingJob?.cancelAndJoin() + } + } + + private fun fetchGalleries(query: String, clear: Boolean = false) { + val preference = PreferenceManager.getDefaultSharedPreferences(this) + val perPage = preference.getString("per_page", "25")?.toInt() ?: 25 + val defaultQuery = preference.getString("default_query", "")!! + + if (clear) { + cancelFetch() + cleanJob = CoroutineScope(Dispatchers.Main).launch { + cache.clear() + galleries.clear() + + main_recyclerview.adapter?.notifyDataSetChanged() + + main_noresult.visibility = View.INVISIBLE + main_progressbar.show() + main_swipe_layout.isRefreshing = false + } + } + + if (isLoading) + return + + isLoading = true + + currentFetchingJob = CoroutineScope(Dispatchers.IO).launch { + try { + val galleryIDs: List + + cleanJob?.join() + + if (query.isEmpty() && defaultQuery.isEmpty()) + galleryIDs = fetchNozomi(start = galleries.size, count = perPage) + else { + if (cache.isEmpty()) + cache.addAll(doSearch("$defaultQuery $query")) + + galleryIDs = cache.slice(galleries.size until Math.min(galleries.size + perPage, cache.size)) + + with(main_recyclerview.adapter as GalleryBlockAdapter) { + noMore = galleries.size + perPage >= cache.size + } + } + + if (query.isNotEmpty() and defaultQuery.isNotEmpty() and cache.isNullOrEmpty()) { + withContext(Dispatchers.Main) { + main_noresult.visibility = View.VISIBLE + main_progressbar.hide() + } + } + + galleryIDs.chunked(4).forEach { chunked -> + chunked.map { + async { + val galleryBlock = getGalleryBlock(it) + val thumbnail: Bitmap + + with(galleryBlock.thumbnails[0].openConnection() as HttpsURLConnection) { + thumbnail = BitmapFactory.decodeStream(inputStream) + } + + Pair(galleryBlock, thumbnail) + } + }.forEach { + val galleryBlock = it.await() + + withContext(Dispatchers.Main) { + main_progressbar.hide() + + galleries.add(galleryBlock) + main_recyclerview.adapter?.notifyItemInserted(galleries.size - 1) + } + } + } + } finally { + isLoading = false + } + } + } +} diff --git a/app/src/main/java/xyz/quaver/pupil/SettingsActivity.kt b/app/src/main/java/xyz/quaver/pupil/SettingsActivity.kt new file mode 100644 index 00000000..f179742e --- /dev/null +++ b/app/src/main/java/xyz/quaver/pupil/SettingsActivity.kt @@ -0,0 +1,80 @@ +package xyz.quaver.pupil + +import android.os.Bundle +import android.view.MenuItem +import androidx.appcompat.app.AlertDialog +import androidx.appcompat.app.AppCompatActivity +import androidx.preference.Preference +import androidx.preference.PreferenceFragmentCompat + +class SettingsActivity : AppCompatActivity() { + + override fun onCreate(savedInstanceState: Bundle?) { + super.onCreate(savedInstanceState) + setContentView(R.layout.settings_activity) + supportFragmentManager + .beginTransaction() + .replace(R.id.settings, SettingsFragment()) + .commit() + supportActionBar?.setDisplayHomeAsUpEnabled(true) + } + + class SettingsFragment : PreferenceFragmentCompat() { + + private val suffix = listOf( + "B", + "kB", + "MB", + "GB", + "TB" //really? + ) + + private fun getCacheSize() : String { + var size = context!!.cacheDir.walk().map { it.length() }.sum() + var suffixIndex = 0 + + while (size >= 1024) { + size /= 1024 + suffixIndex++ + } + + return getString(R.string.settings_delete_cache_summary, size, suffix[suffixIndex]) + } + + override fun onCreatePreferences(savedInstanceState: Bundle?, rootKey: String?) { + setPreferencesFromResource(R.xml.root_preferences, rootKey) + + with(findPreference("delete_cache")) { + this ?: return@with + + summary = getCacheSize() + + setOnPreferenceClickListener { + AlertDialog.Builder(context).apply { + setTitle(getString(R.string.settings_delete_cache_alert_title)) + setMessage(getString(R.string.settings_delete_cache_alert_message)) + setPositiveButton(android.R.string.yes) { _, _ -> + with(context.cacheDir) { + if (exists()) + deleteRecursively() + } + + summary = getCacheSize() + } + setNegativeButton(android.R.string.no) { _, _ -> } + }.show() + + true + } + } + } + } + + override fun onOptionsItemSelected(item: MenuItem?): Boolean { + when (item?.itemId) { + android.R.id.home -> onBackPressed() + } + + return true + } +} \ No newline at end of file diff --git a/app/src/main/java/xyz/quaver/pupil/adapters/GalleryAdapter.kt b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryAdapter.kt new file mode 100644 index 00000000..5d1febdc --- /dev/null +++ b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryAdapter.kt @@ -0,0 +1,59 @@ +package xyz.quaver.pupil.adapters + +import android.graphics.BitmapFactory +import android.util.Log +import android.view.LayoutInflater +import android.view.ViewGroup +import android.widget.ImageView +import androidx.recyclerview.widget.RecyclerView +import kotlinx.coroutines.CoroutineScope +import kotlinx.coroutines.Dispatchers +import kotlinx.coroutines.launch +import xyz.quaver.pupil.R + +class GalleryAdapter(private val images: List) : RecyclerView.Adapter() { + + class ViewHolder(val view: ImageView) : RecyclerView.ViewHolder(view) + + private var onClick: (() -> Unit)? = null + fun setOnClick(callback: (() -> Unit)?) { + this.onClick = callback + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): ViewHolder { + LayoutInflater.from(parent.context).inflate( + R.layout.item_gallery, parent, false + ).let { + return ViewHolder(it as ImageView) + } + } + + override fun onBindViewHolder(holder: ViewHolder, position: Int) { + with(holder.view) { + setOnClickListener { + onClick?.invoke() + } + + CoroutineScope(Dispatchers.Default).launch { + val options = BitmapFactory.Options() + + options.inJustDecodeBounds = true + BitmapFactory.decodeFile(images[position], options) + + options.inSampleSize = options.outWidth / + context.resources.displayMetrics.widthPixels + + options.inJustDecodeBounds = false + + val image = BitmapFactory.decodeFile(images[position], options) + + launch(Dispatchers.Main) { + setImageBitmap(image) + } + } + } + } + + override fun getItemCount() = images.size + +} \ No newline at end of file diff --git a/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt new file mode 100644 index 00000000..b94db781 --- /dev/null +++ b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt @@ -0,0 +1,109 @@ +package xyz.quaver.pupil.adapters + +import android.graphics.Bitmap +import android.view.LayoutInflater +import android.view.ViewGroup +import android.widget.LinearLayout +import androidx.cardview.widget.CardView +import androidx.recyclerview.widget.RecyclerView +import com.google.android.material.chip.Chip +import kotlinx.android.synthetic.main.item_galleryblock.view.* +import xyz.quaver.hitomi.GalleryBlock +import xyz.quaver.hitomi.toTag +import xyz.quaver.pupil.R + +class GalleryBlockAdapter(private val galleries: List>) : RecyclerView.Adapter() { + + private enum class ViewType { + VIEW_ITEM, + VIEW_PROG + } + + private fun String.wordCapitalize() : String { + val result = ArrayList() + + for (word in this.split(" ")) + result.add(word.capitalize()) + + return result.joinToString(" ") + } + + var noMore = false + + class ViewHolder(val view: CardView) : RecyclerView.ViewHolder(view) + class ProgressViewHolder(view: LinearLayout) : RecyclerView.ViewHolder(view) + + private var callback: ((Int) -> Unit)? = null + fun setClickListener(callback: ((Int) -> Unit)?) { + this.callback = callback + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + when(viewType) { + ViewType.VIEW_ITEM.ordinal -> { + val view = LayoutInflater.from(parent.context).inflate( + R.layout.item_galleryblock, parent, false + ) as CardView + + return ViewHolder(view) + } + ViewType.VIEW_PROG.ordinal -> { + val view = LayoutInflater.from(parent.context).inflate( + R.layout.item_progressbar, parent, false + ) as LinearLayout + + return ProgressViewHolder(view) + } + } + + throw Exception("Unexpected ViewType") + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + if (holder is ViewHolder) { + with(holder.view) { + val resources = context.resources + val languages = resources.getStringArray(R.array.languages).map { + it.split("|").let { split -> + Pair(split[0], split[1]) + } + }.toMap() + val (gallery, thumbnail) = galleries[position] + + val artists = gallery.artists.ifEmpty { listOf("N/A") } + val series = gallery.series.ifEmpty { listOf("N/A") } + + setOnClickListener { + callback?.invoke(gallery.id) + } + + galleryblock_thumbnail.setImageBitmap(thumbnail) + galleryblock_title.text = gallery.title + galleryblock_artist.text = artists.joinToString(", ") { it.wordCapitalize() } + galleryblock_series.text = + resources.getString(R.string.galleryblock_series, series.joinToString(", ") { it.wordCapitalize() }) + galleryblock_type.text = resources.getString(R.string.galleryblock_type, gallery.type).wordCapitalize() + galleryblock_language.text = + resources.getString(R.string.galleryblock_language, languages[gallery.language]) + + galleryblock_tag_group.removeAllViews() + gallery.relatedTags.forEach { + galleryblock_tag_group.addView( + Chip(context).apply { + text = it.toTag().wordCapitalize() + } + ) + } + } + } + } + + override fun getItemCount() = if (galleries.isEmpty()) 0 else galleries.size+(if (noMore) 0 else 1) + + override fun getItemViewType(position: Int): Int { + return when { + galleries.getOrNull(position) == null -> ViewType.VIEW_PROG.ordinal + else -> ViewType.VIEW_ITEM.ordinal + } + } +} \ No newline at end of file diff --git a/app/src/main/java/xyz/quaver/pupil/types/TagSuggestion.kt b/app/src/main/java/xyz/quaver/pupil/types/TagSuggestion.kt new file mode 100644 index 00000000..2b39db9f --- /dev/null +++ b/app/src/main/java/xyz/quaver/pupil/types/TagSuggestion.kt @@ -0,0 +1,14 @@ +package xyz.quaver.pupil.types + +import com.arlib.floatingsearchview.suggestions.model.SearchSuggestion +import kotlinx.android.parcel.Parcelize +import xyz.quaver.hitomi.Suggestion + +@Parcelize +data class TagSuggestion constructor(val s: String, val t: Int, val u: String, val n: String) : SearchSuggestion { + constructor(s: Suggestion) : this(s.s, s.t, s.u, s.n) + + override fun getBody(): String { + return s + } +} \ No newline at end of file diff --git a/app/src/main/java/xyz/quaver/pupil/util/SetLineOverlap.kt b/app/src/main/java/xyz/quaver/pupil/util/SetLineOverlap.kt new file mode 100644 index 00000000..8c1d5b4b --- /dev/null +++ b/app/src/main/java/xyz/quaver/pupil/util/SetLineOverlap.kt @@ -0,0 +1,37 @@ +package xyz.quaver.pupil.util + +import android.graphics.Paint +import android.text.style.LineHeightSpan + +class SetLineOverlap(private val overlap: Boolean) : LineHeightSpan { + companion object { + private var originalBottom = 15 + private var originalDescent = 13 + private var overlapSaved = false + } + + override fun chooseHeight( + text: CharSequence?, + start: Int, + end: Int, + spanstartv: Int, + lineHeight: Int, + fm: Paint.FontMetricsInt? + ) { + fm ?: return + + if (overlap) { + if (overlapSaved) { + originalBottom = fm.bottom + originalDescent = fm.descent + overlapSaved = true + } + fm.bottom += fm.top + fm.descent += fm.top + } else { + fm.bottom = originalBottom + fm.descent = originalDescent + overlapSaved = false + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable-anydpi/ic_expand.xml b/app/src/main/res/drawable-anydpi/ic_expand.xml new file mode 100644 index 00000000..46ffbc0f --- /dev/null +++ b/app/src/main/res/drawable-anydpi/ic_expand.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable-anydpi/ic_search.xml b/app/src/main/res/drawable-anydpi/ic_search.xml new file mode 100644 index 00000000..4da90631 --- /dev/null +++ b/app/src/main/res/drawable-anydpi/ic_search.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable-anydpi/ic_settings.xml b/app/src/main/res/drawable-anydpi/ic_settings.xml new file mode 100644 index 00000000..994eaacb --- /dev/null +++ b/app/src/main/res/drawable-anydpi/ic_settings.xml @@ -0,0 +1,10 @@ + + + diff --git a/app/src/main/res/drawable-hdpi/ic_account_group.png b/app/src/main/res/drawable-hdpi/ic_account_group.png new file mode 100644 index 0000000000000000000000000000000000000000..2e8279db368d2bc549e4c775c4f65da0c203065d GIT binary patch literal 1332 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@1_tJ@o-U3d8Ta0X-}hGz75R5=?xk~=eAp*l z{+Q}0>V*TYi%+X zu@o9|FO$BLxp_zKvhP0*Y?0jcHo)upQH%S*?=8#E{oHri`uiNlnjaq?9&YECxBIt$ zK^?mZk8*(C^mz3}kqnFbe)2V}S(dqaS>`SAFb5ksd8I}Dof&K9&Y$^xM&-r`oqMmt z{VuL|XiH?-bAp*cuvhqEQ=&v8xB3A~v*hJ(l^1>VTKXw!|EIE0&cg;Fr#Bffs4*A_ zzRkrM7hn_PUxrt@*~-qo+G&Y7HLe=a7_e|-K{o!81r zmtvlU2d}(x>)5fjlACVl0(Jy`SDNajd8Vd$#ZRwuQ%^tr{^;Y6=SP!1hOc*+=dK~v zZR_d6t^0(LVOr|fw?9fdL=_jchG>=UOlNF#cpxRX@@-9Xb8}U9=6{|!?{|o=TE(~Z z_LC?3u5D&u&@ZV8=vb}0Y-`?4Zp9*9rgdevPM^`A=YC)Td*_nswVAiHjNi|7n>X{j ziEni2?N?u`EwPbq@-APn6L-4vNoUja%^_M> z)z#HMZ_DKuzIeIU%dj|>W20E7%RUp|&1F&-{cha7JN06QN&M=oC24Z1i;nF-$*^f* zz>Dq}z3{JH7rz=zKbfMmE!W>e^Yy`m5B)i2(eI{KEdQ}JD%U4aWTD2Xw{^$&Z+LOr zVy@rv`I~ZoTPhwgW^h|FWqRieAqIob_nkU+GkjY*Wj`xZWBj%2*ZKeXGPXP}u4Dox z5uKI_XAZ;e&1anojyzd1<$iu{?%nrh>D!r(oH=vm^ck7SL2;aH&GWa;@to+Pa*y#t z-txf3(FUKH8REscTJs;w%9~sMNLcYmuF|bj&p+Gm`kTvYF~2#Vu|oL3gvk$XJ1zVW zntcAxpFNv4Z{B?1jO_8AI0qMdUteEcJ$?P_(%W2=J~9gKef#5o(zB@^Dxc==7BpKA z42D&PpO-VlF|M!^*miPLF|1o=IEp-h{bdAhI3{9*|EP+Vdz`)ADKt%k( zJroVO`6-!cmAEyedPO7wHE4irC@xF4N=htF)h#W`WJt@*Nww0~*DuK}(9caw&rHtN c4fUu9G&0Ic;VkWs0qSA!boFyt=akR{0G+s5&j0`b literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_account_star.png b/app/src/main/res/drawable-hdpi/ic_account_star.png new file mode 100644 index 0000000000000000000000000000000000000000..53b16e5dae82597caea24f38ecbe543d3be84cfb GIT binary patch literal 1255 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@1_tI8o-U3d8TZ~s+|O1Hm9TwomV4`{NltF8 zPxtP-YkYWbd`VjpaqaHeUusIVg5vS4^TldD9JN0zK40WWcxMO4CDx0)K@*&eg*9%t z?vkkWNLXt>NpF%%vAz7PDJ8zQX8y?#o5RdJdFTDV`-(7?dR#PY+wIXzTk zrq8+l-rl_|37th)C2^Yrm4ON(~?*)?Cv zS$Kkv+H=O3&({8$rOw&1(mNZLCDvB^xJ(Ip^~!-YVw&hi9qmVxPZ#g)5}(*|{lR3OwZwcdumzMiV7jLa=eX^S2SgqcT z`%0gtzTPF>&zG_GzRJvRGv7xaFSPqARkOuv-Rrywe}o#+KTkAK`sAwqi9w*(&6wfc zPlf%`{m1P;Fa8#xAEGt&-SMQ2N)0N0FDH9k>oJtyx$bxE_8CqK6Le1BS{JtZ`II2> zLMLPP2YEJf|5YZRH2K5vVn#t_Wo2Pa&7W-@CDwaRso0-*TC~4Hcgfa1&86$QJQnSp znAd-_e)A$zXEPqT*N!z%aN_A}JHusE0Z+VOn->Kohs znlzL%`pgroe6Zo7kFJi+j-yE*6)zl5OzDYaHz;g-5zcf2QvI~cS*B@@Pt8R{K=5A&LW?t12*NBpo#FA92&O-#>B&ejbnDRV6-^|ko9Y|DJ09tKZWKbLh*2~7Z3 CZXM(R literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_book_open.png b/app/src/main/res/drawable-hdpi/ic_book_open.png new file mode 100644 index 0000000000000000000000000000000000000000..144febb1a0a774c0f12158d02ed77b3010903d07 GIT binary patch literal 620 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@pz*q%E{-7?_uk&L^*d}J!u}!s__TnTT}54s zbar}Ix6W&74L%?n@LsTuL(}OMtC4}>SLdq3^OyE1b%_Mevg3Jgep7PJ_v!nWw0LMP zy;7g{YwjYAW%quwHq119=Cx~w9Yb~Y+gp~~SFL*WR^!0JAJ$5{rs}8ee zN}C?8{9ZTF;iHR-@cX|uCA%0H(k@Ls%2XhIOV8w3)aTMz{qu%?k<de!+0gA08F?2T9&9V$46KTQP4e5&nObVOQtUmul0d)iB&W z0@Pr_tFYF(mEq0tA6DhBSj`f|rS9@XWM5a_lcBTTopDaFw$d%HaIwV0XZ#mVZgso8 zZMMz%`I~iSGwm=u7V~COcVWaM{WE_A{_$!oowA2Npf-HR+m|arp{ZKp8c~vxSdwa$ zT$Bo=7=VFescT@OYh)f`Xli9-Vr6WiZD3$!V6gv&Kp~2T-29Zxv`X9>&b6*M3)G+i zvZ1&v-6|=uI90c_D3c*AGbhzbUthl@w?IEPF+DRmTQ}LO%+jO8-R<;!<4-_644$rj JF6*2UngDt`=4k)` literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_brush.png b/app/src/main/res/drawable-hdpi/ic_brush.png new file mode 100644 index 0000000000000000000000000000000000000000..5316c73213f95ceeb1f7b58b31f15a956c6cf33b GIT binary patch literal 975 zcmeAS@N?(olHy`uVBq!ia0vp^1|ZDA1|-9oezpTCmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@1_q`Ho-U3d8Ta1K*qeXZL886>y(Q-(Wv{Cx z9o|~3Mhb_7G$(2EE1cKq_|I_UOo-S&X0}sD?wxCCZJp{7;^Ff1L&J|5(yEdku9F$B zp1iwJB`756__R00Z2#TvzrOtW#QWGdR*y+4o|7z`3z>C}8}$6iF{^fSaaBArJ#YJO zzJ?D~?%mQ=f|pIUFTebfu|cUpMDXsV(!B-}JUI+Si&=dx-`TfghXuoi;>^tQxh`** z+7h409^6DQ=06UX?f!dvwckt!kq@U>7Bz({ z38>aQVG2C#uC;*4&WJJe!$gi1E&Q<#rZp>=3J)+Vo^$GZZ1a`V-fQ{g^@khyLlq{U zlwthP5_QJxY+CV?;@ev}b7#E%T2=48bkbSN^-MdSG0A(~c2RnuDky3r@IWAX+El6j z28XRtca;`BcL|Bvs<+f;YS6x| zxxdeEVtM|jb6Mu`z=OYqHt1-V*46#H#9J4sH2w76sDDCQo4$$7+U{EzD=YZcS8eid zt%tRo0vGq)KieX3>=-A*h1&dMH_rA78Tfu)HRV$mNcd9zS|P^ch40vI_H>*xb6XI! z@(#lXivxA6f@)F7N4?oWT)AdJV`sw$fhne*b$LzoVf9dOA{tVk0Q|`vi+kSR=(axHf_17z9 zm|nYauDY64&hUm?@mq(6zssyCMJDze)ZdmxSKbDu5|xwBp2$x~DfnT1_$w%rsFt`! zl%yn}$cBl8eLQ!67=D`Nv~0|P4qgC(KyF(?{x^HVa@DsgML z%JKXGP=f}@hT^hxtE9x@RNc~|Oop_~oK!1)ef^T$0{z^?^vvXJU6Z1qB44+ttVHdz Q!9YC>p00i_>zopr0M`16MgRZ+ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_expand.png b/app/src/main/res/drawable-hdpi/ic_expand.png new file mode 100644 index 0000000000000000000000000000000000000000..87c8ec074555fa5576a2c6e37a4992a970e892bd GIT binary patch literal 197 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_search.png b/app/src/main/res/drawable-hdpi/ic_search.png new file mode 100644 index 0000000000000000000000000000000000000000..7ca567fe6d4bee5098852a3a89546acb74f064e8 GIT binary patch literal 470 zcmV;{0V)28P)OTA_m15&X;KzmW)3p@K&d z{L|!rl?b#=1@|KO$H@OF5vWWB&m;Kr*Q}p1RBw^si#uN?%pEr zhEyM_QPG#6uRhitknaslN(Guw=TF7&RMYFTGyBGfRI@w-OJGKanA3Nr zWrS&~qmN_27WJSEqc;7%RBb>yR9+YECv|7Gw1?$_TpYVqP_qf#stydk^>lZ@8ed?a zKM+r-klorHwotkM63R(K{SnGBLRFLg$mCFsM0dytRUL{jsZtF}zZ7NV8Gv%wUjP6A M07*qoM6N<$f-0NUi~s-t literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_settings.png b/app/src/main/res/drawable-hdpi/ic_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..24ba874aebc92d1ee4ebabdcaef5e80d189de88b GIT binary patch literal 469 zcmV;`0V@89P)K;A%zxs2eI*K1cQx*g+fXNNhP*fLy$mHB!ZoRU=f&{ zfg=Q&J$vTjPLciLZNS%G}U;vjb? zhIQv;UIIA^$sR$z3=CCj3=9n|3=F@3LJcn%7)pVryh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@1_q`!PZ!6KjC*gd`e$D*kYNAt{{3{9TXRFg zBE0pvj9hj(Utg5(bg(f$`SY{e8U0nCM0Y&&{jhH8rL@!>trfQqs_hJI-M0AT=ZZpw z%#2xoCYfxg>-YDZ|6aYmvGm%`dxDOK(>CvPb*XmQqT8ZzNdS6;P*i4g}=;7x4bvlFo=}K+TXZ&bLV8y1nXAYm5L_+ z7X+=e`Pv)9;O_Ee*3A3divJjPh_~=}DlWaFJJl;*=D6fiHjU}0`)e03j$8lz+_twX zb8iQq-n4J(=~Vs$eti$*}ahI)29dK z%m4S(te96mfkkOc$COWr2i{D4m89s>*zqk?{>{$K(d)0r|8mo7*zR)WC;u0ghIL&( z#FxH5V$^Wu@R?xW%eU_4eXqWfJoVkvC5t}!JYibUbb?nwPbs{?qT>$ZBBdhEj;0g3 z36V!+8fGqEt@qAd=T{PYY~$w8>3kl6*T4RaT3eej%Tg=zepX z?W(ZV%g^lLesHYolz+#H+M1d_#zqVbZHFJe7gbVoxnkt|+2+OZr3~R6UQ3JE6ugfd z`ZSS&AtCbGdLF@rPnDUCTy#S1#1xp1TzZ^egdC3O z&6jXsTo_^(=)lub^z#U#oeOir#I&CwKr@3@ehKx8ygiQJ=I?kKly=mKv4oPX{wgEMwFx^mZVxG z7o`Fz1|tJQOI-sKT_f`lLlY}gLn|XgZ36=<0|Vo87NER@(2$#-l9^VCTZ7Z&hHXF% z8Xy~r%hIiq5{pxHON%lY(lT>Wt@QQvOL7bJa}(1ule2Xzf=nVy!YfUrmM%F6)WhKE L>gTe~DWM4fBDjdm literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-hdpi/ic_translate.png b/app/src/main/res/drawable-hdpi/ic_translate.png new file mode 100644 index 0000000000000000000000000000000000000000..1a8f43653695f7ed65182c79a8c0cdf302edfbb6 GIT binary patch literal 1531 zcmZ{kdpOg39LK-tGK!Eo*lBL%7Pi{R7Q>7fVVX=%X$(zP%Qh;~6p=2D+~rcv(YsqEf$m7{grDEy&?~&KPM1~dj+w7bu;T37&B#FB-LlU0K=0Ewd-rk)$Gj-5;8Nh^j9M%%a5Lj9 zHjQED$Jp|;ciqa7v@CSh%ZF>KpNlja%{8a!($9UCy7uR*G?zsyh2C@P-REa-JXOC~ zkhh4;vX-uF9Lh@l!acZ>SCOlpt!BA@`#wFLG}C6QQtKV5OeLovBvqb!l}jN&gl-i{ z)VDo-#$iV)-AKfb7lMhxH**WMq3MViyXwi0UkCE*1TOVX;#Lp!g*tmAnmu<}*Q)u8 zP1u$uZ+xxLU}8g{YXf7rsA*Bn&&;a0y>0N2OBwn-TnlJ>58q68tq4X$Kcw$`8#gs% z8Sie@8wtK<8uQ|#%z&3G-P+uxgj80w{KuQwOTao@NWj;wbXdrAw$x&&EcY7KIY&Gu56rMHm z{_7T2Gru%GfMGrt`&$~8+tf|r6Q}eOWTfop-j=9bH&rE%W@ zX@A2d7Y8IWYX96-irtCVvR;W*t$aS&H+3pAp<_97#ozbK(lT6<9OUz%QJ1OvJZM>) zmwV7!IH`#l!bVP>ex;~b+T_<&*iR?vV~hHW^X^3DCyyvI|MZ{6FHCL6HAnn}4iBfj5y~*&_I)(m=2HSfN zNGg7&5A36xkv_Ka*)c`mI)1Yky)vO4QLM~Ul^pBaC6dIvPU&i?K0UO_kl=B`T&CmQ zvw*|#5p6s*b!eblC|rr#YFw{QZv=5lzv8xw!GE* zDX@C&uyXDY^V3qifv9^#c>jL7AE~yzr>94(P$)XP`=oMtu7QC;Gv-||ky2A$eor6} zj5Kc4IR)oJs~SsEdVt2JrV_5RWjZpu z7^>Q>rRU?CxRiJZU?*w^))|Fy-nomi1B1h0acJyz6bgqzA)dW`@*e^7 zIGvGj>i-4D3&`n^!2TZxc4{Inmd1{E=B6+}0wXydheRSdOcs(!OJu|yb@tsCOHGap U=hAwg!XXU^^a~+26AqvI8z&OA{Qv*} literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-ldpi/ic_account_group.png b/app/src/main/res/drawable-ldpi/ic_account_group.png new file mode 100644 index 0000000000000000000000000000000000000000..c7cbb8cbb4d209cf9214665975836c714f903bc1 GIT binary patch literal 793 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 coa~(N!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3285v z*c@J-vtDsED@?>SKlt;zMYFat&U-%7bJ8BR4Xg{&CEWg=W0<+|3(w(-`#EOq-C5k- zllHwAZ#(=@?_@fIm(r)%Ddk2p=Pc(hc$ zd)SFh>HTBb_h*OW)PToH}qLC!<{uU%aS8iPH)<`v_Yuo#r*3fCQ^p1G3%LMFq-r4 zdgCN>-2d{1Zkba|QVb47=S%M>CrP9gHj+$_<+HE?ogBM@iaVoiPeatUrzQ?EC_xT6)0+WGiiEBhjN@7W> zRdP`(kYX@0FtpS)Fwr$K4>2^cGO@HWG}bmSure_C(Z2BuiiX_$l+3hB+!{J>ae@+> z2FQluvUIDY#Nt%l(xOa;w9K4TD}8!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3?!qR`fsYAj1CP`?`}?CK+BW zk!n~a4%L;i z=h8MyGaP1eshn5-v}?uJ)}J;1Eadvd*M_}b`NVUM;CVAgfjL5grc%AGn{U<#PZUnG z)37}4werIEzx>H(mK03RU8J$Abnffz3~7ps{$-d{l}QEOWm?ej!l>`@<9NnZ6Xr6c zp5RJ&_Hx~Xxb@fXGPtB{s7Z`gW;kcoVB#C^`Xo>MM89&BQdM-zOjj4SZ}+0_C-lrL zv6|a6Q~A_i^>q)=)XZ1$4B`+FOpTm&)ir0wwO^|H--*huXclRm&a}=WvO+bWHKf&= zQH-&7#QZNC9V-ADTyVi zR>?)FK#IZ0z|d0Hz(m)`JjBq%%GA)x$WYtBz{zopr05~@GIsgCw literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-ldpi/ic_translate.png b/app/src/main/res/drawable-ldpi/ic_translate.png new file mode 100644 index 0000000000000000000000000000000000000000..ffe6baf7185ecaf45569a634eb8a26134d3a25e6 GIT binary patch literal 934 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`GjEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3JPQS4c8H~ft^4~z|AkZG(`D5QzliVPD4DFKp|o~FnD$(s&6_xmy6&FD zcI!dI+Ry8_)4h5!Cx^LwS@Y~}_5Gdmi{(GuKU{j(^?IqeepUS6mkcvqep;*Sdw>7; zZpohRq>UNfC-!uFx%KuNGlS8qb32U$CQ34BPI~=#0&|0$$d#C+?VEz*%8*@7pQ?()ChmG{ajqd!l%dDa|Mz)i z*&XYuuSyt8e_z3wz}cWyxjjTnlwm=P-gA#<9`9HkH>fG?Rw;g3WLdtfIcejIt`mP} z)ZG03H}(Gac!mhIOv&Ud1_9SVp<3;IyRPZWzgiHWF@@ny=j&TvYWL54@#wv(VCCz| zd9ItBE-eXK`MuEI%tb{h@}tfBlnTEvSG)Q9*KDoRP}1t#)A?}0V~fhASKeg)H9n@p z;wbQE%E4>buFdPPk$2={NQw;m%47TM>+`6x1N}F*=T^%(SeTlcUe7RD!#EpP6V94orKhC9V-ADTyViR>?)FK#IZ0z|d0Hz(m)`JjBq%%EZ#j*izfTz{nC}Q!>*kacju$53B}i&;Z#`T$XN?lvtdqTUwOKkd~Q~YNfBQUy@s(pPQJT fnVhX#99d;#?3A3TzEFGtP!EHrtDnm{r-UW|N+*A; literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_account_group.png b/app/src/main/res/drawable-mdpi/ic_account_group.png new file mode 100644 index 0000000000000000000000000000000000000000..314120c494ecc9d314c8c2c853eb43fea5502285 GIT binary patch literal 1036 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_Cwy$!fk$L9koEv$x0Bg+3=B+XJzX3_A`ZWucF@?_JJ$wxhOFD5dHH#Ld*0+JK5Ffup|MHNG#Lb( zWHh=qW#0aFQr`T6-an}WbJs02)_j_^GGtZjMd9nbQPY-2Ok4UhdDSXCRuT3F$I#Ht zu|H>}MxH7)Wn%Ze+{086x&Hd{P7jH;kLv<7L>L-oF7IfPK7NLOPx@hl9=F9C51m<; zIZM?w@ZRlhcV8@JK2&;FG_B6VMKC7ka)SO_6{T92N347K%aSVD1DnkKT-H6dkPUw8lpX$-S#U0M!OWY{3EmtV=be74SNiT$^#PN! zh76ucK{CfRpM3tA+@dhm>!nkN2!m#e#=AFf{&1K`yIncFNoQ@``upXv|Pl;IlJU%t>5-u;MQfB|M=sNJvS9czAjDG8LRT6aVRF&GY0Q zhK9^ptJb|f%@D^hBjMTIpp{$L8JL-w&v#}tcDVE(ZS1~0b;Z@JsHH(S*N3h41A18S zVzAPz>!r0W*S{7m4Ju@1F!-!weE#RHpLf;2X}sB2W$-!q{_BnUcE`_j&kJUFv2W{= z^F3|RkIv`H``RbhG1v350{u2W=K9&vY5Gqm=AVnoxXQ3(iuxGdc&DX}NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_Cwy$!fk$L9koEv$x0Bg+3=B+DJY5_^A`ZU|^UW3x6tPWLTkJXeS7nLz>s&#!U_y5)%#Y?3%*Xby&FqyoPGbMfX%_&YxwQ`Lo zoZPK<%Sp)S<&iBrPDVbvSAA~g?>Gy7iG+s#JaTNFYLh+HggR{+ysPa)v$x&~S{iiI zs)%`7swIQmgr4nFvsB`Dt&4tRw*I^Fyt8TRU+((H(r|HM&V((OUw%1t>((tdiS}#l zcBa0w#U}>z?Y(8QE61wjhRNB7d9Rjb#wk?lHC^128u@Y_uSDC&f})}#l{M>L|H^n0 zIx)T4Xu|pD=es*BO-xFRa{^q-7D+J(+`4_yL4c)vLv`NfMB82K>cs{BE2Ij3^!&$h zmycn_GE1@Uqwgl!C@Lv41TiF4v)Ft7Q`+geDM&*^?0b9h&O38D?pPl%4uq!X1?AP zD#IA1HzPH2rP{|{weOGJ75Pl&nlf~pU^$t~u)h1~BlqKl$E13X)iQ)L?BQ27^ev9K z{&lj~%F7H3GH<0VzW5_nYw9+BqYFhW+j8T1n-<(MTk*7L=gMaRCsT}0R@mfC+{2d; z<1$J18G^wY&xe; zO{!s0xVX5$y3FNC>+{O^#*RW8Tie<|&95Q{KH42^ygOr_*V3S+U%!5}pZI7;-1_@& z&(Hi%7j8>D!*uaJ^I^f?O3D8pefz9nDdMv0q|zoQxl_NlwtlX!|HHt{!0?Z0XY>an zon^Z$feBT$#5JNMC9x#cD!C{XNHG{07+UHYnCKdrhZve#85vrc7-$<9SQ!{Bul{C_ zq9HdwB{QuOw}xwKe$7A)8Xy~r%hIiq5{pxHON%lY(lT>Wt@QQvOL7bJa}(1ule2Zb bGqNKs%?eVg-c@S@^)Pt4`njxgN@xNAuJw_E literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_book_open.png b/app/src/main/res/drawable-mdpi/ic_book_open.png new file mode 100644 index 0000000000000000000000000000000000000000..b76cd538c1f8d3c31699c38a8fb6ce90c9014bd6 GIT binary patch literal 636 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_Cwy$!fk$L9koEv$x0Bg+K;vyaT^vIq4!@md>vz~epml$wx{#>-T-9AM z2f7|}wd$oe8W%9WV_;wCCGM5J-C>L7;*v%qr#BZYG7ZX-a@-a6XQkSnugSk|ZB+8A zB;{n8pzFm{0hZ(kYaY&fzsjokoNhToe%txbZtlO1eGFlf!C8<`)MX5lF!N|bSQrEyl*T_7?(A3Jv#LC!2+rYrez+nFkfkG4w zx%nxXX_dG&oNHZi7N|i3WJ7UTx>ZtQajI@NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_Cwy$!fk$L9koEv$x0Bg+K;w6Mx;TbJ9DY0XY?g4KMBDxC!k13+AB{TO z&?&Z5AiT|BGiP2AW0i2M#yS@L1Jy4UX_uG9?$Uh3nxdRywX;E>AaGKSlINB=LeFaM zN^lz1pP3VB`u^32v)|8tKJ&1E?Z&fx?VkJYeBL7-_4+$Qn~Hz!efe|WBRmfsHu&RV z#Q%WtWO(0Wmc4QQXTQBw;n}|2RIpIz^e=<^*)a)%HBxK8#w}u6{Xl6EP|PUayo|%V zVZO=ivwliUfe+nS9vw*LKGJ$z$bhk5CxJ`O^MHy>M*)Aw3F+Vhg+u!lrk~!LbK8!o zKtOz7=YhWGmFH!TSB7bbEV=*wza$S^;?9_TL0(fm-yLsc);{O3G)Qw<(8^>%&9hTx zFTVI9d-vUaYp=ilR$)`;{>ezIW~Ia0u+th#?Izb){P%H@auk^3%KC5n(e5s*iB>%Ti}zdcu^`)IacrKi#EC$H;S91Hjydbs~g{W10YbLp2QzswtW zPR0syGM2bJS#&k4)|m5tnl!@>=ExHaPSZI2fN{^DTH+c}l9E`GYL#4+3Zxi}3=A!G z4NP>6%tH)Kt&B{qj19C646FoU^=3d;j-)0rfC=y85}Sb4q9e0A}hT AQ~&?~ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_expand.png b/app/src/main/res/drawable-mdpi/ic_expand.png new file mode 100644 index 0000000000000000000000000000000000000000..4da33c07f5d471ad4725bfbfc1e93604674c92d6 GIT binary patch literal 145 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gj5uPrNAr-fh6C_v{Cx|>?ZEI_b zx)RVVDj_L(Ra#p5Kij3miYqOSSFcRYK3E?!?Enw^O2yMmI@4N|JKKYEEcCorWLcPb rugJ3y^Inl}u}Rg$xJIO>DUpZ4cE0&u%~S^qpdAdJu6{1-oD!M<@98bK literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_gender_female.png b/app/src/main/res/drawable-mdpi/ic_gender_female.png new file mode 100644 index 0000000000000000000000000000000000000000..7000159c051d5d93dcfc2b3d2366ad94d47449c2 GIT binary patch literal 947 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_Cwy$!fk$L9koEv$x0Bg+3=B*qo-U3d5r^M~`DP0TirA)qa-ALUNc`-I zj0>TPYfthV^c58U$M*6XSJ(anz24^km^Nzc5E0iq+VAV2a=~iyCD)R`+d)|wT#Nb+ zhApeS-nw4MY4%J%rKJ~kSAPF^&bIhnZT`FJ0~2L$GDxJ;Ct|8UCI-2hV!z=e~L^q788rmn!0Y{95#bX%w|rXiu9)6j*5?u zmy2NSI+}FTpl7y}zLJr)()*~j*R&W?jAjD$o*;KUYb$>(_lDf+2$y%v9+N}7 zR;pJEigzC^(h-|2CfJ;!J=5pj>af+b_x|V=V4cA-;n@8xao#X@lg&^Uo>Ri8;{J8VrX4$eSaZa$4B6(fj-eq)%e;e& zC-Zx_z&7Qy;BGmtLv1S$_`jXUq0MmM!a>J5sxw9|ydb!wr*F9j+ zb8~LemfLSvHb^+TEVDXtUg-dnb>iZS8MBsI@+ojXn36dw&2Iks^=sGWmZ#d~%zDPl z@R-4&=w|6%amPOktr8aoNcgHvE?@YY@#M6iEI*g9uYdNuYx;k!_I~{aATShQWH2x^ zEHsnrzu#z=P%Sh`+G}O|)~L0DZRTH6ujH8REwTD*H`Obb*?@7$E(LprJzs6!XYP&r zFE`EnR5b%b#_exc=Q6v0n)%p5^v!2ohL+vjWyXSn>ysb3{;aTPVoUpdkLmO#xvx>> zvERQfT;*Wn)Wgi6RMhi?^{xKIKVq&9SN1bZOTEdE_wr@W>s@{#^PG1AlkxrU(}g;Z zoaw8-&?yu5oB46fSLZ&Hr2)W%s9NG0QIe8al4_M)lnSI6j0_Adbq!2(jm$#~O{`2T ztqjby4GgRd3=Skstwhm~o1c=IR*74~Mtj|(Kn)ro8;Z-)t&$RpQ*}#=G8xh`b5gDJ p_4P|~3-ogn(=(H^b-lw)Efbx*J=e!Sxdzn3;OXk;vd$@?2>`gKc)kDt literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_gender_male.png b/app/src/main/res/drawable-mdpi/ic_gender_male.png new file mode 100644 index 0000000000000000000000000000000000000000..211cee7a7887f724f37439dc017cdf3cfb19ebe6 GIT binary patch literal 1001 zcmeAS@N?(olHy`uVBq!ia0vp^3LwnE1|*BCs=fdzmUKs7M+SzC{oH>NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_Cwy$!fk$L9koEv$x0Bg+3=B-GJY5_^A`ZU|JL@MLDDv;z-q;O`IC?YJ zn5p$P3e3*TPj}Y3&~D)7bm!ORkCrtI@eRC&n*9lj1chQRNWPFTF*H>BW1;sWb9c+m z5GS4HQZ~t+fOQlV) zW#)ci*RD$b122{e7sP&l8#z1ocIw)#UD4H=ssUbSv)0aEa5tG}L1ijS&TT#B2%gEt zpN$&w!<`PC_?Q0t%$_&9-nGYNw_Re6out2W-EYIZSRKaGn~Z`^u`?{|$Y`3`Ig_8E zhPNqUYux(xGiK@Y&Dx{h=(TiG#@49*8I|W)*o>JOIy86{=6a|+n;JBq@lO71&)HAr z{|eQc~jyQJ>=ylx~^5U&$?eAK# zc8e-^+rk42Im@K~#zvg@(bU1G=fiMdTBRCyYm=z>f)Fjy#D70swupjEnR&g#gSkN< zNpb%9`!BXtq@|_JnJGW}iPV8x3s}ybWxW4A`ejMgl#X{y5)*@N&GbpD&(D7!-Y$J} zTda+xWhJ9RX3qOX%MxUi+zX9nt}&Z^)}%p`Avx;xbFY zj!T-E6`-#@dDT;Ji=aewA!*;_K_32OC7#SE^>Kd5n8kvU} znpl}wS{WK^8yHv_82o782+CFn4Y~O#nQ4`{HFVzM1Z5BnkPXFU=~hXJ#i_cbMVSm~ unK`Le`uh4Mxdr;UiRqci*}CR=Mj>IY=}`v`{8t3(VeoYIb6Mw<&;$Tt9F?O0 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_search.png b/app/src/main/res/drawable-mdpi/ic_search.png new file mode 100644 index 0000000000000000000000000000000000000000..fd0d5163f0ea594ff814ed1160713a3fb35413d9 GIT binary patch literal 236 zcmeAS@N?(olHy`uVBq!ia0vp^5+KaM1|%Pp+x`Gjn>}3|Ln>}1CrGe9Y5M>F|80hk zK?-$WU4%`2S;eg-Wp^-3G~j(jC@~H#j;f7nG=n$mDSDJji5xN3LC} zTE#oZV{3wBNHRNPscb;$X^*WBI71d2GL{|-DD?+&*h7@{8B6yBl-g&$ZC<{muUWKN zTXfgyXWeQ%6tj7k;MVAN@6<-SrNu!H@`r!5*hq6^wCUlID5n0_)=VcOzQ hR#kuF!|mn_4B@};8h_mOK?&%522WQ%mvv4FO#sJeSDgR= literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-mdpi/ic_settings.png b/app/src/main/res/drawable-mdpi/ic_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..c891ad02f0e79df409f7f0e2103cdc64c556ebb7 GIT binary patch literal 352 zcmV-m0iXVfP)|CECkT!u>n@n<|5j{|W%6d%W zV6#90h#%w7)BwbcNNO3OV%WfIAXdla3vnPmgr?yHvf*f!oIq216szmeG^(L#s>h?Y z9!;$pG0Bt^3(85d0OUQWHwgw2RQ+KzwV>b?$7Q%WG=d05GJzxwN+=4rT>q7bWLk#B z<;Vb()TMFxqJ;_>trA}x@IbRW3|xd32lxPTaRMr4*a=0nAGF|t6?SIOf(;#j3P3xg y!VXkGI+I(%uEb)&3~JT~jaV$G8ah?xpauY`Fv^{3#c2Hi0000NS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_Cwy$!fk$L9koEv$x0Bg+3=B+yo-U3d5r>~%v(LZmAi?(Gd9AKXJ6D_8 z1AAvp14R+dor)fz-~Booc@00c-ncc9Rq>!Z1EUc4shfhl+`;TA>XJ8_bS{2A&9E&< zyR$aW=Ih*|>33}R@4jQnxUMR2XR?9B9kXLUBBy=a)p%yk(oCuTi?wuz1d#>N}*CkeS<8LrBbS!!yD_EN)>CpH1&9mN5iXv;j zW;4u>W;rwSr%t}bX}gIkCvSY-BhB#5Or|cc$Fg&gMjZDEL7+*(7w7u6GF!;?x;;MX zmwvb7WXh*n=Z<2A{IkLhgn2OC7#SE^>Kd5n8kvU}npl|{ zS{WH?8yHv_7#N?k03~aLhTQy=%(P0}8k{CKYy)c00NGGnmTr}lSe&X`T9nCNS%G}U;vjb? zhIQv;UV>C6dj$D1FjT2AFf_Cwy$!fk$L9koEv$x0Bg+3=GU`JY5_^A`U+dyPqB7D)R5#-r1Ax`nEjC z+AA&P5zDKSck<3`lO?w!RJL`k;D5EPqbdJm{)hM%&W|I_l8XOVH0M#aYNwOi2; zG5rTS!##!xGIDZtya#SG6ciME&}vW-)LeR{n!#dEMpjmq$xNSpYnJc-vG0H2ZkDp; zZ?0y2?R#v&@*t4mxa{$VC02hqjOQ~mr2TX9s(kUu*T+Xk;9@01CIkQSpp{eS&YkNP zuWRt3_P?-F)b-2hGk;n#C@hMe>GSNd+39D_$(wSk_uc)s*T#9>_1EtiRy^jvuaK5^ zBx&R7)2B~6PO-7Ju5Rk^o3WK)0qd48bLQ13O!UxU>bP$$bg^Lb%{>>oq*)p*b(w!~ zG0gbsc>Z(Lt@3b2r;h1Ug3iC_l{$0hg3>u|#W!j?>lo|d{-bk&iYK5E52pP%vWk6Z7pd}NERTz_{Q%LIW(LV~t} zzIhx~HLMQ3GoKzib}Y_rzI>>c?Xtuy;zU!WUD9F_Zdce(l->>RcoDPv z2^%nM&;9uELziJY5R?b6yuu{-wB*OK#}=N)3olhySMv*AWM+8BKB24X(EK?89EDs5 zoVGui=q1tO|Gi|!@tX4*z3MgBHn9esdd*<>MzvC6;`aN3f&Lkpd^=S zY4_@^ef<3X1?Wv*&(sj~>iXhm|MDM{FBY3usxLGp448pcOI#yLQW8s2t&)pUffR$0 zfuW_Yfr+k>d5EEjm5HU5v8A?wft7)Q+@+VtQ8eV{r(~v8;?|JgA6O04paHU>xGdc& zDX} + + + + + + + + + + diff --git a/app/src/main/res/drawable-xhdpi/ic_account_group.png b/app/src/main/res/drawable-xhdpi/ic_account_group.png new file mode 100644 index 0000000000000000000000000000000000000000..4e6389bc408b8776dcbae571ff0ef5fd52a13812 GIT binary patch literal 1760 zcmZ`)c~sL^7JjjS0VF~afwB~ch_VL)MV3NkL1>E*!IokW z64^90U~vFjP}$LO1fy(f#gMQm1rdc7LTFjk`8og0%pY^lyYD;q-SeIM-u=#b_goO! zPeV;l4FI5V#2=!-Nc`wX6?kuArA@=2l;9cY3Bb=~>N~N@aEwT&_<4br5rfxoV0_%4 z5(q$!82|-^0BpfW1&aWj!UM2G2f&37fKF;nSFjtLP>BohgJ6Vh)4Mw#2Gvymh;$hJ z|LwlwBzFLmuN;9qsaeux!Dx!U4|cFWB?I%S(Qs>j+T570gjB*}r+n_|FS@@Ez0a6D zR(V|6;IOfc!J&LVTLVp>ogXw`s2oK7O7#?KCPZ?NT^8x8UI@&;nr6ri>5(6v^*z^} z)H;3@pA zYtB(??NUGfX2H`Q$W&C(=zV33Va78*tyT3hbnUFyi$LI#SW1Q*db+yw3=IuyM_$Q) zdG@oatx`wY+(0l+k9~)kc_k=ITq-$gL$nv12a=gox|f@XC8b}V3#mSJ{(juo)6>(< zUdZT(h|bDK^CzT=5G>Q^k|c>Afi&4b@Y|Eh2IrP*YilD#6;vzj)~KGWv}YIu<)>fq zTD@R47)RlM3Rh-EJts^gkK0JH+Hi!n=GK-s#RBKyAqy=N-943q0|W4zbc$kk9zQV9 zuto$vtqa4>vvE>y=#5j*MZvb=g{(!ClH?`*_rZbU#$6K2!ow|Zw(eFUe;|p>xQlp# zZ0qnuq-V1(fAd-cYp&XYXr--=H2MDWz)>?{^zLm%Jm!GVr??@A?c{Tj2|f zf3N0io`}on-OcHIZ7TXQRJP|HpGT=XK?U(6jJAo*#BOH9rGO7BftUhrWz;~gM=d#% zst*feT2Qb5;6tv1-n$+tpWNumeemoG2^l=;fGE_|Ii@mwv%Q^jP0AND9^R$@p+u-} zx@lm+j`92PF^0$Eg`L`7TU#^f$a;q$k~XhbpJ}o2-oJl;c!1~$2BKz~BTa-aQnSV# zhX0Xs+P%K2fi+TeFV-6wtTN^aEkg`M$Cpq7$aNqPC4}EJJH~gN9H$l>YjrZL=~sG4_@D$Vl41rT^BPZi)_N3S()MZ@{# zQ2C56u6*&9Owo&jJ8Ftn4X<}K+U?e?YGZA!VP0Y%)H$pya0bAOizeut)l{E9xp^`s zW~M&+nNp+$5m&B@_FDAfYJqOh-pP4a#a$cPDP=|wUX9dlzllZ@LF!K5z})Hv(fEeZ z9RyA-g;FC2VB+-*(o2u*C=QFYNIkK!rTQy-Tr=L%Oobd#Jw_y-m&@h)C5`&uUpxm1jqbP()%+q@@0v=vPRIXcK-imoai=TmGt^nH(J+~%oz2Ah z^Q#qumd;W&V`^yL@K0RvkUDB(u$TN^n?jOx*2WzWTC>^g*0`xBF&N@=g~?98*m;J@rV+{V!WlfBy;gJDhv6 zxG4kvwGVK7XdFf?hv{Ld%qvyz!Ewzjq$cB(BqHi30K$=Z$`8Wf%w U!I<>emkD#g5g#(t;zj@FUvlUJLjV8( literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_account_star.png b/app/src/main/res/drawable-xhdpi/ic_account_star.png new file mode 100644 index 0000000000000000000000000000000000000000..a8dc7cc710c1cdb41216b0e28bcb251089025e8d GIT binary patch literal 1678 zcmZ{kdr;F?7RPT41mt0XszjqLVJlh%6G#vUh!B1V1V~JpFd~ZKk%SO~LJ+|gjOAg1 zwAz(e5|j#*id141j695F3&T8KlaR=`OlmlCS zg$uWoNJcCGr#%1=7Xe^_TjDtYPT~QWX9Ga00KoOcl{R`1e1S@ij(}jou^iTZ2FBVG zk?|s!k$>m@p9H}GSkt1QP-gCv1x4R+3~T+v4iWFz_LfWEV);)XXUcSB_0EEE=pmze z|A9S{Z89fJTs^sd3Oo857s5eIwX%`*n2QIi?OJVbF#h?~)_bumx}9wE6%S$kf~{#_ z`iHd7ZxS<2=8rC^mJ;F#qQQWtJmbWtzo8e+|A{;z_LlvqB=RE{yK|lSXG7RHfG#oL zOF~DBM50q4rXyXXP?_XQkn0k{9v31t9PXdKU-$I~Gf_~jF2AAS!8&&HjT&hI!C~4+ zuKr;(BcoejX7pxayYv8c2>q(X$=x?7Xtif`b#=k!5%~BSLa%y?t)bd<7HU0LR#tFh z_w$-e&8W%hH-OL)4sE5T;6;(FU*2c*iigovn>5-%fQYnmRvY5*+~67J z`R%B#6uQs%u&yznl_i#yl4>u z5aFG$5nJ?cC;D;suX20&bt++C)iTDA`mwNIoEtRJsa*@)+6t5dupeHzVXR`|o-h#1 zj-vgH^v&Q={)+?tTOObtQ187@zt5+;8?j`!v#zI@Ts_YW8ZsnQRaE$=#XqXV#C%ry zqt>;(y?x&xx2bXCwr|TL5ciu|7c|-p;q-zla{02gc>K#ZB`6>+zw@3ZiaYVU9$O=7 zQ=ZXN>GGKGY8f}WDgxFSfb&abX(DRT)ww@ivB#)k^H89l#)LlrJF%5DO4VtDuiY5< zLZToIjR}cFHyOndq~(<4sJmZ|fnnlv<8Aq}%E{ecbF+gA{Uf1U{{_)AcN|-|)-X${ z%Sz{RXE4J=nzOF1jTa_`l1BxhjWv7Pe$u8uR>0cbqAci8TNqQdkh^y%bPLSIU$wbn zG8dQM86ox~SghCHONs9D2Lt__$V_?b&Z2`VPXXQbcD>Q!qY`b3xjwAEduU;tHR-z9 zI{wImM3u08*Vlddt*oD8JZdlZJ@X!`^mB)ZKWe>vSr9X2MgWv9I#%qklG_yDBttto z`e)A#RSgUbD3r$iP5+uQ=hA||>1dMA$z-xjy=pt6%dlv59q|@aY#?jP%E}H0i)Laz z(N7D{_@QC@DZbl^t#O@P98YB?yHx0llsc3{r$2%{WIu^PXLjPtXnvff#zXmEd8I6^P4j*3akY}Bojcbg%@SI^56d})Q%ocm) zCbv4%MsnBvxRwpjdRiUhh!Vrrzj7ixw!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3vLB{2=o3VaOV544QM6IyR5w(M|Na>MY{ERGu%YuFARJF%&ob=%aR%<0P} zcRl_U)^}TLZ`I0IW!rfcXml+CqAkLEG7o(J%id8j=lM_D%!%cV9d**l`+U_V&)>>Z z5c~av#OFCP=l?mqpzUDC56#n?t_O8rnMF~?lD)jCzT-qEGpM(+OpB!}gfD_MSrelxF{pmMTs zYI&ui>FxH!A4QWt+Mc)GTXSBbI3VtF)x&T6rVddJCRq(z7&5OgWHMgbaTfuaUy}&w30$rX{hK&d;so1}dAI*=XV`-uHOU&918!%+Egm zv}CyQE;c%Y+k;!lWFBH@YGq_%Wo)8tU|?lnu>XcYA&Q3F{FKbJ zO57UGwXQe|)Sv;fp|~vFDk-rzRkyS#lOZiLC)G+{U%w=`KtDGzJu^95*C)%&!ZIW* U`}L9KCO|z5p00i_>zopr0NRXYUjP6A literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_brush.png b/app/src/main/res/drawable-xhdpi/ic_brush.png new file mode 100644 index 0000000000000000000000000000000000000000..01fde72936487d7f971b0b57d031c0a5c971ec0c GIT binary patch literal 1098 zcmeAS@N?(olHy`uVBq!ia0vp^4j|0I1|(Ny7TyC=Ea{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3U*@RKehBed{iJ2br|=^x}Q*?}vF=PD}l( z@N><@43ooi4qww1bl-P3?>zGiwV8|)#09s9X#Je`eC_|sjAc(f{r(kpsGLqz;)!k0 z`!rFBC$z!t$#<6-GiLm_lC^bD9<%PASd?*tT{fhoDbxY#u@Pb})FJmKJqr-($#Fa#C8* zVfmhK47;9gWixP$i)ILZvX#Za)9xd~vXkmk2V8z0VVa>e--BWD(?*tW%r*Dt8;9CW zWbj%k&S2&{gSGevyjzSPbzRc^L$ov`Z#BTWnVGt0aFHL**@-*ZUQX+;bCEB zyIe15%4;6Da^=dwq>UBsF6X`))*RmUmi=qh-{j>SN=17EG;A)Z%BwQS9-qnlpk>D9 zg;RFjemOgVY2iHPnCoj>rm!~{PTF45&8Nc9usTpov2tP9YT0YL(%J{koH;Y2V@}r& zzGj6PAOQ!p$&&6px0eO2S`uv*#=vlNMt1L!IqS_EI%GO`hDC4BnZpp`)w=iBdqA!!jFOycWfAc+W!R$W9nCrHhO3yv7 zxjf0Z!DTWzW<&A z1$94J<9U9nKUCWS%v}tsC9V-ADTyViR>?)FK#IZ0z|d0Hz(m)`JjBq{%E;8p*g)IB zz{xGdc&DX}s_h6mXd@70rg>USwiZwd{)7iDezyzZe+ z?Sc~bdsBIDPC9$*)A2}erLv!2_k^k{2^Cl?sr~;Jexk1;)=pHg?!?1K$K^v#Om|r^ z+21ASVb5{nqP_PotIii*7-y&Kw7*7a5%14A9A7_$3!Xi3Txr&1dv_CUez3K#ellnN VyDQ3loK-9^E)L8F7{( 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xhdpi/ic_search.png b/app/src/main/res/drawable-xhdpi/ic_search.png new file mode 100644 index 0000000000000000000000000000000000000000..f4b5524d8de4cd33c3b5517dd74dbad96dfd5228 GIT binary patch literal 416 zcmV;R0bl-!P)7 z#P9-*klVUAnJ>1H)T>CVz6`gfU(CiA$ExLgn`V{)IB(8ZG9ijio?vb|=8S-ZCm-v9Z zoqj<+(CmqKs7K1Zcz#AY)V~sMm3Q-|U#n!t30qL7S`#NOwtk4;T=t}`^ZB$XFfl{A z)tk53#1zTItj#7SNG7IjHZevrF@ZLqn7|7D$ix^nc!R-Uz``Hs zZ;>SU41bo29z{S1c;(d_;vy)x0mft&a+Mz_uG2;$w#an)0=87of(-E8C6Of&*K&zD z#|x0IcB15vXd`pW;tPA@5VxeWnX5P?nkvMdI>fE~2LW%#65z!Y3h_ni?G)lp!rX&J zeC`qxH;#;I@hz9Pq_T}Z2*kxLyed<8j2|9e9b|1{Y&=v$6ahUCTZy)0E77G0Xlice zu)DnwoHmEhpa=-_7FI_)JtO!YJ# zr!|6rf{E^Qo**D;qJTKTE;REy8Gb$z5U?=$8`(raz}WxH>cfYRKl}pBQNlJ_xKWG% O0000tq8Bj5!45a)3HYcTKBP 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 Pu?E=NI+E^M`zHMhq^F4_ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_account_group.png b/app/src/main/res/drawable-xxhdpi/ic_account_group.png new file mode 100644 index 0000000000000000000000000000000000000000..2080d107314741269dc5383d9ef61a065f7ba66f GIT binary patch literal 2439 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 R76WmB^C=HfGcowezX5PCHI)DW literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_book_open.png b/app/src/main/res/drawable-xxhdpi/ic_book_open.png new file mode 100644 index 0000000000000000000000000000000000000000..fc7ea0d5763b96ac36d8c0744271cfbfa51ddb7a GIT binary patch literal 948 zcmeAS@N?(olHy`uVBq!ia0vp^2_VeD1|%QND7OGoEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY67#JE_7#My5g&JNkFq9fFFuY1&V6d9Oz#v{QXIG#NP=YPV z+ua371Hn({-St3u(Y>l#gm%Y$QK1QGoVDRLe*xCy(OUk5rj~x~`G;ikJ((lr*JoAl=XYc&|T;R~o z-TddyowJME{V$ZeYHwVz(M+4-@5d8616CMs-lTJS``WP8^))qrbhr8`o8EZ+b=KpL zKT6-{~-Jbn7~^JmwromcDj?bzdwm#;KMHTW&x zEbLUVWL{xjQjhECR|65{ySU z6xK#_II8wy1Ra2{o!5vkA31rsM+{tU6a{c`$w)n*dY3E&Sl;qe9Q~3UuXAf zg?B9*g+ONM>@H>~KNP_UH$Jso^vGO;FefCdkZoT&Ptx4i_I6J2-`DjAu04Er`BlWL zm7Vcdh0ji%S-Y}tDWBteF#GDaT-}D<{Abq05hW>!C8<`)MX5lF!N|bSQrEyl*T_7?(A3Jv#LC!2+rYrez+nFk zfkG4wx%nxXX_dG&oNHZi7N|i3WJ7UTx>ZtQajI@^;dfB^si literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_brush.png b/app/src/main/res/drawable-xxhdpi/ic_brush.png new file mode 100644 index 0000000000000000000000000000000000000000..2a5a71a24b92806b58e0417bc75f4b04ce2c5dbd GIT binary patch literal 1576 zcmZ{kc~DbV6vpo(gani&b*T$&*oj&okf<0m2^u7+Dk#uF8bBRL5fBL=s054#8NmSd*-kstKYC}*{mr>|zH{c>nfqmWxI1cV zZO{S$Xge_(o(O}!237;v$ApQt2-J_-yV(O!m9t_o7>(o**VAz~5clZ6MG}Khrl%VK z$z}k+JODl;NAMc}5{Ljy1pz=20`P5|sA=C$gfU(1qE>gsZBqV7y{U{`&|^nZ*v(Qq z$O^mIYv%X6yY50OHPRmi5!d|#r!yr1@RZl)t1Qr;84f+fk-iXk^WuSMs=&HMGfqbu znV|jf^LpB#WP%geC!Y&#>0ml6867C|yCWWtUI0XeZO@qW_Q67xN`<0zSVKKQCaLV! z-ckk;aCw%y{ma7qL;b_= zDTEJ@Nhb#AJ(CA?m{4HX1wd!y-_Lf61_Me6F8HFPnB_ugmvjLmzF#hEM`N9-@KASH z%|wDni5QLE)FO>!2OJ3sQTvsEXEMQo36v(bxH`pP67tH|ZMTJWlxKt*PaUXwZGh5= z30X_uzCgdA_J)AxJAuO!C~ItSO$vP$G)XXI9X-qfd;=OY!apU_MXyjlq4|X=^k2ZS zJl*hb48%%ETdm!fT6_X-kYHBpTvA_vOQ6d}cn>1|@+(y2aQ_6X%PsrWnX( zVZS@uMiieaAi_QINe65$2J|Q3H4Sy3>5rj6_eY3C!|M zGHl;~yF;8UXZl};WuyYybF!mUVJ}CDwa$fa}bKPUUzix)s zb5hJ6`s9dvCvTY9`JsvBcEnd;%A5CU6?Jt5)(*|ggiCqpc~SNgoFvPu&ci%WvAXOA z%XfkB8!sad)YQ~$>=NbH5{#11^Z!_SQc7(`^+nbufmmjsP%l;>nP_B|^Y{voJ?^tV zrSIcPQkJV3*J6Xk=%~Lw?!nr=v9oQ#I}Uv}YCQh4$`zKc;KZ0-!pS&6SsM>G@kz~U zNHG^1+LGvOL2ZN28%!XSos)xF%4_X%9G$}ATl}AHfhrV5l?+Bk5lG{ErybJAB`vF& z3^&9f11l}zkcV>BR-``nI*>>tYYf}X?JY0xMKSd%7qVY#TQ6%|DwW394=uq3w3TDi zpG>-5JRcrTD3Pw(xeAr%T;{s1@RXn+aAqz!79|XwEbiZGP-3@FqM4ovRS!%%GCu0y z4Ann`zS~yV-G;nWTRXdSI3{%uBlxBM0P@}ZMkbW4WK~09cUUa$*^h?huXE*1^;2_A z6^d8=npTOGkE_csdTpLNt=9r)z8MW7&T~$lR2f8W3Lbmw=W?^RvA(kMeWAQ53tSV_ zV#AhCg@sMdmQJh8KcrO2Wipw4mCqssqhx46qGr zF4@k>w$tWckNMki+?9CI7WKV36~_)D?q?eB;1ho&IG#lb<**O{8>00N3nJOVX1ka5 zR*KD53W>OdNTd*nr3V5J{YSu#JrWU?^#1}W_O%QV5WaTc9zRM63Ffja5;zecEFzjk pv9hv?XUAEwgO5gpMp-0=ZfD036MU7Hu6>9GI61g8#Jhvi{seJDvPu8| literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_expand.png b/app/src/main/res/drawable-xxhdpi/ic_expand.png new file mode 100644 index 0000000000000000000000000000000000000000..913492e67a36ccd3f7026032534056be4ff02876 GIT binary patch literal 294 zcmeAS@N?(olHy`uVBq!ia0vp^9w5xY1|&n@ZgvM!Z#`WcLn>~)y%f#WY#`v4XnsNT z%O+OGi8ecSyxY7rJJWi?9+oS8YDZJfu~!D3;b)%>(hCJelE*)WJPs3zy?*!izWOb> z)#vuAN^eq~t$MWb_hi$c4&iTn@|s;hmdx`H6Vo2Gd@eZ`8+Vv@2TGILCu}|m`PuZ2HELJLo%DM}_{A#=Xhjrz% z`&XsYvsHo%w@mao7U;G~(p~Um-W=PBXO7$yIvFG5tFpPUt~15%T#(8m9T%l@PAZRJ dj%8r@|DExf&}j{Yn^kW?f}XB^F6*2UngHSuc76Z= literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_gender_female.png b/app/src/main/res/drawable-xxhdpi/ic_gender_female.png new file mode 100644 index 0000000000000000000000000000000000000000..f2cb86632c6f391a0ddb881df37b2160fa66fbb1 GIT binary patch literal 2250 zcmZ{l2~d+s7RNhW0U=c4r~?R2hzQD+5Tihl`;!DE2q+PW2qb_U;gDNUi3bqI2r42V zAQ}b6<(B&j6mp7?VG)9&oGKt7lR@Ry{hZpZJ*u{=UjOQKzyIs5>gxBB9PBBmEh<|8 z04Q53hsnyo^JGSp5e%ubmNZKM%2VVwJf&eD5#~g(0wsN_v#^6@QJrW2#ApJ* zxdy-*yu_ISAc6qEM-KqV836nol3nk32;Puk9;HAq;jwDn5C=mpgnB9rCiO3~=?*Xh z0D0XOvOE#}dLi4LeO#p08P_}&5Npd#CE%Odes}QEll2s}DJKv$PwMgf{FmQ#(nhQs zOp7kgj8slP33g*Rf7Bk;j=&#stjgOK!DOoBonv=aY}Q^NfG1HIHtY1HAL%h zK>+=%{MEr6lPE#5%_9`xTre9O6N#3sJBIb4?D1?0T8vCKLEM6a?Df-ol0L~#$Y^X$ z>Kqyx`ZgJ!caY95L{fpu(`QuzK8!4MEdw{KlGABTPj_>Akcqm zeof`3oo3ZYP4M?u6aJkZyd3+2fm{hNW+ynI{eEA1j}YCz1UyV&FpX3%eR=uhc>Zr@ z7&4MQCfGE>Y0gig%k81K9xq}Au*m8)G&H0P`bVg5+v29lmjy10N4Z9om6b1x=!Nq9 zH7Em7?!wM6_=*F*^m9;UZGHWkYq`rtJ)=%1?Rl{WA!CRXhzC+dOpLgb#bSMbLNCQWjfZX3%-$R>N3$yqgOqSyRdjUeLfZ2YpNa(%o0I%`LF7@ zI7-EwtO19s$S|d}&E*Uxqwl7t3orLNNJaIGmrT_o#L*XI!LFKLE!!%}y7NBx>`gnO zhg)mWPT+Q=s2USzs&|M`7Hx86!@+3Bihf_ahT$NU5qi z(D24QlyQ~o?2tS7EVALEH75b3tg2f1f(Df=N<&H>b?a(sYJucUe$dpHm__#CSVOdd z)R(rpuu>dzYqhTb;9Nu}QtNF8foGP57RiU=6jnMu)(NNO>x(DWeXCsWrWWOV4Z<=N z%d%&bSPfFX!{`Chf?~pHcPuwUQn&PCc;s^@i?$|4|0oKYzt(e5y+6cge$9W%vUQ^D z7tAuF9n0(vRKq1a_paIxU;_JV*y_+<+5{)E80;*Ng;pkOTEtfB&r6n zRVh}Q{qZ>XqjYw5_7vvg?s@t(;q-dfr;`9!o8>MZyG8YSJhHkQt{uYZSUGk{9@;T1 zBH|10S?OD1tEM18R8kf0R^t{cY0)wzR#k|%l21GGo^BWlUu9u-nSt!qodVRI;3Cly>e&qA z)G4``L-*adMwhv_63+`2Fvimxi?7)9uC`eBpnf^gY@^x|BU6Qp294?6Uiw{B{RLE} zYjO2&b8AEv+nh>7V2r_rHGNu=dWiymYByB8)%L#COUN**lj?j;OwJ3Rirk)g$=P6A zx^|i?LFomtqg9bkc{_P@faIQ=lT%grvOalUyd3w~X`isQwbcNuY!9DBtuB(jeuBPv zYNi?^B}%Pa{cppS{6}{n@Z2R@gb!kEDiPyXM01<9qHmWeLgh01L%SBIvw!j7scG=V zG~Yc?W2+-Gt;jtXu#%k5n_4k_4b4VwDlyvd$DM-U)CRS#0~+LznYnuIr6k> zL`+o*!KbFCF1nZsy@+u)i^ZO3I?9>NBU%ujgYLbO8jloi{?qyV#;heMr`b6sF!#YF z#BE0zs*N&M*_-2a=U-0d{SoBw!#>GvZioM82M+sp>y!P!zF_~bfLm-d|gcfGn`Tr6G27CGWod5rVa&x_Q zSg`lU31N|E$xP2MZ@q|6Kj7oX_9o-;`0&6Ge4yu9KURQV4BgJt+ab_VBP_QL)&SeX L_E3qH$CZBoStOPA`(PlQBi^g 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 Vx8Zerc4Ytn002ovPDHLkV1h$qK#BkW literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_settings.png b/app/src/main/res/drawable-xxhdpi/ic_settings.png new file mode 100644 index 0000000000000000000000000000000000000000..2a50df97d209dc681f6187d11bde766f8d823f29 GIT binary patch literal 914 zcmV;D18w|?P)6EP8jftpDqgT)Gp6dWAlWOVG1sgQs}baHWVagpF|yObal zGT5Oh9SR~kI7sPG+G1PV+jHn0B;@P9bMAdF@7_QBLC6c|q4l>q1t+!J*` zH-e_|Zuy~)z$1#^=?DKI0?H`H91H@^0Qe*LFZdL^(C*fU&lBJyK^H!v^KD}F$ed1P zj@RG`lYsIK62Ah!0LSXCod&-Z{5l8E)WwR)9IhH%Uoiz|6#Tu-LW+0F6L1N9FZ2l? z*F72QNXBlZMH7IIMfd6xxKAgXwCH|q>4MV>ejfoqpTR>q0BwrssKgBi-wt0Q1n4Jt zj1$m-h@Q$^aN-QrZ!3MkHU{{)dD#j04am zb5g&-IUjlCN({EZP#hLB5!8B(5W9hv}NFeH>?$R)>+$5-$&_p5#w{F<`n zFy=y8ld#x*tgD*FHo}h2#FC78Bz@*^h6lnOhbpdYbkVSmIn0$!wFD#Xv4 zhO;hTok70l-zmh$l4Qlyu<$Shg<`^I4m;XL*I1qtd(xa+jaP&`aJw|j4QE+y@WQZJ z%`)V1!8U1aGDQul-7zow$sEFUX^sQXZAcnsc<20L&gGH=&{@DO*En&_X{8DWppPry)ea=iT{U?x>d&}Hmr+nl6ZIoZ%^}F|6Z<*ogBf#V}qln+8vGN_00}(&SUY}v8e)|<; zju;shG65YY0=n^{EP3nS5dc-as7rBVT(7bXfKCX2c5MJuAOPC70ni!&(2@;+rU-y0 oJsTw4KNfIua&mHVatdDm03M;Q^u1#t>Hq)$07*qoM6N<$f+z@~w*UYD literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_tag.png b/app/src/main/res/drawable-xxhdpi/ic_tag.png new file mode 100644 index 0000000000000000000000000000000000000000..104943830c2745a38fc4ee534be2ee112df16c5a GIT binary patch literal 1642 zcmZ{ke>~H99LGP~Z1$bhHtPDpg)T^r?_u-f81a9c|6{q=llKsyk3vbf3NbekN{J{ zMgjo9RKVwkBaDAncpP#+Y1r?Lz$ld+%m$#V+T=|F7MW2w;Q{_YIc)J98LW2m!-E0H zvjYGw0pKrW1wR8oLIYqX9sp(o0Pl$uz1w||2V9~sfQt}0iyV~{0VLw@%t6Tir?w5I z`vQP<5^&iO2Q)7gp_!X_>r17X_XPQ(mRs|WSu$WRxm6XdWSp$^LzDgcv?LpYi^oS= zl7r02UY=GcIPZP?km)zxgxP{!T6vW=knfvw?QALW1@$vBil}aUjI6shm_1etR z@)nqf{b>36g$vrq^HH--2mT04DsU|Q^`=myHr2L?PF#YnzrmaVGiSrq$Sy^+IlM9<;3;&d?T44s} z4!L6=;=+&0Ut`@T1ci)m(aWLj(VRvI__GRu8y+$)SjfpuQ<<&GYVy0ed z-$XBOY;4@GTYOV=Zfxerc{9cXjYiW0R!4dzlZSjb++7J0{}D)~ydx9}?*`fFP;h?x zaeA4mt*yFO&)9m~szjl-> zM5im8j@?aprpxK-{GwMmD^X2YrYr|b1~z6zJD6WL`>@gzvrW;|v~)Fg-^eR7V3Rlg zTzul^S^a$*eYg=gdPm)zd9UnQvTCBJprF9H0Q&S8i0`Fvq0Mq<&=3M`|IV091VKkj zyr(b_1Wt4OA8HR7VL{I>S*7++2^OsIMHX!=ZjZmLLwm^F2&`z_Ho3A>46Hyj{EIa^ z*T6cA1{W!|BwzWrpg#x_e7?qk2pTBXgIW|14d}MEmcGqlpt+~S37G#<9%X=W zXwYYSa)WPkIbf}U(n{Ctu?1oI)jN3xI0X$0q4CcyGrYWZ@P)E=Ey@%NjxIF(RNL%c z!1@@)Vv-{ey))oP$yQHcj+ubknr5K^Mxnt~vY4=$#syXZvVBt+90Z;SM%@bfX{i2F zB~?{bg(Erw;8HAJFTMS`we^Egyy5%Z$ONeSX)=I-od1i+o<#-P$XsP0}7ZXQfeH>SIr6OG2C(dfh8?*jinLq=v& zTFSxyH~81Vml1=*yB~6LQ<;egImuK>b{a@Y`z)F1>gp=a5V>X~q^9jor|wBi&hZeW UCGUKAa4X^g0$vDL=^roq8$v~~<^TWy literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxhdpi/ic_translate.png b/app/src/main/res/drawable-xxhdpi/ic_translate.png new file mode 100644 index 0000000000000000000000000000000000000000..49d105a10bba3b5141a2192f3ffb3ea34b81dbc8 GIT binary patch literal 2643 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 OHNe6I3zZvt-1|3b9sH00 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_account_star.png b/app/src/main/res/drawable-xxxhdpi/ic_account_star.png new file mode 100644 index 0000000000000000000000000000000000000000..2fa56e165a0930806bb8e9dccc1962a0e6839fed GIT binary patch literal 3138 zcmaJ@c{tSD8$UxL*+%3hdt=RH%!urai6O}y5!o4IX=E8RS*P1JZru=-v7{LxM95Mk zN}@~{ifqwUwv6Rs$ol)<-|w&c$M3$+bI#{^&v`y)dCz-3&ztP%U?VClD+~Y-wZ-EI z5Yql`Lc5{9#mu(@f?a`@CoKV}Oxe5XD**X03c&^o$~)zzAxFs{PdEuctQthR0>C;n zM4JL28U?_N4**7)0LX;r)cPtdGa2NuPHcFcB8};zIY`9#f6z!%$8sy2==Q zUfj+ye)?r2O?#-}>1qyUX~dW^pM#O<4$_nT!#bbyZ=h%Lt&U%GmumVuSX;zykAAK+ zHVVCT6j6xTmw@OCph4=QCl=3qzNb zQtj1RZjEnd(632nHt0$Tb4Q<3Ccn+jk~#CAv%SEfLx)D7>6`R*sVweo!rR?~f|S6{ z95)_jyKuh+LUO0We$=n7aoek z7pJ`6HP(-s6ps1HwKy>A5^T=^A}wnU+WUW;IWT-yC9PebG`HN5C~yTz0k>rJ6^mpb znf%5}r5@g#Tf*0H+fgH`(YyBWaUmxAj4Gec#HYB~{NmFk&d%ZIlvy$6vo4n^8t8`*R$|f_kLdJ)pOsha2Lf21$aw#3HS`fgmAl02&Mfd&cL&0AJw|? zzmF6&m4?C{tjw}H^J4fO9>IGg94_4-ty5a-h9uYpyo}YN_4V~3`fLmC5(-ZXJhMA- zqQmf$eranhchz~|uhRgRF*vsJm0wV7)=?S(_BAv&ZYu+Eg;I zwy}94jg=clba!HzKE)#Yn;-hcN&9D!912WN?Q+!K@AQ2*+9^Rd^8;yA09DjOy2}0| zB_;3I;EFju*Rs;Xf$l1@zqk4sl!|0Bb_#pER3$hkNxW^h6G67YrXM7*@M7 z73FEbW*acsT7!h{QF_}rhV6k8@wc^eL!Er8bj4Nn;K9;3&Kn+gXy#imWJ0g6ym9RKWqFlVs<=3h4W?@}jT`5rd zUxjIy+T7!ZBaLn?b&&PlR|I-HbBzNZX4LUJa?(SEFftD_Qa*HbZJ?bKYKEzulS@w^ zmM+ay$U*aG6Mc%~apVH?t~Dtz@P?_W>AbM=`O8Vt1bvM8{f_VP2N`5ps##vr)25~! zQy@4-5mUzO_^-~5G#N*J!+ZX&DYJk77sX$GY3HX~RW>K%g_ZBKiRiFL)f;=v-;bcu z@FKcP;t6)8en5waW=u8)nJA>#z~U8YB{`R*Rbo|g9Znsts#6ZQkU*hOCL0nt5&i=eS&K%Ayb4qWMZ@YLtBxEM^Qzh9N zsiodgHRnH}^KnFzWng4%oOdjC`OyXpEoarNkP5RDjjkxb=~f zZ^NH=-F0b;+7{7y1-sHvb_y3L@!+yJC=fKcudzke3{mLME_9pE;#q5q4x&G51964g z2i5xJ1I5nZ%6gK2gIy~^R^TIoMnoF|akZ-+{hu0XDj|}z@nc@5z1H4>8Z0%~>Bwz$ zmfigur2-G=XP?0Ixh0GNfrb9g&dxl3Y7WC7cffxF)=?!}m{pfn91HU7)xs)5<2KZ? z6;CgUY|L59~-Jme|$WX1P6xPGT%j@NEZ!hIJyztT` z**SqXewE%5oWaF)DY$96Ls6H@;N1W>E_*XT<*d77m8979q{opqg@j^9rsI^~L?TE4 z<$~cOS)+Ht_cX_WPQG^jO#g|eSFyg^Wp!WvN?_8ROC+18rlx9I{TAV4NqfY)KKdhb zzJC2`sr=@$hAPWWQ}NyR$a$)CoSv*aq%8L&{8AZ$iyX^Uy`wkj2uv4dX$X8tBizq{ z?DDA&wsW?4Dskfa!;GYvnVHzi&QXG{iAj8s#GhuQZGZjjGWQyGdpo`^bf`{}W2Q3b zR6<$EC2(7^+3~{>In$6Wy(gbpV!CR_RMgb0RNs3idtFR^1`5NM^moLbnrh0z*eh5I z>Q8ojMaFcm(57HB0uxv@@VMwei>2*K`C(2_^&u(YR@hC}qWYb`z+3xXxr2&|-X#~t z-R(f7>nus7{stp#Z%-^(p)ovF-orU3AUz^B4vt9j;SrK`_2qFoaM7RK8!8U<)E%U>wtQOl z_)w{9`YouJ2QrjB9FV@_FHg6ds0CNejhEtq!Fiaenz% zAMt6@csw3HRfbB|qqj?7aeZ+*sm24*Be{ti6`zz?(W}8q0<@Hn`J>TS=zSwam!tq( z)6?dGEvi3GHKxxk<}ne4oOq9`KPO%iaF1Y4~hOm>12Y>gi}o&>tBn? z{}r5j5IX`4>mh+_`9wBU7pq1cca0+YMgq=!0; zLK&e@MR7dye-J{$h{2?b|DVvO=5QGzX#BkcB_`0w&zBN_jE)Qjq+oJ@k&cc|RA{(P isBd7f|2d>C&i0)DStsX@vla}918k2w;L5Q+zx@aM9k9{> literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_book_open.png b/app/src/main/res/drawable-xxxhdpi/ic_book_open.png new file mode 100644 index 0000000000000000000000000000000000000000..db93452789c1e14c0a7903918c90b1cb88afd224 GIT binary patch literal 1301 zcmeAS@N?(olHy`uVBq!ia0vp^4Is?H1|$#LC7uRSEa{HEjtmSN`?>!lvI6;x#X;^) z4C~IxyaaL-l0AZa85pY6fSOtu7=8hT8eT9klo~KFyh>nTu$sZZAYL$MSD+10f-TA0 z-33Sk!B6Mi^+1ZVz$3C4NPB>>+sSM@1_tJ9o-U3d6}R5rvCUTw6=`@_{7z-f_KqJ> znZgUA0$rk5KDI0EJan{-VWG&iSrse0_1X>3ZYjY7-@(b;w}H$1kh&S6qKx&fa`bUFnnKwAA-A zZqB{Z{lO>H{qe^i@u7cLhiJWh`{oVLx-Y*n*~3;}t*)F`zjRfoV5HaH0++e7BdaSb ze|m1dX*2H`YcT7EjTMl-ZOgA0eaK-^C{+ZdU)*B^3h%K zYI$~ccD}5foZWnrf+U8mQEL^IqF07DU;p;;)vK)kFJ8P@km2xfcU5um=f5`R<(J1X zu5%CFzcOs~_pWW?Yz1Xy+f?U#&Tm#V{=F$9*`%RrZ{7DtS@PSR*Ivw+k|e!|k*ED| z`=Q z+h4B;(X#h3_6uFUpRGZj<$(;Ng*(GJ!G>aj%sW3M16N;_ds6u??^WdJXS|KO`gsohqt6 zy7aXIY0LhFb#{E8o0#{m%Sndex!) z3r=_c+q+*(ma=7S5$Fp(FSa=~4annFIKAoa72#t!sgd8@-@L!bFzf8IjU6&e=9#29 zhyKsme*6ECZK8Et68*>hgZyPSC#LNe%hl#taQ*e$&J#{|CA(J#U%hWV_uS`2Z-w`> zzxe*!e&)^YE8PdOttEKa?ER%C_};20Dl&?TkI(OOTg>nJr0&(#gsN4$man@1{@pu1 z^}g9f^$Vlc*6At5&$#LJ>gd85Gv}s7ev4jxwMtFtXX@kiUrOT_U(}d8Z(dzmnzYiU zWvkxL1m%-&ztjS@u>-wd?FB<#hA4kI3Mv3pOI#yL zQW8s2t&)pUffR$0fuW_Yfr+k>d5EE@m63^+v5B^Uft7*5{u=^?C>nC}Q!>*kacel& zy5cNQg9gZk;<9wBq{QM>-O{2=hP2F_R4aXb{gT`Q{oKU#%;aoclW^DaagTe~DWM4f;3giQ literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_brush.png b/app/src/main/res/drawable-xxxhdpi/ic_brush.png new file mode 100644 index 0000000000000000000000000000000000000000..fa47de51aa6e227400ffac84154c5b20bc875865 GIT binary patch literal 2030 zcmZ`)eK?crAHTOzW9_VkWEXATLM3CQmY10)45=2Ul-NjF5@m>tDT$7=oDN1x62fUZ zIZ5PYl<0U8r`68!lB2GS#8&*sOZ*=F*B|G(uKWHxpYQkcdG71JpZofLGxqqn<26Z| z002D817ag6TprjJ$o$xe+lheMF_&E~0NlHbTi~iA92L!WXM(CO{ZWKaLOj^J07%$? zm{I|lLqft40Ai>BeBb~;&jUa=>RSC?2PCl~*vlP45P4=@A0;E85#`|@jiAT3;r1-t z2~pi;K`y>$ddCNzM{0-auT&``V{;?wTZJW-rPu>vkMe<&wD1Cku^*v{xTVbOu70NO zmVgCXW`U{_4V6{Xk)I=Ssz=LCfL zvnyasrKOUqS@PP#b zYkMJ?cHJkL%wKK6V9;BS4cm2AJFPb`Xw>6xj(28&`qtg0Y;xx1%R%@M2Mfk|Z!9?r zZTlo!g|c7_cxxg=)^>lHJojF;OrFRPB7NZf140~fM~5(Mp}QyZi%^^6#nM=gnXr~) z^Cp&w3{BMylQe<{3YgdDy6s_?eT@+<&82~ zkeC*OHH)|Of`G=-r%XiH>==Th49TB%Ad(td6i8X54h+1#e!xsRQl-FxuS&r!@9!mQBd@OV7Og69d9UYy`BLXIQhfu5~J^18u?gv>47ba>(#& ziO*wr467Du7Q&CazK0#4Ys>WJH?)DWH78Y*ld$5}}Ih4>03*fU4=aAuq)c|)zI}F|qoS`;jr9XLUFB0WRzD8$Md^h& z?zV#T&*S6cT~etOhT&E6(`9vabsu_exi{9-)F|weDt7b?VTd}E8!yPeZywVpZZ{+d z!s6p+RfyqCqp7*LbEReHoDp&^#C|n?T%3}1`=t_t-LY`CfHK!J*5$v(3Mc&J)7&fQ69G8F@!oxb zFB|Tae85IQ^0d6!e_C2x4#^iz-6{c)tm@S6Y0075gSK7dO_d_>DCXp){F*MZ8S<_t zDX6|yFuH{FX=XmZK3v|7f%Kr9qjS}qdd?M|H0xl@r4ef zT6>DZm94F<br2pI$D7xs8AGOOaw6{poGnpm9@T=IxJJ19Ew7Em9r*bNx8O zu6VfSPgn~n&dy${571|7SIpt|nXkss)G8X8Qrrlx+Am_IhruQ|z^HiaLBvvTe}AH1 z;Xhj6w}@{YqkPbLqboS7Wj^VK^e|KY&I9}-Tz)7$VHN)(2J__=qGONIgSpY6mNBP!;3)4zDBa4+ niXRbW6~R5m3kkQh+qyH#?S!|_quh~KhzGEC`ao4o&bj{s2 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_gender_female.png b/app/src/main/res/drawable-xxxhdpi/ic_gender_female.png new file mode 100644 index 0000000000000000000000000000000000000000..6b0c3dcd290174ba9a6f061e8a62c0e4383ef92e GIT binary patch literal 2856 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_gender_male.png b/app/src/main/res/drawable-xxxhdpi/ic_gender_male.png new file mode 100644 index 0000000000000000000000000000000000000000..d7251b2b2fbcd7271fdb96bcf7c987c60999fbcf GIT binary patch literal 3131 zcmZ`*dpJ~EA6_%$5-~0%N|*|1WH7GPxDA8iNF3rw<1&M0B9}Strg9lYayOz;PGyv9 z8RSfeqD*Q?G?U9Im&$EwyRtjA7Oa7DQ* z5j5qND&)SF&oS>Dj+NEhr74+ZfMSnaJz3>UC%1^y-M($Jj=6rBE{M*l6N2u>`wgfg zrO7)n@XE%yYvnm(eqR@>7kCNZH%13Ve+R;{9V&St7`6WgH4-e-3WWyLY$#xd9SqVf z?t3B53a_GCS8mg%#a!OjVTqSHRbIKNzMlv8o(X~7jk*tBTlj$4veYm!H3edFj_$yo zk3AsKwuwpG*0F`fs@5ZG}I~Fw#%h<|$}Azs>q6CO`<&r+J6G znh^5=xr4o(lJ^1fChvlL2n^?7EUxhqP8S!jjW1ogG>%vABuyW|E#aD+;nfk+*3mo5f%4wsl9H;n&m2$A;*E!CF33o_ zuW=_aS%7)|Wn^R|q0w}NT~3&ezmPH(Gb*OzS_aLgA8y|zRpE_d4~I2nl&skR#!#o6 zbvoV1mW~&#t;Y>wa>#F6KKBZR!gZgmua5}NNg%9EuZ~`E+_T)@-@lMHoL_mKK444N zA(BW|%)Y6Ofx$u1moP1HX{<3*#TMftgf;oYFy`jw1xK}0#3u}KJJ&s2s#*cPNDrbW?WNH*LcSI+3q;?<<`3Wxcz%s`vrPKRu>2;M4C%iba z<5|urpR}kjSvk4sG=#t1pNBVYA$SM0x@+S<8HwVE$!ygN^4*SI^Yh&-D-Xn;BhPIt6Y2JgAVRJ+J;}28s5UdZai%B2sxu{X zsolHiYcQ}GUpvA*1e*xbD~u;aM=!x?O^rAYU1d`P6l%^$_Wds6LzTZSuK$L|_ngbk z&Gjjm-=>o*t;u{LugEi-HO&g~kvcmPGiuh;(^L0Kltnge>%=^llW=)-! z$L*m((Kndq8j8mf)Q9SfMAsJ<7KSr2GKwG7_gu|Th8;S2+aWp^iK zxMp8tGU)g{FN3ZPJESpW7IUC@)=)N3gVy%_b@24Pq@*OPxX+JOMs>-@(^QwmBqb#w zRSaV97%Hgi6*{+5cap|PexcPvpZ@BbKl`qG{2eusOeUw&lhc~obPo6w+0PCHkro(KC8Q0Rm4Z5S|*90l-wpe;dqle!2V=-a{eN*FN=6ijwF$5)R zT0_(f`w+O0`lYw1TvB*weM|eXPFwngYcB2x9>QmGrN~yn`arQjLi2s)vqiPgwO4%~ zHS+XdaIaDX8-Ikgb!jTYN^b4rytKm&j*gDj-JvF$K-dKi^c9h&Z>@SZ_$pikC9VGK zyNGuY-l`ALs=Icb44Cf1Ry%%s+bh1UV1Pn?kLYSBCH3Yoth?zzypZ686(x|(EmJY2yxy0>8Wjb5t3WBcv-)+`61T!85& z+#ZvLulLT6RHYh97nGwZ4pFGXi)<{xafsr|J{KG-p@CI%T#bU-!XfP z6S;}ukV{qYKQ;-;`F=Aqt*xzt)f74BQ?RV8tXGLyaOpve)lDevc+*|p_RIGdT+%Ps z4zYC3?HXtc+tL+#-y5aZUQRY)Q*_c0Ik>-~b}L;3sfeDSJ|mI#Vg<4CbLgt~Tcr#-#uPbe6<8o#qTXzlh*G*97hWHLQWjB~0?Eip4)@orvT!~QVtT2*9o@QLJjzde(Ytv#@}Q@Bxo| zry~7@@eju>dc!YkSYfwb$Zp`dd36Kxy{YEghrTC3D!rQbbP~IoFk^7gKKg-&-aI~P z?sS3n(*6K&s;@|YQIRJmOd*ZWgXOnpd(;>D%MXq-OG_0ABY^^HV{`M0!XSnT)8u4- zx16Sbn7RCZl`(0$DK{zoL{YFu$Rq96@LK zXJu!5-U!=Yi2Gapj9@vRJEy~m-(5rx8HgFpzZLrM{k*{cbP$>>aBZt?>+_A9!wWAV z{SOrPwP!b$dnm>r)4!~(o6$dPAegP<6G$4Pu>8qMMbcFD2zpp`3{~7G$qQKgKARcu zgie_T{U-8Y#{H&*#&Epg)#Zb@~>bzEFR=-m2Svb6q~$csK{9H9@nC@b1BsffN{ zvo!qR+atldqf7S3u8VEA6b%0iBTzW%6u1(VK} zsLyAtp=if5aqqnEkl%04Pgm~v8oRcx4vcDNiFDoUDKC4;jo-~WO;A5l*S8XD<8`QI zKmWO!`WWATEiTovpUD4!o$m}#4tKrw7AlDMM%#Nw2N9x!EdwKiApk~bLkoR0M&HQH z!w_SMv9L5W-j7CGqS31v4NLz+po9m7665}zkja<+S#sE8R7sZdskeo?Wyzs0geK_f&c&j literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_tag.png b/app/src/main/res/drawable-xxxhdpi/ic_tag.png new file mode 100644 index 0000000000000000000000000000000000000000..d6804b4574843f6879cde655a93b3f920acf6827 GIT binary patch literal 2306 zcmZ`*dpy%$A3wXGwG?wpsWBre*$|pb#@r^Q)lVZd%4KXCR$0V1DWsoEN$ru4kczG< zB2(#yCPFtETffMnghpazzF?rOO)aMnPc!v7|`KVZz=$HvayO_CD=#AG2ER&^(#F&?C9_JV0Z&?)EE|} z0x$<{JA3`@oKf(c;nh{lSYp*qnDsGm{p6x&YY-!a9{uqN zt+|**kUqsU)oS4`OvFZ@Qj=~!?*Ab4YwW18 z8y71szdCc|tsSJlB;~*AhqSYby@Ro}?;~rL)&@jBmYK&+FlY{Ykw{8Xo0XIXVmJfHI25v$~Wp)e?!7ZW@aY0TZ>-Mf}D9$ zw1?i%EZ$$fp-7W9>7#~Lp_eggUPma{b&hOY_;Au@FWEsS+T)9}g|W4xZ4_g5!k=I; zR&aswRrQg>=s@#8KW@ymQt6W^7u z;SaU8wi5bgFAr>Pu)w8iv*3~@Z(F55VMrZzmA16BtOXtXalbu?#1TQiE`f3*Z!RO< zU#uXhbIB6*>6G-fXi{y$^!KmlH|()^NLnTt7wbh0?x4NPWBe6W<}2+#~fELyWKS zJ+iyLH`;Np>*d>L@fJ0t9wX74k8w!{(uX&kSWthEC7eBd%?qN0IP%DLb_wbb7F)G# zn~Fc0HB=UTT4SfpVE6M`xl<;%{H3POv_l+teuu`p3X~brq^$0!aZY-`$hPp`uG;JP zzPlP48Vlk8i+4tMVqz(sHOlc_(+gEGZQ4sungYSOLY$6H1uD=`1S}ghYx=}uu{JO- z_@1{ZCX&)A7+YwT%jFfNnoK`G!Jop+Q}aa3CE;@ZcO^BbQYMoPMurV}% zC7Hr8OgS9e_%s!cgx~tYR;uy2yaw-@nl>T{PEaZXiiNCCRG%zsmm{DYj zhj}Q+y1<5B*5wQC>;neFCxp|Qnay$SVH0leEpo?DXR@=CUx~N=Bl;$99W4*OM+uwg z!WN{S-C>SoqCOj;;M6reEi@@BSChFn-syk&5k9UZB_-Ft2<8zhf5n`*opBuAyD@n0 z-aZY`oA>241T|7=V;ZlGy3Mq$pNZ|B27P=JmIDBC*!~)PMyk8T|!;r+@yTqSy0jN z1b{C@Rku7*-|+aB^a$&=sf?{^1jFMyt8Z0R6`o-@y_~gQJ&j2p#t_cVqvaxc<&KV` zt;t4o1FnkI=7RQO=0;yy3g3r*Y>SP}k@b;Vs@Cy;)4SKVBj2xJrIkEswHGU<`uh5G zV%j3NUa5K=fi5jA)k;VEvxaU()%1=(8r-#|bO*81<)I8^y0*&%NA$wMR#BHJj_AUW zp_H@OT9`V+)*lF$FO#Ry;~tbmk(Am_pjz=$SFCib+)G@NR{aBk&5G2)e9wLbTWCN_ zNhq;P6yXpcSK4@0-I0|GAdlNre;Fzt1Jcp#Q!AJzpz|^A>KaE@B@mfmlvPx|%+1di z0qJw{O$m#TC<;LUmOxPJU~9`985>K+>E?@e&p?AnknH8tejRQ6Ohr!(v{a+ZVM86X zTt-``uCOJ7oHZB@2G83DM8`0krFfnX5Cvj5SUhhx5IJBt%kVrV5WzXBcwPVyC1E(r z@huR58gTE|I_9V&z&w#>kf`s11V25b^cklYXdw2IGG?5Vm4Mh&>ObS;rUVvqi*MaJ zh;zERr_#Nt`N#2PSkQNtm6%xHE9c**OCw>K5`dbUU8``9^c*`;NH9m_IV2Xlqruq= z`dAst0bb`Nv>ygPOh!Q7xHG7D+mM*BA@j(Z-V5a)b2S~-0iIXNvH72c+!}uYq4$KE zx%j|PXvc(OrSFXj?{`~0or^Z+{*gG4Of#LT|038WR&*vW3Wc)-^+LldyUx>%NPz=a zvmeTGb`m^Uyker literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable-xxxhdpi/ic_translate.png b/app/src/main/res/drawable-xxxhdpi/ic_translate.png new file mode 100644 index 0000000000000000000000000000000000000000..078e846a0cddf8b9d82f21fe30fc5538b4d28827 GIT binary patch literal 3596 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 W*v_|yl%Rrez + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/ic_launcher_foreground.xml b/app/src/main/res/drawable/ic_launcher_foreground.xml new file mode 100644 index 00000000..5b8f761d --- /dev/null +++ b/app/src/main/res/drawable/ic_launcher_foreground.xml @@ -0,0 +1,17 @@ + + + + + + diff --git a/app/src/main/res/drawable/img_thumbnail.jpg b/app/src/main/res/drawable/img_thumbnail.jpg new file mode 100644 index 0000000000000000000000000000000000000000..c6959911147c3ad7d34aa8ab3c3ec15640ddca5f GIT binary patch literal 69921 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/layout/activity_gallery.xml b/app/src/main/res/layout/activity_gallery.xml new file mode 100644 index 00000000..34130f3e --- /dev/null +++ b/app/src/main/res/layout/activity_gallery.xml @@ -0,0 +1,30 @@ + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml new file mode 100644 index 00000000..77677f3d --- /dev/null +++ b/app/src/main/res/layout/activity_main.xml @@ -0,0 +1,83 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_gallery.xml b/app/src/main/res/layout/item_gallery.xml new file mode 100644 index 00000000..2e6f7755 --- /dev/null +++ b/app/src/main/res/layout/item_gallery.xml @@ -0,0 +1,9 @@ + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_galleryblock.xml b/app/src/main/res/layout/item_galleryblock.xml new file mode 100644 index 00000000..ce1571dd --- /dev/null +++ b/app/src/main/res/layout/item_galleryblock.xml @@ -0,0 +1,98 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/item_progressbar.xml b/app/src/main/res/layout/item_progressbar.xml new file mode 100644 index 00000000..0488c59c --- /dev/null +++ b/app/src/main/res/layout/item_progressbar.xml @@ -0,0 +1,10 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/settings_activity.xml b/app/src/main/res/layout/settings_activity.xml new file mode 100644 index 00000000..cd820e81 --- /dev/null +++ b/app/src/main/res/layout/settings_activity.xml @@ -0,0 +1,9 @@ + + + \ No newline at end of file diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml new file mode 100644 index 00000000..a204ac61 --- /dev/null +++ b/app/src/main/res/menu/main.xml @@ -0,0 +1,17 @@ + +

+ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml new file mode 100644 index 00000000..7353dbd1 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml new file mode 100644 index 00000000..7353dbd1 --- /dev/null +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.png b/app/src/main/res/mipmap-hdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..c49df0d17d3f53ea4665de76ba3874f993f42961 GIT binary patch literal 1168 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 N002ovPDHLkV1kFzne+ev literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.png b/app/src/main/res/mipmap-mdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..8c5a0b9de238d5c10318baf046e15ae407bf7b70 GIT binary patch literal 1782 zcmV6z;Zcu`O2nfEAU7AE8BF+L%_OF@~D>qEa*=sWCj5K4=VTqX{83rme;hj0p)3 z+C~vbq!5IV*k%o+0T&1*vKpZ25=vSWqzFs-EwIb(-SK?anPu4CyZ0{amgOcVT<)DY z=Q}gsoO5RGZrirOi!o*)*+F8(UlZ*EZP9nzW?f`_J4u|*y9AOXl2k6ZPta)_2VI*A zoc_-wd6(pZ-|zoTQIsK)3A&$w;2zKL4sCeb%m?lWraowt3kXy*$pQ%@kfw$AX@(Ax zJz6#*3EU$1&F|kQ5Q9OW{XU;hF(YUjO~8GUao;*XYYNw;aBAWH^oE^~JCee0#i;X9^G6DN5Cy&B|CN=M z3+r}5js~QxhJzRUWzm$?$xxWbU1s?mi!9f! zEqI4EXp25ZPLO@Y>-DmknVC;yY=&{3_;*Y!*if{Y_b4iu!k#7eR=Ym%U_o2-L0{+y zMJEg*QOP$pHugfuJR$R*yzZ73tfulw8o_UzZuVvvz=H*Sp<^<{YzPdqv$MYwwC%xI z@1qWl{(BO2G^5SXoR@v%SXwvmV1X{^)Qe7_65(Pr3x%3g5+2dt-8A}xQf$^7c^Etq zA@GnB+zGvz02T}?&B9Ha&9?WxSr8uGyLYcZ8huU9W6E{*p1zHR2_U+rJ z*35z&n%r)8b13d#8C}^B=gq7M*a)>2CMG7XN^8LqNDz~glNr=#L4+`^P>IM9E$~8M zLnp*4gcW&Vp|i6yJCNK&SR#I%;`H%rB`JhFv!U|!t9RM)i*4-1vp=eWdpt86Vqwdt zO(Q>OeZ8Q!6d zksjEBO|85@!iI;3tB{@L^1`yXxY(iR07`&R8CD1YW*mEoB_}6q3f`fOksjEBO`ST4 zjgOCa5$4rU+Sb;Vu)MrHr02jNcfF=)gHhH4F9dDO&ZtAvM=C3Z*T9D zlqmkybHGN$n2|y798@uK0Bz9LNFQwKIWRXjH&IzxnG$fo;c%o=0-M%z;ODx zM0Iub5y}N~v0BVw^ij+a)#pn~OP}WnI8H976R09>jrDSRaB$F0SRYxl6%gy7y}kWI za7>Fvo4KLEhKw-!soY^rO--Or+?s8r*q$9ddNi4)=w_^LDJl949X@rJp65b9S&;^~Q;(R1#gB#gJvY+JO$&)8vqjLOnDhBI_ z2HmJxXxleV31|v}`_a+SA);S5+Mq4^P~Ssb$1dnRckbM#{AL2q?BzhP@UoJUlAg`U z$$2?1FYi?d?(q!oc$@vakM)87*h6bZ5GiilxUrM36EQpZ{lmjt_V8y`&TlLFM1tr4 Y0UH@<%hkKwm;e9(07*qoM6N<$f?5?>t^fc4 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.png b/app/src/main/res/mipmap-xhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..23570cef170033218a4e076eb7d15d790463ca06 GIT binary patch literal 1662 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 Z{|7z9z?av@HC+Gz002ovPDHLkV1gscA~pa3 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.png b/app/src/main/res/mipmap-xxhdpi/ic_launcher.png new file mode 100644 index 0000000000000000000000000000000000000000..a930e8f73a0aab4e81b110cebf8b44b6fbde5006 GIT binary patch literal 2762 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.png new file mode 100644 index 0000000000000000000000000000000000000000..df94340bb47335c84de39a7f87153cc2d56a5249 GIT binary patch literal 10484 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 Gg!~WQ>rlY} literal 0 HcmV?d00001 diff --git a/app/src/main/res/values-v23/styles.xml b/app/src/main/res/values-v23/styles.xml new file mode 100644 index 00000000..9c3f02d2 --- /dev/null +++ b/app/src/main/res/values-v23/styles.xml @@ -0,0 +1,13 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/values/arrays.xml b/app/src/main/res/values/arrays.xml new file mode 100644 index 00000000..99daa28e --- /dev/null +++ b/app/src/main/res/values/arrays.xml @@ -0,0 +1,60 @@ + + + + + 10 + 25 + 50 + + + + Reply + Reply to all + + + + reply + reply_all + + + + indonesian|Bahasa Indonesia + catalan|català + cebuano|Cebuano + czech|Čeština + danish|Dansk + german|Deutsch + estonian|eesti + english|English + spanish|Español + esperanto|Esperanto + french|Français + italian|Italiano + latin|Latina + hungarian|magyar + dutch|Nederlands + norwegian|norsk + polish|polski + portuguese|Português + romanian|română + albanian|shqip + slovak|Slovenčina + finnish|Suomi + swedish|Svenska + tagalog|Tagalog + vietnamese|tiếng việt + turkish|Türkçe + greek|Ελληνικά + mongolian|Монгол + russian|Русский + ukrainian|Українська + hebrew|עברית + arabic|العربية + persian|فارسی + thai|ไทย + korean|한국어 + chinese|中文 + japanese|日本語 + + + \ No newline at end of file diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml new file mode 100644 index 00000000..fcd0a08d --- /dev/null +++ b/app/src/main/res/values/colors.xml @@ -0,0 +1,7 @@ + + + #4fc3f7 + #0093c4 + #D81B60 + #FFFFFF + diff --git a/app/src/main/res/values/dimen.xml b/app/src/main/res/values/dimen.xml new file mode 100644 index 00000000..ccfb842f --- /dev/null +++ b/app/src/main/res/values/dimen.xml @@ -0,0 +1,5 @@ + + + 64dp + 80dp + \ No newline at end of file diff --git a/app/src/main/res/values/ic_launcher_background.xml b/app/src/main/res/values/ic_launcher_background.xml new file mode 100644 index 00000000..c5d5899f --- /dev/null +++ b/app/src/main/res/values/ic_launcher_background.xml @@ -0,0 +1,4 @@ + + + #FFFFFF + \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml new file mode 100644 index 00000000..f8f2a91e --- /dev/null +++ b/app/src/main/res/values/strings.xml @@ -0,0 +1,32 @@ + + Pupil + + Settings + Search + No result + + Search galleries + + Thumbnail + + Series: %1$s + Type: %1$s + Language: %1$s + + Content ImageView //No need to translate + Fullscreen + + + Settings + + Search Settings + Galleries per page + + Default query + + Delete Cache + Currently using %1$d%2$s of cache + Warning + Deleting cache can affect image loading speed. Do you want to continue? + + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml new file mode 100644 index 00000000..448d30a8 --- /dev/null +++ b/app/src/main/res/values/styles.xml @@ -0,0 +1,18 @@ + + + + + + + + diff --git a/app/src/main/res/xml/root_preferences.xml b/app/src/main/res/xml/root_preferences.xml new file mode 100644 index 00000000..86a4e5d2 --- /dev/null +++ b/app/src/main/res/xml/root_preferences.xml @@ -0,0 +1,33 @@ + + + + + + + + + + + + + + + + + + diff --git a/app/src/test/java/xyz/quaver/pupil/ExampleUnitTest.kt b/app/src/test/java/xyz/quaver/pupil/ExampleUnitTest.kt new file mode 100644 index 00000000..d5e91efa --- /dev/null +++ b/app/src/test/java/xyz/quaver/pupil/ExampleUnitTest.kt @@ -0,0 +1,11 @@ +package xyz.quaver.pupil + +/** + * Example local unit test, which will execute on the development machine (host). + * + * See [testing documentation](http://d.android.com/tools/testing). + */ + +class ExampleUnitTest { + +} diff --git a/build.gradle b/build.gradle new file mode 100644 index 00000000..c136f825 --- /dev/null +++ b/build.gradle @@ -0,0 +1,28 @@ +// Top-level build file where you can add configuration options common to all sub-projects/modules. + +buildscript { + ext.kotlin_version = '1.3.31' + repositories { + google() + jcenter() + + } + dependencies { + classpath 'com.android.tools.build:gradle:3.4.0' + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath "org.jetbrains.kotlin:kotlin-android-extensions:$kotlin_version" + // 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 00000000..65efb57f --- /dev/null +++ b/gradle.properties @@ -0,0 +1,18 @@ +# 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 +# Kotlin code style for this project: "official" or "obsolete": +kotlin.code.style=official + +android.useAndroidX=true +android.enableJetifier=true \ No newline at end of file diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar new file mode 100644 index 0000000000000000000000000000000000000000..f6b961fd5a86aa5fbfe90f707c3138408be7c718 GIT binary patch literal 54329 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

<5G2M1WZP5 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 F{|7XC?P&l2 literal 0 HcmV?d00001 diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties new file mode 100644 index 00000000..2518566d --- /dev/null +++ b/gradle/wrapper/gradle-wrapper.properties @@ -0,0 +1,6 @@ +#Thu Apr 25 10:57:40 KST 2019 +distributionBase=GRADLE_USER_HOME +distributionPath=wrapper/dists +zipStoreBase=GRADLE_USER_HOME +zipStorePath=wrapper/dists +distributionUrl=https\://services.gradle.org/distributions/gradle-5.1.1-all.zip diff --git a/gradlew b/gradlew new file mode 100644 index 00000000..cccdd3d5 --- /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 00000000..f9553162 --- /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/libpupil/.gitignore b/libpupil/.gitignore new file mode 100644 index 00000000..796b96d1 --- /dev/null +++ b/libpupil/.gitignore @@ -0,0 +1 @@ +/build diff --git a/libpupil/build.gradle b/libpupil/build.gradle new file mode 100644 index 00000000..17a6560d --- /dev/null +++ b/libpupil/build.gradle @@ -0,0 +1,40 @@ +apply plugin: 'java-library' +apply plugin: 'kotlin' +apply plugin: 'kotlinx-serialization' + +dependencies { + implementation fileTree(dir: 'libs', include: ['*.jar']) + implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version" + implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.2.1' + implementation "org.jetbrains.kotlinx:kotlinx-serialization-runtime:0.11.0" + implementation 'org.jsoup:jsoup:1.11.3' + testImplementation 'junit:junit:4.12' +} + +sourceCompatibility = "7" +targetCompatibility = "7" +buildscript { + ext.kotlin_version = '1.3.31' + repositories { + mavenCentral() + } + dependencies { + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" + classpath "org.jetbrains.kotlin:kotlin-serialization:$kotlin_version" + } +} +repositories { + mavenCentral() +} +compileKotlin { + kotlinOptions { + jvmTarget = "1.8" + freeCompilerArgs += '-Xuse-experimental=kotlin.Experimental' + } +} +compileTestKotlin { + kotlinOptions { + jvmTarget = "1.8" + } +} diff --git a/libpupil/src/main/java/xyz/quaver/hitomi/common.kt b/libpupil/src/main/java/xyz/quaver/hitomi/common.kt new file mode 100644 index 00000000..23b705da --- /dev/null +++ b/libpupil/src/main/java/xyz/quaver/hitomi/common.kt @@ -0,0 +1,62 @@ +package xyz.quaver.hitomi + +const val protocol = "https:" + +fun String.toTag() : String { + if (this.indexOf(':') > -1) { + val split = this.split(':') + + val field = split[0] + val term = split[1] + + when(field) { + "male" -> return "$term ♂" + "female" -> return "$term ♀" + } + } + + return this +} + +//common.js +var adapose = false +const val numberOfFrontends = 2 +const val domain = "ltn.hitomi.la" +const val galleryblockdir = "galleryblock" +const val nozomiextension = ".nozomi" + +fun subdomainFromGalleryID(g: Int) : String { + if (adapose) + return "0" + + val o = g % numberOfFrontends + + return (97+o).toChar().toString() +} + +fun subdomainFromURL(url: String, base: String? = null) : String { + var retval = "a" + + if (base != null) + retval = base + + val r = Regex("""/\d*(\d)/""") + val m = r.find(url) + + m ?: return retval + + var g = m.groups[1]!!.value.toIntOrNull() + + g ?: return retval + + if (g == 1) + g = 0 + + retval = subdomainFromGalleryID(g) + retval + + return retval +} + +fun urlFromURL(url: String, base: String? = null) : String { + return url.replace(Regex("//..?\\.hitomi\\.la/"), "//${subdomainFromURL(url, base)}.hitomi.la/") +} \ No newline at end of file diff --git a/libpupil/src/main/java/xyz/quaver/hitomi/download.kt b/libpupil/src/main/java/xyz/quaver/hitomi/download.kt new file mode 100644 index 00000000..df73e902 --- /dev/null +++ b/libpupil/src/main/java/xyz/quaver/hitomi/download.kt @@ -0,0 +1,3 @@ +package xyz.quaver.hitomi + +//download.js \ No newline at end of file diff --git a/libpupil/src/main/java/xyz/quaver/hitomi/galleries.kt b/libpupil/src/main/java/xyz/quaver/hitomi/galleries.kt new file mode 100644 index 00000000..ffbe2a98 --- /dev/null +++ b/libpupil/src/main/java/xyz/quaver/hitomi/galleries.kt @@ -0,0 +1,61 @@ +package xyz.quaver.hitomi + +import org.jsoup.Jsoup +import java.net.URL + +data class Gallery( + val related: List, + val langList: List>, + val cover: URL, + val title: String, + val artists: List, + val groups: List, + val type: String, + val language: String, + val series: List, + val characters: List, + val tags: List, + val thumbnails: List +) +fun getGallery(galleryID: Int) : Gallery { + val url = "https://hitomi.la/galleries/$galleryID.html" + + val doc = Jsoup.connect(url).get() + + val related = Regex("\\d+") + .findAll(doc.select("script").first().html()) + .map { + it.value.toInt() + }.toList() + + val langList = doc.select("#lang-list a").map { + Pair(it.text(), it.attr("href").replace(".html", "")) + } + + val cover = URL(protocol + doc.selectFirst(".cover img").attr("src")) + val title = doc.selectFirst(".gallery h1 a").text() + val artists = doc.select(".gallery h2 a").map { it.text() } + val groups = doc.select(".gallery-info a[href~=^/group/]").map { it.text() } + val type = doc.selectFirst(".gallery-info a[href~=^/type/]").text() + + val language = { + val href = doc.select(".gallery-info a[href~=^/index-.+-1.html]").attr("href") + href.slice(7 until href.indexOf("-1")) + }.invoke() + + val series = doc.select(".gallery-info a[href~=^/series/]").map { it.text() } + val characters = doc.select(".gallery-info a[href~=^/character/]").map { it.text() } + + val tags = doc.select(".gallery-info a[href~=^/tag/]").map { + val href = it.attr("href") + href.slice(5 until href.indexOf('-')) + } + + val thumbnails = Regex("'(//tn.hitomi.la/smalltn/\\d+/\\d+.+)',") + .findAll(doc.select("script").last().html()) + .map { + URL(protocol + it.groups[1]!!.value) + }.toList() + + return Gallery(related, langList, cover, title, artists, groups, type, language, series, characters, tags, thumbnails) +} \ No newline at end of file diff --git a/libpupil/src/main/java/xyz/quaver/hitomi/galleryblock.kt b/libpupil/src/main/java/xyz/quaver/hitomi/galleryblock.kt new file mode 100644 index 00000000..39dfb263 --- /dev/null +++ b/libpupil/src/main/java/xyz/quaver/hitomi/galleryblock.kt @@ -0,0 +1,79 @@ +package xyz.quaver.hitomi + +import org.jsoup.Jsoup +import java.net.URL +import java.net.URLDecoder +import java.nio.ByteBuffer +import java.nio.ByteOrder +import java.util.* +import javax.net.ssl.HttpsURLConnection + +//galleryblock.js +fun fetchNozomi(area: String? = null, tag: String = "index", language: String = "all", start: Int = -1, count: Int = -1) : List { + val url = + when(area) { + null -> "$protocol//$domain/$tag-$language$nozomiextension" + else -> "$protocol//$domain/$area/$tag-$language$nozomiextension" + } + + try { + with(URL(url).openConnection() as HttpsURLConnection) { + requestMethod = "GET" + + if (start != -1 && count != -1) { + val startByte = start*4 + val endByte = (start+count)*4-1 + + setRequestProperty("Range", "bytes=$startByte-$endByte") + } + + val nozomi = ArrayList() + + val arrayBuffer = ByteBuffer + .wrap(inputStream.readBytes()) + .order(ByteOrder.BIG_ENDIAN) + + while (arrayBuffer.hasRemaining()) + nozomi.add(arrayBuffer.int) + + return nozomi + } + } catch (e: Exception) { + return listOf() + } +} + +data class GalleryBlock( + val id: Int, + val thumbnails: List, + val title: String, + val artists: List, + val series: List, + val type: String, + val language: String, + val relatedTags: List +) +fun getGalleryBlock(galleryID: Int) : GalleryBlock { + val url = "$protocol//$domain/$galleryblockdir/$galleryID$extension" + + val doc = Jsoup.connect(url).get() + + val thumbnails = doc.select("img").map { URL(protocol + it.attr("data-src")) } + + val title = doc.selectFirst("h1.lillie > a").text() + val artists = doc.select("div.artist-list a").map{ it.text() } + val series = doc.select("a[href~=^/series/]").map { it.text() } + val type = doc.selectFirst("a[href~=^/type/]").text() + + val language = { + val href = doc.select("a[href~=^/index-.+-1.html]").attr("href") + href.slice(7 until href.indexOf("-1")) + }.invoke() + + val relatedTags = doc.select(".relatedtags a").map { + val href = URLDecoder.decode(it.attr("href"), "UTF-8") + href.slice(5 until href.indexOf('-')) + } + + return GalleryBlock(galleryID, thumbnails, title, artists, series, type, language, relatedTags) +} \ No newline at end of file diff --git a/libpupil/src/main/java/xyz/quaver/hitomi/readers.kt b/libpupil/src/main/java/xyz/quaver/hitomi/readers.kt new file mode 100644 index 00000000..23d43b58 --- /dev/null +++ b/libpupil/src/main/java/xyz/quaver/hitomi/readers.kt @@ -0,0 +1,50 @@ +package xyz.quaver.hitomi + +import kotlinx.serialization.ImplicitReflectionSerializer +import kotlinx.serialization.Serializable +import kotlinx.serialization.json.Json +import kotlinx.serialization.parseList +import org.jsoup.Jsoup +import java.net.URL + +fun getReferer(galleryID: Int) = "https://hitomi.la/reader/$galleryID.html" + +@Serializable +data class GalleryInfo( + val width: Int, + val haswebp: Int, + val name: String, + val height: Int +) +data class Reader( + val title: String, + val images: List> +) +//Set header `Referer` to reader url to avoid 403 error +@UseExperimental(ImplicitReflectionSerializer::class) +fun getReader(galleryID: Int) : Reader { + val readerUrl = "https://hitomi.la/reader/$galleryID.html" + val galleryInfoUrl = "https://ltn.hitomi.la/galleries/$galleryID.js" + + val doc = Jsoup.connect(readerUrl).get() + + val title = doc.selectFirst("title").text() + + val images = doc.select(".img-url").map { + URL(protocol + urlFromURL(it.text())) + } + + val galleryInfo = ArrayList() + + galleryInfo.addAll(Json.parseList( + Regex("""\[.+\]""").find( + URL(galleryInfoUrl).readText() + )?.value ?: "[]" + ) + ) + + if (images.size > galleryInfo.size) + galleryInfo.addAll(arrayOfNulls(images.size - galleryInfo.size)) + + return Reader(title, images zip galleryInfo) +} \ No newline at end of file diff --git a/libpupil/src/main/java/xyz/quaver/hitomi/results.kt b/libpupil/src/main/java/xyz/quaver/hitomi/results.kt new file mode 100644 index 00000000..44895bbe --- /dev/null +++ b/libpupil/src/main/java/xyz/quaver/hitomi/results.kt @@ -0,0 +1,73 @@ +package xyz.quaver.hitomi + +import kotlinx.coroutines.asCoroutineDispatcher +import kotlinx.coroutines.launch +import kotlinx.coroutines.runBlocking +import java.util.* +import java.util.concurrent.Executors + +val searchDispatcher = Executors.newFixedThreadPool(4).asCoroutineDispatcher() +fun doSearch(query: String) : List { + val terms = query + .trim() + .replace(Regex("""^\?"""), "") + .replace('_', ' ') + .toLowerCase() + .split(Regex("\\s+")) + + val results = ArrayList() + val positiveTerms = LinkedList() + val negativeTerms = LinkedList() + + for (term in terms) { + if (term.matches(Regex("^-.+"))) + negativeTerms.push(term.replace(Regex("^-"), "")) + else + positiveTerms.push(term) + } + + //first results + results.addAll( + if (positiveTerms.isEmpty()) + getGalleryIDsFromNozomi(null, "index", "all") + else + getGalleryIDsForQuery(positiveTerms.poll()) + ) + + runBlocking { + @Synchronized fun filterPositive(newResults: List) { + results.filter { newResults.binarySearch(it) >= 0 }.let { + results.clear() + results.addAll(it) + } + } + + @Synchronized fun filterNegative(newResults: List) { + results.filterNot { newResults.binarySearch(it) >= 0 }.let { + results.clear() + results.addAll(it) + } + } + + //positive results + positiveTerms.map { + launch(searchDispatcher) { + filterPositive(getGalleryIDsForQuery(it).reversed()) + } + }.forEach { + it.join() + } + + //negative results + negativeTerms.map { + launch(searchDispatcher) { + filterNegative(getGalleryIDsForQuery(it).reversed()) + } + }.forEach { + it.join() + } + } + + return results + +} \ No newline at end of file diff --git a/libpupil/src/main/java/xyz/quaver/hitomi/search.kt b/libpupil/src/main/java/xyz/quaver/hitomi/search.kt new file mode 100644 index 00000000..e771ec3d --- /dev/null +++ b/libpupil/src/main/java/xyz/quaver/hitomi/search.kt @@ -0,0 +1,317 @@ +package xyz.quaver.hitomi + +import java.net.URL +import java.nio.ByteBuffer +import java.nio.ByteOrder +import java.security.MessageDigest +import javax.net.ssl.HttpsURLConnection + +//searchlib.js +const val separator = "-" +const val extension = ".html" +const val index_dir = "tagindex" +const val galleries_index_dir = "galleriesindex" +const val max_node_size = 464 +const val B = 16 +const val compressed_nozomi_prefix = "n" + +val tag_index_version = getIndexVersion("tagindex") +val galleries_index_version = getIndexVersion("galleriesindex") + +fun sha256(data: ByteArray) : ByteArray { + return MessageDigest.getInstance("SHA-256").digest(data) +} + +@UseExperimental(ExperimentalUnsignedTypes::class) +fun hashTerm(term: String) : UByteArray { + return sha256(term.toByteArray()).toUByteArray().sliceArray(0 until 4) +} + +fun sanitize(input: String) : String { + return input.replace(Regex("[/#]"), "") +} + +fun getIndexVersion(name: String) : String { + return URL("$protocol//$domain/$name/version?_=${System.currentTimeMillis()}") + .readText() +} + +//search.js +fun getGalleryIDsForQuery(query: String) : List { + query.replace("_", " ").let { + if (it.indexOf(':') > -1) { + val sides = it.split(":") + val ns = sides[0] + var tag = sides[1] + + var area : String? = ns + var language = "all" + when (ns) { + "female", "male" -> { + area = "tag" + tag = it + } + "language" -> { + area = null + language = tag + tag = "index" + } + } + + return getGalleryIDsFromNozomi(area, tag, language) + } + + val key = hashTerm(it) + val field = "galleries" + + val node = getNodeAtAddress(field, 0) ?: return listOf() + + val data = bSearch(field, key, node) + + if (data != null) + return getGalleryIDsFromData(data) + + return arrayListOf() + } +} + +fun getSuggestionsForQuery(query: String) : List { + query.replace('_', ' ').let { + var field = "global" + var term = it + + if (term.indexOf(':') > -1) { + val sides = it.split(':') + field = sides[0] + term = sides[1] + } + + val key = hashTerm(term) + val node = getNodeAtAddress(field, 0) ?: return listOf() + val data = bSearch(field, key, node) + + if (data != null) + return getSuggestionsFromData(field, data) + + return listOf() + } +} + +data class Suggestion(val s: String, val t: Int, val u: String, val n: String) +fun getSuggestionsFromData(field: String, data: Pair) : List { + val url = "$protocol//$domain/$index_dir/$field.$tag_index_version.data" + val (offset, length) = data + if (length > 10000 || length <= 0) + throw Exception("length $length is too long") + + val inbuf = getURLAtRange(url, offset.until(offset+length)) ?: return listOf() + + val suggestions = ArrayList() + + val buffer = ByteBuffer + .wrap(inbuf) + .order(ByteOrder.BIG_ENDIAN) + val numberOfSuggestions = buffer.int + + if (numberOfSuggestions > 100 || numberOfSuggestions <= 0) + throw Exception("number of suggestions $numberOfSuggestions is too long") + + for (i in 0.until(numberOfSuggestions)) { + var top = buffer.int + + val ns = inbuf.sliceArray(buffer.position().until(buffer.position()+top)).toString(charset("UTF-8")) + buffer.position(buffer.position()+top) + + top = buffer.int + + val tag = inbuf.sliceArray(buffer.position().until(buffer.position()+top)).toString(charset("UTF-8")) + buffer.position(buffer.position()+top) + + val count = buffer.int + + val tagname = sanitize(tag) + val u = + when(ns) { + "female", "male" -> "/tag/$ns:$tagname${separator}1$extension" + "language" -> "/index-$tagname${separator}1$extension" + else -> "/$ns/$tagname${separator}all${separator}1$extension" + } + + suggestions.add(Suggestion(tag, count, u, ns)) + } + + return suggestions +} + +fun getGalleryIDsFromNozomi(area: String?, tag: String, language: String) : List { + val nozomiAddress = + when(area) { + null -> "$protocol//$domain/$compressed_nozomi_prefix/$tag-$language$nozomiextension" + else -> "$protocol//$domain/$compressed_nozomi_prefix/$area/$tag-$language$nozomiextension" + } + + try { + with (URL(nozomiAddress).openConnection() as HttpsURLConnection) { + requestMethod = "GET" + + val nozomi = ArrayList() + + val arrayBuffer = ByteBuffer + .wrap(inputStream.readBytes()) + .order(ByteOrder.BIG_ENDIAN) + + while (arrayBuffer.hasRemaining()) + nozomi.add(arrayBuffer.int) + + return nozomi + } + } catch (e: Exception) { + return listOf() + } +} + +fun getGalleryIDsFromData(data: Pair) : List { + val url = "$protocol//$domain/$galleries_index_dir/galleries.$galleries_index_version.data" + val (offset, length) = data + if (length > 100000000 || length <= 0) + throw Exception("length $length is too long") + + val inbuf = getURLAtRange(url, offset.until(offset+length)) ?: return listOf() + + val galleryIDs = ArrayList() + + val buffer = ByteBuffer + .wrap(inbuf) + .order(ByteOrder.BIG_ENDIAN) + + val numberOfGalleryIDs = buffer.int + + val expectedLength = numberOfGalleryIDs*4+4 + + if (numberOfGalleryIDs > 10000000 || numberOfGalleryIDs <= 0) + throw Exception("number_of_galleryids $numberOfGalleryIDs is too long") + else if (inbuf.size != expectedLength) + throw Exception("inbuf.byteLength ${inbuf.size} != expected_length $expectedLength") + + for (i in 0.until(numberOfGalleryIDs)) + galleryIDs.add(buffer.int) + + return galleryIDs +} + +fun getNodeAtAddress(field: String, address: Long) : Node? { + val url = + when(field) { + "galleries" -> "$protocol//$domain/$galleries_index_dir/galleries.$galleries_index_version.index" + else -> "$protocol//$domain/$index_dir/$field.$tag_index_version.index" + } + + val nodedata = getURLAtRange(url, address.until(address+max_node_size)) ?: return null + + return decodeNode(nodedata) +} + +fun getURLAtRange(url: String, range: LongRange) : ByteArray? { + try { + with (URL(url).openConnection() as HttpsURLConnection) { + requestMethod = "GET" + + setRequestProperty("Range", "bytes=${range.first}-${range.last}") + + return inputStream.readBytes() + } + } catch (e: Exception) { + return null + } +} + +@UseExperimental(ExperimentalUnsignedTypes::class) +data class Node(val keys: List, val datas: List>, val subNodeAddresses: List) +@UseExperimental(ExperimentalUnsignedTypes::class) +fun decodeNode(data: ByteArray) : Node { + val buffer = ByteBuffer + .wrap(data) + .order(ByteOrder.BIG_ENDIAN) + + val uData = data.toUByteArray() + + val numberOfKeys = buffer.int + val keys = ArrayList() + + for (i in 0.until(numberOfKeys)) { + val keySize = buffer.int + + if (keySize == 0 || keySize > 32) + throw Exception("fatal: !keySize || keySize > 32") + + keys.add(uData.sliceArray(buffer.position().until(buffer.position()+keySize))) + buffer.position(buffer.position()+keySize) + } + + val numberOfDatas = buffer.int + val datas = ArrayList>() + + for (i in 0.until(numberOfDatas)) { + val offset = buffer.long + val length = buffer.int + + datas.add(Pair(offset, length)) + } + + val numberOfSubNodeAddresses = B+1 + val subNodeAddresses = ArrayList() + + for (i in 0.until(numberOfSubNodeAddresses)) { + val subNodeAddress = buffer.long + subNodeAddresses.add(subNodeAddress) + } + + return Node(keys, datas, subNodeAddresses) +} + +@UseExperimental(ExperimentalUnsignedTypes::class) +fun bSearch(field: String, key: UByteArray, node: Node) : Pair? { + fun compareArrayBuffers(dv1: UByteArray, dv2: UByteArray) : Int { + val top = Math.min(dv1.size, dv2.size) + + for (i in 0.until(top)) { + if (dv1[i] < dv2[i]) + return -1 + else if (dv1[i] > dv2[i]) + return 1 + } + + return 0 + } + + fun locateKey(key: UByteArray, node: Node) : Pair { + for (i in 0 until node.keys.size) { + val cmpResult = compareArrayBuffers(key, node.keys[i]) + + if (cmpResult <= 0) + return Pair(cmpResult==0, i) + } + + return Pair(false, node.keys.size) + } + + fun isLeaf(node: Node) : Boolean { + for (subnode in node.subNodeAddresses) + if (subnode != 0L) + return false + + return true + } + + if (node.keys.isEmpty()) + return null + + val (there, where) = locateKey(key, node) + if (there) + return node.datas[where] + else if (isLeaf(node)) + return null + + val nextNode = getNodeAtAddress(field, node.subNodeAddresses[where]) ?: return null + return bSearch(field, key, nextNode) +} \ No newline at end of file diff --git a/libpupil/src/test/java/xyz/quaver/hitomi/UnitTest.kt b/libpupil/src/test/java/xyz/quaver/hitomi/UnitTest.kt new file mode 100644 index 00000000..17ac0e39 --- /dev/null +++ b/libpupil/src/test/java/xyz/quaver/hitomi/UnitTest.kt @@ -0,0 +1,64 @@ +package xyz.quaver.hitomi + +import org.junit.Test +import java.net.URL + +class UnitTest { + @Test + fun test() { + val url = URL("https://ltn.hitomi.la/galleries/1411672.js") + + print(url.path.substring(url.path.lastIndexOf('/')+1)) + } + + @Test + fun test_nozomi() { + val nozomi = fetchNozomi(start = 0, count = 5) + + for (n in nozomi) + println(n) + } + + @Test + fun test_search() { + val ids = getGalleryIDsForQuery("female:loli").reversed() + + for (i in 0..100) + println(ids[i]) + } + + @Test + fun test_suggestions() { + val suggestions = getSuggestionsForQuery("language:g") + + print(suggestions) + } + + @Test + fun test_doSearch() { + val r = doSearch("type:artistcg language:korean female:loli female:mind_break -female:anal") + + print(r.size) + } + + @Test + fun test_getBlock() { + val galleryBlock = getGalleryBlock(1405716) + + print(galleryBlock) + } + + @Test + fun test_getGallery() { + val gallery = getGallery(1405267) + + print(gallery) + } + + @Test + fun test_getReader() { + val reader = getReader(1404693) + + print(reader) + } +} \ No newline at end of file diff --git a/settings.gradle b/settings.gradle new file mode 100644 index 00000000..436dba02 --- /dev/null +++ b/settings.gradle @@ -0,0 +1 @@ +include ':app', ':libpupil'