diff --git a/app/src/main/java/xyz/quaver/pupil/ReaderActivity.kt b/app/src/main/java/xyz/quaver/pupil/ReaderActivity.kt index 1f4c9abb..263eebd1 100644 --- a/app/src/main/java/xyz/quaver/pupil/ReaderActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/ReaderActivity.kt @@ -1,10 +1,12 @@ package xyz.quaver.pupil +import android.graphics.drawable.Animatable import android.graphics.drawable.Drawable import android.os.Bundle import android.view.* import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AppCompatActivity +import androidx.core.content.ContextCompat import androidx.preference.PreferenceManager import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearSmoothScroller @@ -20,12 +22,19 @@ import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.io.IOException +import kotlinx.serialization.ImplicitReflectionSerializer import kotlinx.serialization.json.Json import kotlinx.serialization.json.JsonConfiguration +import kotlinx.serialization.list +import kotlinx.serialization.stringify import xyz.quaver.hitomi.GalleryBlock import xyz.quaver.pupil.adapters.ReaderAdapter +import xyz.quaver.pupil.types.Tag +import xyz.quaver.pupil.types.Tags import xyz.quaver.pupil.util.GalleryDownloader +import xyz.quaver.pupil.util.Histories import xyz.quaver.pupil.util.ItemClickSupport +import java.io.File class ReaderActivity : AppCompatActivity() { @@ -43,9 +52,13 @@ class ReaderActivity : AppCompatActivity() { private var menu: Menu? = null + private lateinit var favorites: Histories + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + favorites = (application as Pupil).favorites + window.setFlags( WindowManager.LayoutParams.FLAG_SECURE, WindowManager.LayoutParams.FLAG_SECURE) @@ -81,8 +94,17 @@ class ReaderActivity : AppCompatActivity() { super.onResume() } + @UseExperimental(ImplicitReflectionSerializer::class) override fun onCreateOptionsMenu(menu: Menu?): Boolean { menuInflater.inflate(R.menu.reader, menu) + + with(menu?.findItem(R.id.reader_menu_favorite)) { + this ?: return@with + + if (favorites.contains(galleryBlock.id)) + (icon as Animatable).start() + } + this.menu = menu return true } @@ -106,6 +128,18 @@ class ReaderActivity : AppCompatActivity() { dialog.show() } + R.id.reader_menu_favorite -> { + val id = galleryBlock.id + val favorite = menu?.findItem(R.id.reader_menu_favorite) ?: return true + + if (favorites.contains(id)) { + favorites.remove(id) + favorite.icon = AnimatedVectorDrawableCompat.create(this, R.drawable.avd_star) + } else { + favorites.add(id) + (favorite.icon as Animatable).start() + } + } } return true diff --git a/app/src/main/java/xyz/quaver/pupil/util/GalleryDownloader.kt b/app/src/main/java/xyz/quaver/pupil/util/GalleryDownloader.kt index 985096f2..3b5a892e 100644 --- a/app/src/main/java/xyz/quaver/pupil/util/GalleryDownloader.kt +++ b/app/src/main/java/xyz/quaver/pupil/util/GalleryDownloader.kt @@ -104,7 +104,13 @@ class GalleryDownloader( val cached = json.parse(serializer, cache.readText()) if (cached.isNotEmpty()) { + useHiyobi = when { + cached.first().url.contains("hitomi.la") -> false + else -> true + } + onReaderLoadedHandler?.invoke(cached) + return@async cached } } diff --git a/app/src/main/res/menu/reader.xml b/app/src/main/res/menu/reader.xml index 22a61f0f..4cd3ad30 100644 --- a/app/src/main/res/menu/reader.xml +++ b/app/src/main/res/menu/reader.xml @@ -2,6 +2,12 @@ + +