diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml
index 4fc02689..d694c394 100644
--- a/.idea/jarRepositories.xml
+++ b/.idea/jarRepositories.xml
@@ -61,5 +61,10 @@
+
+
+
+
+
\ No newline at end of file
diff --git a/app/build.gradle b/app/build.gradle
index b6f63468..48249cea 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -64,7 +64,7 @@ dependencies {
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:1.3.9"
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.3.9"
- //implementation "org.jetbrains.kotlinx:kotlinx-serialization-core:1.0.0-RC"
+ implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.0.0-RC2"
implementation 'androidx.appcompat:appcompat:1.2.0'
implementation "androidx.activity:activity-ktx:1.2.0-alpha08"
implementation 'androidx.fragment:fragment-ktx:1.3.0-alpha08'
@@ -88,6 +88,9 @@ dependencies {
implementation ("com.github.bumptech.glide:okhttp3-integration:4.11.0") {
transitive = false
}
+ implementation ("com.github.bumptech.glide:recyclerview-integration:4.11.0") {
+ transitive = false
+ }
implementation 'com.github.bumptech.glide:annotations:4.11.0'
annotationProcessor 'com.github.bumptech.glide:compiler:4.11.0'
kapt 'com.github.bumptech.glide:compiler:4.11.0'
@@ -105,7 +108,7 @@ dependencies {
exclude group: 'org.jetbrains.kotlinx', module: 'kotlinx-serialization-core-jvm'
}
implementation "xyz.quaver:documentfilex:0.2.15"
- implementation "xyz.quaver:floatingsearchview:1.0"
+ implementation "xyz.quaver:floatingsearchview:1.0.3"
testImplementation 'junit:junit:4.13'
androidTestImplementation 'androidx.test.ext:junit:1.1.2'
androidTestImplementation 'androidx.test:rules:1.3.0'
diff --git a/app/libs/kotlinx-serialization-core-1.0.0-RC.jar b/app/libs/kotlinx-serialization-core-1.0.0-RC.jar
deleted file mode 100644
index f4abfe48..00000000
Binary files a/app/libs/kotlinx-serialization-core-1.0.0-RC.jar and /dev/null differ
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index d96312dc..8161565b 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -25,6 +25,7 @@
android:theme="@style/AppTheme"
android:networkSecurityConfig="@xml/network_security_config"
tools:replace="android:theme"
+ android:largeHeap="true"
tools:ignore="UnusedAttribute">
- cache.findFile(file)?.delete()
- }
- cache.metadata.imageList = MutableList(reader.galleryInfo.files.size) { null }
- return@let
+ FirebaseCrashlytics.getInstance().log(
+ """
+ GALLERYID: $galleryID
+ ${it.size} - ${progress[galleryID]?.size}
+ """.trimIndent()
+ )
+ error("ImageList Size does not match")
}
it.forEachIndexed { index, image ->
@@ -361,7 +351,17 @@ class DownloadService : Service() {
}
}
- reader.requestBuilders.forEachIndexed { index, it ->
+ reader.requestBuilders.also {
+ if (it.size != progress[galleryID]?.size) {
+ FirebaseCrashlytics.getInstance().log(
+ """
+ GALLERYID: $galleryID
+ ${it.size} - ${progress[galleryID]?.size}
+ """.trimIndent()
+ )
+ error("Requests Size does not match")
+ }
+ }.forEachIndexed { index, it ->
if (progress[galleryID]?.get(index)?.isInfinite() != true) {
val request = it.tag(Tag(galleryID, index, startId)).build()
client.newCall(request).enqueue(callback)
diff --git a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt
index 51242e86..207d040e 100644
--- a/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt
+++ b/app/src/main/java/xyz/quaver/pupil/ui/MainActivity.kt
@@ -39,6 +39,7 @@ import kotlinx.android.synthetic.main.activity_main_content.*
import kotlinx.coroutines.*
import xyz.quaver.floatingsearchview.FloatingSearchView
import xyz.quaver.floatingsearchview.suggestions.model.SearchSuggestion
+import xyz.quaver.floatingsearchview.util.view.MenuView
import xyz.quaver.floatingsearchview.util.view.SearchInputView
import xyz.quaver.hitomi.doSearch
import xyz.quaver.hitomi.getGalleryIDsFromNozomi
@@ -635,6 +636,14 @@ class MainActivity :
}
}
+ post {
+ findViewById(R.id.menu_view).menuItems.firstOrNull {
+ (it as MenuItem).itemId == R.id.main_menu_thin
+ }?.let {
+ (it as MenuItem).isChecked = Preferences["thin"]
+ }
+ }
+
onHistoryDeleteClickedListener = {
searchHistory.remove(it)
swapSuggestions(defaultSuggestions)
@@ -709,9 +718,14 @@ class MainActivity :
when(item?.itemId) {
R.id.main_menu_settings -> startActivityForResult(Intent(this@MainActivity, SettingsActivity::class.java), R.id.request_settings.normalizeID())
R.id.main_menu_thin -> {
+ val thin = !item.isChecked
+
+ item.isChecked = thin
main_recyclerview.apply {
(adapter as GalleryBlockAdapter).apply {
- isThin = !isThin
+ this.thin = thin
+
+ Preferences["thin"] = thin
}
adapter = adapter // Force to redraw
diff --git a/app/src/main/java/xyz/quaver/pupil/ui/view/TagChip.kt b/app/src/main/java/xyz/quaver/pupil/ui/view/TagChip.kt
index 67904daf..81445b74 100644
--- a/app/src/main/java/xyz/quaver/pupil/ui/view/TagChip.kt
+++ b/app/src/main/java/xyz/quaver/pupil/ui/view/TagChip.kt
@@ -23,6 +23,7 @@ import android.content.Context
import androidx.core.content.ContextCompat
import com.google.android.material.chip.Chip
import xyz.quaver.pupil.R
+import xyz.quaver.pupil.favoriteTags
import xyz.quaver.pupil.types.Tag
import xyz.quaver.pupil.util.wordCapitalize
@@ -56,6 +57,34 @@ class TagChip(context: Context, tag: Tag) : Chip(context) {
ContextCompat.getDrawable(context, R.drawable.gender_female_white)
}
else -> null
+ }.also {
+ if (favoriteTags.contains(tag))
+ setChipBackgroundColorResource(R.color.material_orange_500)
+ }
+
+ isCloseIconVisible = true
+ closeIcon = ContextCompat.getDrawable(context,
+ if (favoriteTags.contains(tag))
+ R.drawable.ic_star_filled
+ else
+ R.drawable.ic_star_empty
+ )
+
+ setOnCloseIconClickListener {
+ if (favoriteTags.contains(tag)) {
+ favoriteTags.remove(tag)
+ closeIcon = ContextCompat.getDrawable(context, R.drawable.ic_star_empty)
+
+ when(tag.area) {
+ "male" -> setChipBackgroundColorResource(R.color.material_blue_700)
+ "female" -> setChipBackgroundColorResource(R.color.material_pink_600)
+ else -> chipBackgroundColor = null
+ }
+ } else {
+ favoriteTags.add(tag)
+ closeIcon = ContextCompat.getDrawable(context, R.drawable.ic_star_filled)
+ setChipBackgroundColorResource(R.color.material_orange_500)
+ }
}
text = when (tag.area) {
diff --git a/app/src/main/java/xyz/quaver/pupil/util/downloader/Cache.kt b/app/src/main/java/xyz/quaver/pupil/util/downloader/Cache.kt
index ada9f18c..e34747c8 100644
--- a/app/src/main/java/xyz/quaver/pupil/util/downloader/Cache.kt
+++ b/app/src/main/java/xyz/quaver/pupil/util/downloader/Cache.kt
@@ -212,7 +212,9 @@ class Cache private constructor(context: Context, val galleryID: Int) : ContextW
return@forEach
kotlin.runCatching {
- target.createNewFile()
+ if (!target.exists())
+ target.createNewFile()
+
target.outputStream()?.use { target -> source.inputStream()?.use { source ->
source.copyTo(target)
} }
@@ -224,7 +226,9 @@ class Cache private constructor(context: Context, val galleryID: Int) : ContextW
if (cacheThumbnail.exists() && !downloadThumbnail.exists()) {
kotlin.runCatching {
- downloadThumbnail.createNewFile()
+ if (!downloadThumbnail.exists())
+ downloadThumbnail.createNewFile()
+
downloadThumbnail.outputStream()?.use { target -> cacheThumbnail.inputStream()?.use { source ->
source.copyTo(target)
} }
@@ -237,7 +241,9 @@ class Cache private constructor(context: Context, val galleryID: Int) : ContextW
if (cacheMetadata.exists() && !downloadMetadata.exists()) {
kotlin.runCatching {
- downloadMetadata.createNewFile()
+ if (!downloadMetadata.exists())
+ downloadMetadata.createNewFile()
+
downloadMetadata.writeText(Json.encodeToString(metadata))
cacheMetadata.delete()
}
diff --git a/app/src/main/res/drawable/sort_variant.xml b/app/src/main/res/drawable/sort_variant.xml
new file mode 100644
index 00000000..83d5e4cb
--- /dev/null
+++ b/app/src/main/res/drawable/sort_variant.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/main.xml b/app/src/main/res/menu/main.xml
index 714138d6..b9fd3fa8 100644
--- a/app/src/main/res/menu/main.xml
+++ b/app/src/main/res/menu/main.xml
@@ -20,10 +20,10 @@