Ver Fonte

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
Hunter Nickel há 3 anos atrás
pai
commit
2c76bc99fc

+ 5 - 2
app/src/main/java/eu/kanade/tachiyomi/util/view/ViewExtensions.kt

@@ -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)

+ 3 - 2
app/src/main/java/eu/kanade/tachiyomi/widget/MangaSummaryView.kt

@@ -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 {