From 6048cb917e29b042bdac1217c78fd55498c0b69c Mon Sep 17 00:00:00 2001 From: Mac135135 Date: Fri, 5 Jul 2024 21:23:15 +0300 Subject: [PATCH] Add functionality to expand manga title on click --- .../kotatsu/details/ui/DetailsActivity.kt | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsActivity.kt b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsActivity.kt index c62e78451..302d60824 100644 --- a/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsActivity.kt +++ b/app/src/main/kotlin/org/koitharu/kotatsu/details/ui/DetailsActivity.kt @@ -3,6 +3,11 @@ package org.koitharu.kotatsu.details.ui import android.content.Context import android.content.Intent import android.graphics.Color +import android.view.MotionEvent +import android.content.ClipData +import android.content.ClipboardManager +import android.view.GestureDetector +import android.view.ViewGroup import android.os.Bundle import android.text.style.DynamicDrawableSpan import android.text.style.ForegroundColorSpan @@ -123,7 +128,7 @@ class DetailsActivity : lateinit var tagHighlighter: ListExtraProvider private val viewModel: DetailsViewModel by viewModels() - + private lateinit var gestureDetector: GestureDetector private lateinit var menuProvider: DetailsMenuProvider override fun onCreate(savedInstanceState: Bundle?) { @@ -157,6 +162,32 @@ class DetailsActivity : viewBinding.containerBottomSheet?.let { sheet -> onBackPressedDispatcher.addCallback(BottomSheetCollapseCallback(sheet)) } + gestureDetector = GestureDetector(this, object : GestureDetector.SimpleOnGestureListener() { + override fun onSingleTapConfirmed(e: MotionEvent): Boolean { + val tv = viewBinding.textViewTitle + TransitionManager.beginDelayedTransition(tv.parent as ViewGroup) + if (tv.maxLines == 5) { + tv.maxLines = 20 // Expand text + } else { + tv.maxLines = 5 // Collapse text + } + return true + } + + override fun onLongPress(e: MotionEvent) { + val clipboardManager = getSystemService(Context.CLIPBOARD_SERVICE) as ClipboardManager + val clip = ClipData.newPlainText("copied text", viewBinding.textViewTitle.text) + clipboardManager.setPrimaryClip(clip) + Toast.makeText(this@DetailsActivity, "Text copied", Toast.LENGTH_SHORT).show() + } + }) + + viewBinding.textViewTitle.setOnTouchListener { _, motionEvent -> + gestureDetector.onTouchEvent(motionEvent) + true + } + + viewModel.details.filterNotNull().observe(this, ::onMangaUpdated) viewModel.onMangaRemoved.observeEvent(this, ::onMangaRemoved)