diff --git a/app/src/main/java/exh/ui/metadata/adapters/EHentaiDescriptionAdapter.kt b/app/src/main/java/exh/ui/metadata/adapters/EHentaiDescriptionAdapter.kt index 0c32091b1..4505430cd 100644 --- a/app/src/main/java/exh/ui/metadata/adapters/EHentaiDescriptionAdapter.kt +++ b/app/src/main/java/exh/ui/metadata/adapters/EHentaiDescriptionAdapter.kt @@ -9,6 +9,7 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.databinding.DescriptionAdapterEhBinding import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction import eu.kanade.tachiyomi.ui.manga.MangaController +import eu.kanade.tachiyomi.util.system.copyToClipboard import eu.kanade.tachiyomi.util.system.getResourceColor import exh.metadata.EX_DATE_FORMAT import exh.metadata.humanReadableByteCount @@ -23,6 +24,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.android.view.clicks +import reactivecircus.flowbinding.android.view.longClicks class EHentaiDescriptionAdapter( private val controller: MangaController @@ -111,6 +113,27 @@ class EHentaiDescriptionAdapter( itemView.context.getString(R.string.rating_view_no_count, itemView.context.getString(name), (ratingFloat ?: 0F).toString()) } + listOf( + binding.favorites, + binding.genre, + binding.language, + binding.pages, + binding.rating, + binding.size, + binding.uploader, + binding.visible, + binding.whenPosted + ).forEach { textView -> + textView.longClicks() + .onEach { + itemView.context.copyToClipboard( + textView.text.toString(), + textView.text.toString() + ) + } + .launchIn(scope) + } + binding.moreInfo.clicks() .onEach { controller.router?.pushController( diff --git a/app/src/main/java/exh/ui/metadata/adapters/EightMusesDescriptionAdapter.kt b/app/src/main/java/exh/ui/metadata/adapters/EightMusesDescriptionAdapter.kt index 7e900acaa..1419f0182 100644 --- a/app/src/main/java/exh/ui/metadata/adapters/EightMusesDescriptionAdapter.kt +++ b/app/src/main/java/exh/ui/metadata/adapters/EightMusesDescriptionAdapter.kt @@ -8,6 +8,7 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.databinding.DescriptionAdapter8mBinding import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction import eu.kanade.tachiyomi.ui.manga.MangaController +import eu.kanade.tachiyomi.util.system.copyToClipboard import exh.metadata.metadata.EightMusesSearchMetadata import exh.ui.metadata.MetadataViewController import kotlinx.coroutines.CoroutineScope @@ -16,6 +17,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.android.view.clicks +import reactivecircus.flowbinding.android.view.longClicks class EightMusesDescriptionAdapter( private val controller: MangaController @@ -43,6 +45,15 @@ class EightMusesDescriptionAdapter( binding.title.text = meta.title ?: itemView.context.getString(R.string.unknown) + binding.title.longClicks() + .onEach { + itemView.context.copyToClipboard( + binding.title.text.toString(), + binding.title.text.toString() + ) + } + .launchIn(scope) + binding.moreInfo.clicks() .onEach { controller.router?.pushController( diff --git a/app/src/main/java/exh/ui/metadata/adapters/HBrowseDescriptionAdapter.kt b/app/src/main/java/exh/ui/metadata/adapters/HBrowseDescriptionAdapter.kt index 4e22ff969..6a2edf59d 100644 --- a/app/src/main/java/exh/ui/metadata/adapters/HBrowseDescriptionAdapter.kt +++ b/app/src/main/java/exh/ui/metadata/adapters/HBrowseDescriptionAdapter.kt @@ -8,6 +8,7 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.databinding.DescriptionAdapterHbBinding import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction import eu.kanade.tachiyomi.ui.manga.MangaController +import eu.kanade.tachiyomi.util.system.copyToClipboard import exh.metadata.metadata.HBrowseSearchMetadata import exh.ui.metadata.MetadataViewController import kotlinx.coroutines.CoroutineScope @@ -16,6 +17,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.android.view.clicks +import reactivecircus.flowbinding.android.view.longClicks class HBrowseDescriptionAdapter( private val controller: MangaController @@ -43,6 +45,15 @@ class HBrowseDescriptionAdapter( binding.pages.text = itemView.resources.getQuantityString(R.plurals.num_pages, meta.length ?: 0, meta.length ?: 0) + binding.pages.longClicks() + .onEach { + itemView.context.copyToClipboard( + binding.pages.text.toString(), + binding.pages.text.toString() + ) + } + .launchIn(scope) + binding.moreInfo.clicks() .onEach { controller.router?.pushController( diff --git a/app/src/main/java/exh/ui/metadata/adapters/HentaiCafeDescriptionAdapter.kt b/app/src/main/java/exh/ui/metadata/adapters/HentaiCafeDescriptionAdapter.kt index bb36cb2c9..b4f93f012 100644 --- a/app/src/main/java/exh/ui/metadata/adapters/HentaiCafeDescriptionAdapter.kt +++ b/app/src/main/java/exh/ui/metadata/adapters/HentaiCafeDescriptionAdapter.kt @@ -8,6 +8,7 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.databinding.DescriptionAdapterHcBinding import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction import eu.kanade.tachiyomi.ui.manga.MangaController +import eu.kanade.tachiyomi.util.system.copyToClipboard import exh.metadata.metadata.HentaiCafeSearchMetadata import exh.ui.metadata.MetadataViewController import kotlinx.coroutines.CoroutineScope @@ -16,6 +17,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.android.view.clicks +import reactivecircus.flowbinding.android.view.longClicks class HentaiCafeDescriptionAdapter( private val controller: MangaController @@ -43,6 +45,15 @@ class HentaiCafeDescriptionAdapter( binding.artist.text = meta.artist ?: itemView.context.getString(R.string.unknown) + binding.artist.longClicks() + .onEach { + itemView.context.copyToClipboard( + binding.artist.text.toString(), + binding.artist.text.toString() + ) + } + .launchIn(scope) + binding.moreInfo.clicks() .onEach { controller.router?.pushController( diff --git a/app/src/main/java/exh/ui/metadata/adapters/HitomiDescriptionAdapter.kt b/app/src/main/java/exh/ui/metadata/adapters/HitomiDescriptionAdapter.kt index 1b160d573..c711c61c8 100644 --- a/app/src/main/java/exh/ui/metadata/adapters/HitomiDescriptionAdapter.kt +++ b/app/src/main/java/exh/ui/metadata/adapters/HitomiDescriptionAdapter.kt @@ -9,6 +9,7 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.databinding.DescriptionAdapterHiBinding import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction import eu.kanade.tachiyomi.ui.manga.MangaController +import eu.kanade.tachiyomi.util.system.copyToClipboard import exh.metadata.EX_DATE_FORMAT import exh.metadata.metadata.HitomiSearchMetadata import exh.ui.metadata.MetadataViewController @@ -20,6 +21,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.android.view.clicks +import reactivecircus.flowbinding.android.view.longClicks class HitomiDescriptionAdapter( private val controller: MangaController @@ -71,6 +73,22 @@ class HitomiDescriptionAdapter( binding.group.text = meta.group ?: itemView.context.getString(R.string.unknown) binding.language.text = meta.language ?: itemView.context.getString(R.string.unknown) + listOf( + binding.genre, + binding.group, + binding.language, + binding.whenPosted + ).forEach { textView -> + textView.longClicks() + .onEach { + itemView.context.copyToClipboard( + textView.text.toString(), + textView.text.toString() + ) + } + .launchIn(scope) + } + binding.moreInfo.clicks() .onEach { controller.router?.pushController( diff --git a/app/src/main/java/exh/ui/metadata/adapters/NHentaiDescriptionAdapter.kt b/app/src/main/java/exh/ui/metadata/adapters/NHentaiDescriptionAdapter.kt index 5db683c07..99d65ca84 100644 --- a/app/src/main/java/exh/ui/metadata/adapters/NHentaiDescriptionAdapter.kt +++ b/app/src/main/java/exh/ui/metadata/adapters/NHentaiDescriptionAdapter.kt @@ -10,6 +10,7 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.databinding.DescriptionAdapterNhBinding import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction import eu.kanade.tachiyomi.ui.manga.MangaController +import eu.kanade.tachiyomi.util.system.copyToClipboard import eu.kanade.tachiyomi.util.system.getResourceColor import exh.metadata.EX_DATE_FORMAT import exh.metadata.metadata.NHentaiSearchMetadata @@ -22,6 +23,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.android.view.clicks +import reactivecircus.flowbinding.android.view.longClicks class NHentaiDescriptionAdapter( private val controller: MangaController @@ -90,6 +92,23 @@ class NHentaiDescriptionAdapter( @SuppressLint("SetTextI18n") binding.id.text = "#" + (meta.nhId ?: 0) + listOf( + binding.favorites, + binding.genre, + binding.id, + binding.pages, + binding.whenPosted + ).forEach { textView -> + textView.longClicks() + .onEach { + itemView.context.copyToClipboard( + textView.text.toString(), + textView.text.toString() + ) + } + .launchIn(scope) + } + binding.moreInfo.clicks() .onEach { controller.router?.pushController( diff --git a/app/src/main/java/exh/ui/metadata/adapters/PervEdenDescriptionAdapter.kt b/app/src/main/java/exh/ui/metadata/adapters/PervEdenDescriptionAdapter.kt index d8ec1a69a..81ac3b90a 100644 --- a/app/src/main/java/exh/ui/metadata/adapters/PervEdenDescriptionAdapter.kt +++ b/app/src/main/java/exh/ui/metadata/adapters/PervEdenDescriptionAdapter.kt @@ -9,6 +9,7 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.databinding.DescriptionAdapterPeBinding import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction import eu.kanade.tachiyomi.ui.manga.MangaController +import eu.kanade.tachiyomi.util.system.copyToClipboard import exh.metadata.metadata.PervEdenSearchMetadata import exh.ui.metadata.MetadataViewController import exh.util.SourceTagsUtil @@ -20,6 +21,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.android.view.clicks +import reactivecircus.flowbinding.android.view.longClicks class PervEdenDescriptionAdapter( private val controller: MangaController @@ -85,6 +87,21 @@ class PervEdenDescriptionAdapter( binding.ratingBar.rating = meta.rating ?: 0F binding.rating.text = itemView.context.getString(R.string.rating_view_no_count, itemView.context.getString(name), (meta.rating ?: 0F).toString()) + listOf( + binding.genre, + binding.language, + binding.rating + ).forEach { textView -> + textView.longClicks() + .onEach { + itemView.context.copyToClipboard( + textView.text.toString(), + textView.text.toString() + ) + } + .launchIn(scope) + } + binding.moreInfo.clicks() .onEach { controller.router?.pushController( diff --git a/app/src/main/java/exh/ui/metadata/adapters/PururinDescriptionAdapter.kt b/app/src/main/java/exh/ui/metadata/adapters/PururinDescriptionAdapter.kt index 1c62c198c..3943a186e 100644 --- a/app/src/main/java/exh/ui/metadata/adapters/PururinDescriptionAdapter.kt +++ b/app/src/main/java/exh/ui/metadata/adapters/PururinDescriptionAdapter.kt @@ -9,6 +9,7 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.databinding.DescriptionAdapterPuBinding import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction import eu.kanade.tachiyomi.ui.manga.MangaController +import eu.kanade.tachiyomi.util.system.copyToClipboard import exh.metadata.metadata.PururinSearchMetadata import exh.metadata.metadata.PururinSearchMetadata.Companion.TAG_NAMESPACE_CATEGORY import exh.ui.metadata.MetadataViewController @@ -20,6 +21,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.android.view.clicks +import reactivecircus.flowbinding.android.view.longClicks class PururinDescriptionAdapter( private val controller: MangaController @@ -89,6 +91,23 @@ class PururinDescriptionAdapter( itemView.context.getString(R.string.rating_view_no_count, itemView.context.getString(name), (ratingFloat ?: 0F).toString()) } + listOf( + binding.genre, + binding.pages, + binding.rating, + binding.size, + binding.uploader + ).forEach { textView -> + textView.longClicks() + .onEach { + itemView.context.copyToClipboard( + textView.text.toString(), + textView.text.toString() + ) + } + .launchIn(scope) + } + binding.moreInfo.clicks() .onEach { controller.router?.pushController( diff --git a/app/src/main/java/exh/ui/metadata/adapters/TsuminoDescriptionAdapter.kt b/app/src/main/java/exh/ui/metadata/adapters/TsuminoDescriptionAdapter.kt index cde81acae..48f05de39 100644 --- a/app/src/main/java/exh/ui/metadata/adapters/TsuminoDescriptionAdapter.kt +++ b/app/src/main/java/exh/ui/metadata/adapters/TsuminoDescriptionAdapter.kt @@ -9,6 +9,7 @@ import eu.kanade.tachiyomi.R import eu.kanade.tachiyomi.databinding.DescriptionAdapterTsBinding import eu.kanade.tachiyomi.ui.base.controller.withFadeTransaction import eu.kanade.tachiyomi.ui.manga.MangaController +import eu.kanade.tachiyomi.util.system.copyToClipboard import eu.kanade.tachiyomi.util.system.getResourceColor import exh.metadata.metadata.TsuminoSearchMetadata import exh.ui.metadata.MetadataViewController @@ -21,6 +22,7 @@ import kotlinx.coroutines.Job import kotlinx.coroutines.flow.launchIn import kotlinx.coroutines.flow.onEach import reactivecircus.flowbinding.android.view.clicks +import reactivecircus.flowbinding.android.view.longClicks class TsuminoDescriptionAdapter( private val controller: MangaController @@ -94,6 +96,24 @@ class TsuminoDescriptionAdapter( itemView.context.getString(R.string.rating_view_no_count, itemView.context.getString(name), (meta.averageRating ?: 0F).toString()) } + listOf( + binding.favorites, + binding.genre, + binding.pages, + binding.rating, + binding.uploader, + binding.whenPosted + ).forEach { textView -> + textView.longClicks() + .onEach { + itemView.context.copyToClipboard( + textView.text.toString(), + textView.text.toString() + ) + } + .launchIn(scope) + } + binding.moreInfo.clicks() .onEach { controller.router?.pushController(