Fixed hiyobi loading bug
Added favorite to reader
This commit is contained in:
@@ -1,10 +1,12 @@
|
|||||||
package xyz.quaver.pupil
|
package xyz.quaver.pupil
|
||||||
|
|
||||||
|
import android.graphics.drawable.Animatable
|
||||||
import android.graphics.drawable.Drawable
|
import android.graphics.drawable.Drawable
|
||||||
import android.os.Bundle
|
import android.os.Bundle
|
||||||
import android.view.*
|
import android.view.*
|
||||||
import androidx.appcompat.app.AlertDialog
|
import androidx.appcompat.app.AlertDialog
|
||||||
import androidx.appcompat.app.AppCompatActivity
|
import androidx.appcompat.app.AppCompatActivity
|
||||||
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.preference.PreferenceManager
|
import androidx.preference.PreferenceManager
|
||||||
import androidx.recyclerview.widget.LinearLayoutManager
|
import androidx.recyclerview.widget.LinearLayoutManager
|
||||||
import androidx.recyclerview.widget.LinearSmoothScroller
|
import androidx.recyclerview.widget.LinearSmoothScroller
|
||||||
@@ -20,12 +22,19 @@ import kotlinx.coroutines.CoroutineScope
|
|||||||
import kotlinx.coroutines.Dispatchers
|
import kotlinx.coroutines.Dispatchers
|
||||||
import kotlinx.coroutines.launch
|
import kotlinx.coroutines.launch
|
||||||
import kotlinx.io.IOException
|
import kotlinx.io.IOException
|
||||||
|
import kotlinx.serialization.ImplicitReflectionSerializer
|
||||||
import kotlinx.serialization.json.Json
|
import kotlinx.serialization.json.Json
|
||||||
import kotlinx.serialization.json.JsonConfiguration
|
import kotlinx.serialization.json.JsonConfiguration
|
||||||
|
import kotlinx.serialization.list
|
||||||
|
import kotlinx.serialization.stringify
|
||||||
import xyz.quaver.hitomi.GalleryBlock
|
import xyz.quaver.hitomi.GalleryBlock
|
||||||
import xyz.quaver.pupil.adapters.ReaderAdapter
|
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.GalleryDownloader
|
||||||
|
import xyz.quaver.pupil.util.Histories
|
||||||
import xyz.quaver.pupil.util.ItemClickSupport
|
import xyz.quaver.pupil.util.ItemClickSupport
|
||||||
|
import java.io.File
|
||||||
|
|
||||||
class ReaderActivity : AppCompatActivity() {
|
class ReaderActivity : AppCompatActivity() {
|
||||||
|
|
||||||
@@ -43,9 +52,13 @@ class ReaderActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
private var menu: Menu? = null
|
private var menu: Menu? = null
|
||||||
|
|
||||||
|
private lateinit var favorites: Histories
|
||||||
|
|
||||||
override fun onCreate(savedInstanceState: Bundle?) {
|
override fun onCreate(savedInstanceState: Bundle?) {
|
||||||
super.onCreate(savedInstanceState)
|
super.onCreate(savedInstanceState)
|
||||||
|
|
||||||
|
favorites = (application as Pupil).favorites
|
||||||
|
|
||||||
window.setFlags(
|
window.setFlags(
|
||||||
WindowManager.LayoutParams.FLAG_SECURE,
|
WindowManager.LayoutParams.FLAG_SECURE,
|
||||||
WindowManager.LayoutParams.FLAG_SECURE)
|
WindowManager.LayoutParams.FLAG_SECURE)
|
||||||
@@ -81,8 +94,17 @@ class ReaderActivity : AppCompatActivity() {
|
|||||||
super.onResume()
|
super.onResume()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@UseExperimental(ImplicitReflectionSerializer::class)
|
||||||
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
|
override fun onCreateOptionsMenu(menu: Menu?): Boolean {
|
||||||
menuInflater.inflate(R.menu.reader, menu)
|
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
|
this.menu = menu
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
@@ -106,6 +128,18 @@ class ReaderActivity : AppCompatActivity() {
|
|||||||
|
|
||||||
dialog.show()
|
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
|
return true
|
||||||
|
|||||||
@@ -104,7 +104,13 @@ class GalleryDownloader(
|
|||||||
val cached = json.parse(serializer, cache.readText())
|
val cached = json.parse(serializer, cache.readText())
|
||||||
|
|
||||||
if (cached.isNotEmpty()) {
|
if (cached.isNotEmpty()) {
|
||||||
|
useHiyobi = when {
|
||||||
|
cached.first().url.contains("hitomi.la") -> false
|
||||||
|
else -> true
|
||||||
|
}
|
||||||
|
|
||||||
onReaderLoadedHandler?.invoke(cached)
|
onReaderLoadedHandler?.invoke(cached)
|
||||||
|
|
||||||
return@async cached
|
return@async cached
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -2,6 +2,12 @@
|
|||||||
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
<menu xmlns:android="http://schemas.android.com/apk/res/android"
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto">
|
xmlns:app="http://schemas.android.com/apk/res-auto">
|
||||||
|
|
||||||
|
<item android:id="@+id/reader_menu_favorite"
|
||||||
|
android:title=""
|
||||||
|
android:iconTint="@color/material_orange_500"
|
||||||
|
android:icon="@drawable/avd_star"
|
||||||
|
app:showAsAction="always"/>
|
||||||
|
|
||||||
<item android:id="@+id/reader_menu_use_hiyobi"
|
<item android:id="@+id/reader_menu_use_hiyobi"
|
||||||
android:title=""
|
android:title=""
|
||||||
android:icon="@drawable/ic_hiyobi"
|
android:icon="@drawable/ic_hiyobi"
|
||||||
|
|||||||
Reference in New Issue
Block a user