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