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 dc41940c..cb2b91ff 100644
--- a/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt
+++ b/app/src/main/java/xyz/quaver/pupil/adapters/GalleryBlockAdapter.kt
@@ -50,6 +50,7 @@ import xyz.quaver.pupil.BuildConfig
import xyz.quaver.pupil.R
import xyz.quaver.pupil.favorites
import xyz.quaver.pupil.types.Tag
+import xyz.quaver.pupil.ui.view.TagChip
import xyz.quaver.pupil.util.Preferences
import xyz.quaver.pupil.util.downloader.Cache
import xyz.quaver.pupil.util.downloader.DownloadManager
@@ -201,36 +202,10 @@ class GalleryBlockAdapter(private val glide: RequestManager, private val galleri
galleryblock_tag_group.removeAllViews()
galleryBlock.relatedTags.forEach {
- galleryblock_tag_group.addView(Chip(context).apply {
- val tag = Tag.parse(it).let { tag ->
- when {
- tag.area != null -> tag
- else -> Tag("tag", it)
- }
- }
-
- chipIcon = when(tag.area) {
- "male" -> {
- setChipBackgroundColorResource(R.color.material_blue_700)
- setTextColor(ContextCompat.getColor(context, android.R.color.white))
- ContextCompat.getDrawable(context, R.drawable.gender_male)?.apply {
- colorFilter = PorterDuffColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP)
- }
- }
- "female" -> {
- setChipBackgroundColorResource(R.color.material_pink_600)
- setTextColor(ContextCompat.getColor(context, android.R.color.white))
- ContextCompat.getDrawable(context, R.drawable.gender_female)?.apply {
- colorFilter = PorterDuffColorFilter(Color.WHITE, PorterDuff.Mode.SRC_ATOP)
- }
- }
- else -> null
- }
- text = tag.tag.wordCapitalize()
- setEnsureMinTouchTargetSize(false)
- setOnClickListener {
+ galleryblock_tag_group.addView(TagChip(context, Tag.parse(it)).apply {
+ setOnClickListener { view ->
for (callback in onChipClickedHandler)
- callback.invoke(tag)
+ callback.invoke((view as TagChip).tag)
}
})
}
diff --git a/app/src/main/java/xyz/quaver/pupil/ui/dialog/GalleryDialog.kt b/app/src/main/java/xyz/quaver/pupil/ui/dialog/GalleryDialog.kt
index 350f16b1..e54ace31 100644
--- a/app/src/main/java/xyz/quaver/pupil/ui/dialog/GalleryDialog.kt
+++ b/app/src/main/java/xyz/quaver/pupil/ui/dialog/GalleryDialog.kt
@@ -22,7 +22,6 @@ import android.app.Dialog
import android.content.Context
import android.content.Intent
import android.os.Bundle
-import android.util.Log
import android.view.LayoutInflater
import android.view.View
import android.widget.LinearLayout.LayoutParams
@@ -31,13 +30,15 @@ import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import androidx.viewpager2.widget.ViewPager2
import com.bumptech.glide.RequestManager
-import com.google.android.material.chip.Chip
import com.google.android.material.snackbar.Snackbar
import kotlinx.android.synthetic.main.dialog_gallery.*
import kotlinx.android.synthetic.main.dialog_gallery_details.view.*
import kotlinx.android.synthetic.main.dialog_gallery_dotindicator.view.*
import kotlinx.android.synthetic.main.item_gallery_details.view.*
-import kotlinx.coroutines.*
+import kotlinx.coroutines.CoroutineScope
+import kotlinx.coroutines.Dispatchers
+import kotlinx.coroutines.launch
+import kotlinx.coroutines.withContext
import xyz.quaver.hitomi.Gallery
import xyz.quaver.hitomi.getGallery
import xyz.quaver.pupil.BuildConfig
@@ -47,18 +48,13 @@ import xyz.quaver.pupil.adapters.ThumbnailPageAdapter
import xyz.quaver.pupil.histories
import xyz.quaver.pupil.types.Tag
import xyz.quaver.pupil.ui.ReaderActivity
+import xyz.quaver.pupil.ui.view.TagChip
import xyz.quaver.pupil.util.ItemClickSupport
import xyz.quaver.pupil.util.downloader.Cache
import xyz.quaver.pupil.util.wordCapitalize
class GalleryDialog(context: Context, private val glide: RequestManager, private val galleryID: Int) : Dialog(context) {
- private val languages = context.resources.getStringArray(R.array.languages).map {
- it.split("|").let { split ->
- Pair(split[0], split[1])
- }
- }.toMap()
-
val onChipClickedHandler = ArrayList<((Tag) -> (Unit))>()
override fun onCreate(savedInstanceState: Bundle?) {
@@ -162,28 +158,7 @@ class GalleryDialog(context: Context, private val glide: RequestManager, private
content.forEach { tag ->
gallery_details_tags.addView(
- Chip(context).apply {
- chipIcon = when(tag.area) {
- "male" -> {
- setChipBackgroundColorResource(R.color.material_blue_700)
- setTextColor(ContextCompat.getColor(context, android.R.color.white))
- ContextCompat.getDrawable(context, R.drawable.gender_male)
- }
- "female" -> {
- setChipBackgroundColorResource(R.color.material_pink_600)
- setTextColor(ContextCompat.getColor(context, android.R.color.white))
- ContextCompat.getDrawable(context, R.drawable.gender_female)
- }
- else -> null
- }
-
- text = when (tag.area) {
- "language" -> languages[tag.tag]
- else -> tag.tag.wordCapitalize()
- }
-
- setEnsureMinTouchTargetSize(false)
-
+ TagChip(context, tag).apply {
setOnClickListener {
onChipClickedHandler.forEach { handler ->
handler.invoke(tag)
@@ -275,12 +250,12 @@ class GalleryDialog(context: Context, private val glide: RequestManager, private
gallery.related.forEach { galleryID ->
Cache.getInstance(context, galleryID).getGalleryBlock()?.let {
galleries.add(galleryID)
-
- withContext(Dispatchers.Main) {
- adapter.notifyItemInserted(galleries.size-1)
- }
}
}
+
+ withContext(Dispatchers.Main) {
+ adapter.notifyDataSetChanged()
+ }
}
}
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
new file mode 100644
index 00000000..2501d810
--- /dev/null
+++ b/app/src/main/java/xyz/quaver/pupil/ui/view/TagChip.kt
@@ -0,0 +1,66 @@
+/*
+ * Pupil, Hitomi.la viewer for Android
+ * Copyright (C) 2020 tom5079
+ *
+ * This program is free software: you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation, either version 3 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program. If not, see .
+ */
+
+package xyz.quaver.pupil.ui.view
+
+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.types.Tag
+import xyz.quaver.pupil.util.wordCapitalize
+
+class TagChip(context: Context, val tag: Tag) : Chip(context) {
+
+ private val languages = context.resources.getStringArray(R.array.languages).map {
+ it.split("|").let { split ->
+ Pair(split[0], split[1])
+ }
+ }.toMap()
+
+ init {
+ val tag = tag.let {
+ when {
+ it.area != null -> it
+ else -> Tag("tag", tag.tag)
+ }
+ }
+
+ chipIcon = when(tag.area) {
+ "male" -> {
+ setChipBackgroundColorResource(R.color.material_blue_700)
+ setTextColor(ContextCompat.getColor(context, android.R.color.white))
+ ContextCompat.getDrawable(context, R.drawable.gender_male_white)
+ }
+ "female" -> {
+ setChipBackgroundColorResource(R.color.material_pink_600)
+ setTextColor(ContextCompat.getColor(context, android.R.color.white))
+ ContextCompat.getDrawable(context, R.drawable.gender_female_white)
+ }
+ else -> null
+ }
+
+ text = when (tag.area) {
+ "language" -> languages[tag.tag]
+ else -> tag.tag.wordCapitalize()
+ }
+
+ setEnsureMinTouchTargetSize(false)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/res/drawable/gender_female_white.xml b/app/src/main/res/drawable/gender_female_white.xml
new file mode 100644
index 00000000..80b9ad4a
--- /dev/null
+++ b/app/src/main/res/drawable/gender_female_white.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/drawable/gender_male_white.xml b/app/src/main/res/drawable/gender_male_white.xml
new file mode 100644
index 00000000..33443bfd
--- /dev/null
+++ b/app/src/main/res/drawable/gender_male_white.xml
@@ -0,0 +1,8 @@
+
+
+
+
\ No newline at end of file