Add functionality to expand manga title on click

master
Mac135135 2 years ago committed by Koitharu
parent 81aac0d431
commit 6048cb917e

@ -3,6 +3,11 @@ package org.koitharu.kotatsu.details.ui
import android.content.Context import android.content.Context
import android.content.Intent import android.content.Intent
import android.graphics.Color 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.os.Bundle
import android.text.style.DynamicDrawableSpan import android.text.style.DynamicDrawableSpan
import android.text.style.ForegroundColorSpan import android.text.style.ForegroundColorSpan
@ -123,7 +128,7 @@ class DetailsActivity :
lateinit var tagHighlighter: ListExtraProvider lateinit var tagHighlighter: ListExtraProvider
private val viewModel: DetailsViewModel by viewModels() private val viewModel: DetailsViewModel by viewModels()
private lateinit var gestureDetector: GestureDetector
private lateinit var menuProvider: DetailsMenuProvider private lateinit var menuProvider: DetailsMenuProvider
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@ -157,6 +162,32 @@ class DetailsActivity :
viewBinding.containerBottomSheet?.let { sheet -> viewBinding.containerBottomSheet?.let { sheet ->
onBackPressedDispatcher.addCallback(BottomSheetCollapseCallback(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.details.filterNotNull().observe(this, ::onMangaUpdated)
viewModel.onMangaRemoved.observeEvent(this, ::onMangaRemoved) viewModel.onMangaRemoved.observeEvent(this, ::onMangaRemoved)

Loading…
Cancel
Save