From 3fc71b195a7e0fe88853f9a19246aa8d5d1eaf40 Mon Sep 17 00:00:00 2001 From: tom5079 Date: Sun, 9 Jun 2019 13:42:40 +0900 Subject: [PATCH] Show gallery ID Fixed paging problem when tag searched made gallery info clickable --- app/build.gradle | 4 +- .../java/xyz/quaver/pupil/MainActivity.kt | 10 ++- .../pupil/adapters/GalleryBlockAdapter.kt | 62 ++++++++++++++++++- .../quaver/pupil/adapters/ReaderAdapter.kt | 6 +- app/src/main/res/layout/item_galleryblock.xml | 27 ++++++-- app/src/main/res/values/strings.xml | 3 +- .../java/xyz/quaver/hitomi/galleryblock.kt | 2 +- .../test/java/xyz/quaver/hitomi/UnitTest.kt | 2 +- 8 files changed, 100 insertions(+), 16 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 3935d108..0c68795c 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -9,8 +9,8 @@ android { applicationId "xyz.quaver.pupil" minSdkVersion 16 targetSdkVersion 28 - versionCode 14 - versionName "2.7" + versionCode 15 + versionName "3.0" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } buildTypes { diff --git a/app/src/main/java/xyz/quaver/pupil/MainActivity.kt b/app/src/main/java/xyz/quaver/pupil/MainActivity.kt index feaa0bab..8add8651 100644 --- a/app/src/main/java/xyz/quaver/pupil/MainActivity.kt +++ b/app/src/main/java/xyz/quaver/pupil/MainActivity.kt @@ -39,7 +39,6 @@ import kotlinx.serialization.json.JsonConfiguration import kotlinx.serialization.json.JsonObject import kotlinx.serialization.json.content import kotlinx.serialization.list -import kotlinx.serialization.parseList import kotlinx.serialization.stringify import ru.noties.markwon.Markwon import xyz.quaver.hitomi.* @@ -116,6 +115,13 @@ class MainActivity : AppCompatActivity() { initView() } + override fun onDestroy() { + super.onDestroy() + + if (cacheDir.exists()) + cacheDir.deleteRecursively() + } + override fun onBackPressed() { when { main_drawer_layout.isDrawerOpen(GravityCompat.START) -> main_drawer_layout.closeDrawer(GravityCompat.START) @@ -249,7 +255,7 @@ class MainActivity : AppCompatActivity() { val msg = extractReleaseNote(update, Locale.getDefault().language) setMessage(Markwon.create(context).toMarkdown(msg)) setPositiveButton(android.R.string.yes) { _, _ -> - startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.home_page)))) + startActivity(Intent(Intent.ACTION_VIEW, Uri.parse(getString(R.string.update)))) } setNegativeButton(android.R.string.no) { _, _ ->} } diff --git a/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt index 96f5b609..52d25afe 100644 --- a/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt +++ b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt @@ -1,5 +1,7 @@ package xyz.quaver.pupil.adapters +import android.app.AlertDialog +import android.graphics.Bitmap import android.graphics.BitmapFactory import android.graphics.drawable.Animatable import android.util.Log @@ -7,6 +9,7 @@ import android.util.SparseBooleanArray import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.ArrayAdapter import android.widget.LinearLayout import androidx.cardview.widget.CardView import androidx.core.content.ContextCompat @@ -23,6 +26,7 @@ import kotlinx.serialization.json.JsonConfiguration import kotlinx.serialization.list import xyz.quaver.hitomi.GalleryBlock import xyz.quaver.hitomi.ReaderItem +import xyz.quaver.pupil.BuildConfig import xyz.quaver.pupil.Pupil import xyz.quaver.pupil.R import xyz.quaver.pupil.types.Tag @@ -64,7 +68,10 @@ class GalleryBlockAdapter(private val galleries: List Bitmap.createScaledBitmap(BitmapFactory.decodeFile(thumbnail.await()), 5, 8, true) + else -> BitmapFactory.decodeFile(thumbnail.await()) + } post { galleryblock_thumbnail.setImageBitmap(bitmap) @@ -157,6 +164,19 @@ class GalleryBlockAdapter(private val galleries: List View.VISIBLE else -> View.GONE } + setOnClickListener { + if (artists.size > 1) { + AlertDialog.Builder(context).apply { + setAdapter(ArrayAdapter(context, android.R.layout.select_dialog_item, artists)) { _, index -> + for (callback in onChipClickedHandler) + callback.invoke(Tag("artist", artists[index])) + } + }.show() + } else { + for(callback in onChipClickedHandler) + callback.invoke(Tag("artist", artists.first())) + } + } } with(galleryblock_series) { text = @@ -167,8 +187,31 @@ class GalleryBlockAdapter(private val galleries: List View.VISIBLE else -> View.GONE } + setOnClickListener { + setOnClickListener { + if (series.size > 1) { + AlertDialog.Builder(context).apply { + setAdapter(ArrayAdapter(context, android.R.layout.select_dialog_item, series)) { _, index -> + for (callback in onChipClickedHandler) + callback.invoke(Tag("series", series[index])) + } + }.show() + } else { + for(callback in onChipClickedHandler) + callback.invoke(Tag("series", series.first())) + } + } + } + } + with(galleryblock_type) { + text = resources.getString(R.string.galleryblock_type, gallery.type).wordCapitalize() + setOnClickListener { + setOnClickListener { + for(callback in onChipClickedHandler) + callback.invoke(Tag("type", gallery.type)) + } + } } - galleryblock_type.text = resources.getString(R.string.galleryblock_type, gallery.type).wordCapitalize() with(galleryblock_language) { text = resources.getString(R.string.galleryblock_language, languages[gallery.language]) @@ -176,11 +219,22 @@ class GalleryBlockAdapter(private val galleries: List View.VISIBLE else -> View.GONE } + setOnClickListener { + setOnClickListener { + for(callback in onChipClickedHandler) + callback.invoke(Tag("language", gallery.language)) + } + } } galleryblock_tag_group.removeAllViews() gallery.relatedTags.forEach { - val tag = Tag.parse(it) + val tag = Tag.parse(it).let { tag -> + when { + tag.area != null -> tag + else -> Tag("tag", it) + } + } val chip = LayoutInflater.from(context) .inflate(R.layout.tag_chip, this, false) as Chip @@ -209,6 +263,8 @@ class GalleryBlockAdapter(private val galleries: List) : RecyclerView.Adapter() { @@ -37,7 +38,10 @@ class ReaderAdapter(private val images: List) : RecyclerView.Adapter Bitmap.createScaledBitmap(BitmapFactory.decodeFile(images[position], options), 5, 8, true) + else -> BitmapFactory.decodeFile(images[position], options) + } post { setImageBitmap(image) } } diff --git a/app/src/main/res/layout/item_galleryblock.xml b/app/src/main/res/layout/item_galleryblock.xml index 8186c6a5..7e05f4c2 100644 --- a/app/src/main/res/layout/item_galleryblock.xml +++ b/app/src/main/res/layout/item_galleryblock.xml @@ -69,6 +69,8 @@ android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" + android:clickable="true" + android:focusable="true" app:layout_constraintLeft_toRightOf="@id/galleryblock_thumbnail" app:layout_constraintRight_toRightOf="parent" app:layout_constraintTop_toBottomOf="@id/galleryblock_title"/> @@ -79,6 +81,8 @@ android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" + android:clickable="true" + android:focusable="true" app:layout_constraintTop_toBottomOf="@id/galleryblock_artist" app:layout_constraintStart_toEndOf="@id/galleryblock_thumbnail" app:layout_constraintEnd_toEndOf="parent"/> @@ -89,6 +93,8 @@ android:layout_height="wrap_content" android:layout_marginStart="8dp" android:layout_marginLeft="8dp" + android:clickable="true" + android:focusable="true" app:layout_constraintTop_toBottomOf="@id/galleryblock_series" app:layout_constraintStart_toEndOf="@id/galleryblock_thumbnail" /> @@ -99,6 +105,8 @@ android:layout_marginStart="8dp" android:layout_marginLeft="8dp" android:layout_marginBottom="8dp" + android:clickable="true" + android:focusable="true" app:layout_constraintTop_toBottomOf="@id/galleryblock_type" app:layout_constraintBottom_toTopOf="@id/galleryblock_padding" app:layout_constraintStart_toEndOf="@id/galleryblock_thumbnail" /> @@ -135,16 +143,25 @@ + android:paddingLeft="8dp" + android:paddingRight="8dp" + android:paddingBottom="8dp" + android:orientation="horizontal"> + + + + https://api.github.com/repos/tom5079/Pupil-issue/releases Pupil-v(\\d+\\.)+\\d+\\.apk - http://bit.ly/2ZlOjXJ + http://bit.ly/2EZDClw + http://bit.ly/2ZlOjXJ http://bit.ly/2Z7lNZE https://github.com/tom5079/Pupil-issue/issues/new/choose mailto:pupil.hentai@gmail.com diff --git a/libpupil/src/main/java/xyz/quaver/hitomi/galleryblock.kt b/libpupil/src/main/java/xyz/quaver/hitomi/galleryblock.kt index 42aece05..9ecd6a9e 100644 --- a/libpupil/src/main/java/xyz/quaver/hitomi/galleryblock.kt +++ b/libpupil/src/main/java/xyz/quaver/hitomi/galleryblock.kt @@ -80,7 +80,7 @@ fun getGalleryBlock(galleryID: Int) : GalleryBlock? { val relatedTags = doc.select(".relatedtags a").map { val href = URLDecoder.decode(it.attr("href"), "UTF-8") - href.slice(5 until href.indexOf('-')) + href.slice(5 until href.indexOf("-all")) } return GalleryBlock(galleryID, thumbnails, title, artists, series, type, language, relatedTags) diff --git a/libpupil/src/test/java/xyz/quaver/hitomi/UnitTest.kt b/libpupil/src/test/java/xyz/quaver/hitomi/UnitTest.kt index fe648e59..bc7c0d78 100644 --- a/libpupil/src/test/java/xyz/quaver/hitomi/UnitTest.kt +++ b/libpupil/src/test/java/xyz/quaver/hitomi/UnitTest.kt @@ -42,7 +42,7 @@ class UnitTest { @Test fun test_getBlock() { - val galleryBlock = getGalleryBlock(1405716) + val galleryBlock = getGalleryBlock(1428250) print(galleryBlock) }