Add ability to copy a genre/tag to clipboard by long-pressing it's chip (#6084)

* Allow copying a genre by long-pressing it's chip

* Make chip click listeners nullable, and only attach if not-null
This commit is contained in:
Hunter Nickel 2021-10-13 07:23:59 -06:00 committed by GitHub
parent bb06895145
commit 2c76bc99fc
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 8 additions and 4 deletions

View File

@ -167,17 +167,20 @@ inline fun ExtendedFloatingActionButton.shrinkOnScroll(recycler: RecyclerView):
*
* @param items List of strings that are shown as individual chips.
* @param onClick Optional on click listener for each chip.
* @param onLongClick Optional on long click listener for each chip.
*/
inline fun ChipGroup.setChips(
items: List<String>?,
noinline onClick: (item: String) -> Unit = {}
noinline onClick: ((item: String) -> Unit)? = null,
noinline onLongClick: ((item: String) -> Unit)? = null
) {
removeAllViews()
items?.forEach { item ->
val chip = Chip(context).apply {
text = item
setOnClickListener { onClick(item) }
if (onClick != null) { setOnClickListener { onClick(item) } }
if (onLongClick != null) { setOnLongClickListener { onLongClick(item); true } }
}
addView(chip)

View File

@ -64,8 +64,9 @@ class MangaSummaryView @JvmOverloads constructor(
}
fun setTags(items: List<String>?, onClick: (item: String) -> Unit) {
binding.tagChipsShrunk.setChips(items, onClick)
binding.tagChipsExpanded.setChips(items, onClick)
listOfNotNull(binding.tagChipsShrunk, binding.tagChipsExpanded).forEach { chips ->
chips.setChips(items, onClick) { tag -> context.copyToClipboard(tag, tag) }
}
}
private fun updateExpandState() = binding.apply {