Fix long tap on old Android versions (close #1478)

master
Koitharu 10 months ago
parent 37f9c4b9f6
commit 9a1bb6f6fc
Signed by: Koitharu
GPG Key ID: 676DEE768C17A9D7

@ -175,6 +175,14 @@ fun View.setOnContextClickListenerCompat(listener: OnContextClickListenerCompat)
}
}
fun View.setTooltipCompat(tooltip: CharSequence?) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
tooltipText = tooltip
} else if (!isLongClickable) { // don't use TooltipCompat if has a LongClickListener
TooltipCompat.setTooltipText(this, tooltip)
}
}
val Toolbar.menuView: ActionMenuView?
get() {
menu // to call ensureMenu()
@ -201,7 +209,7 @@ fun Chip.setProgressIcon() {
fun View.setContentDescriptionAndTooltip(@StringRes resId: Int) {
val text = resources.getString(resId)
contentDescription = text
TooltipCompat.setTooltipText(this, text)
setTooltipCompat(text)
}
fun View.getWindowBounds(): Rect {

@ -80,6 +80,7 @@ import org.koitharu.kotatsu.core.util.ext.mangaSourceExtra
import org.koitharu.kotatsu.core.util.ext.observe
import org.koitharu.kotatsu.core.util.ext.observeEvent
import org.koitharu.kotatsu.core.util.ext.parentView
import org.koitharu.kotatsu.core.util.ext.setTooltipCompat
import org.koitharu.kotatsu.core.util.ext.start
import org.koitharu.kotatsu.core.util.ext.textAndVisible
import org.koitharu.kotatsu.core.util.ext.toUriOrNull
@ -455,7 +456,7 @@ class DetailsActivity :
textViewSourceLabel.isVisible = false
} else {
textViewSource.textAndVisible = manga.source.getTitle(this@DetailsActivity)
TooltipCompat.setTooltipText(textViewSource, manga.source.getSummary(this@DetailsActivity))
textViewSource.setTooltipCompat(manga.source.getSummary(this@DetailsActivity))
textViewSourceLabel.isVisible = textViewSource.isVisible == true
}
val faviconPlaceholderFactory = FaviconDrawable.Factory(R.style.FaviconDrawable_Chip)

@ -1,12 +1,12 @@
package org.koitharu.kotatsu.details.ui.adapter
import android.graphics.Typeface
import androidx.appcompat.widget.TooltipCompat
import androidx.core.view.isVisible
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
import org.koitharu.kotatsu.core.ui.list.AdapterDelegateClickListenerAdapter
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
import org.koitharu.kotatsu.core.util.ext.getThemeColorStateList
import org.koitharu.kotatsu.core.util.ext.setTooltipCompat
import org.koitharu.kotatsu.databinding.ItemChapterGridBinding
import org.koitharu.kotatsu.details.ui.model.ChapterListItem
import org.koitharu.kotatsu.list.ui.model.ListModel
@ -23,7 +23,7 @@ fun chapterGridItemAD(
bind { payloads ->
if (payloads.isEmpty()) {
binding.textViewTitle.text = item.chapter.numberString() ?: "?"
TooltipCompat.setTooltipText(itemView, item.chapter.title)
itemView.setTooltipCompat(item.chapter.title)
}
binding.imageViewNew.isVisible = item.isNew
binding.imageViewCurrent.isVisible = item.isCurrent

@ -15,6 +15,7 @@ import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
import org.koitharu.kotatsu.core.util.ext.drawableStart
import org.koitharu.kotatsu.core.util.ext.recyclerView
import org.koitharu.kotatsu.core.util.ext.setProgressIcon
import org.koitharu.kotatsu.core.util.ext.setTooltipCompat
import org.koitharu.kotatsu.core.util.ext.textAndVisible
import org.koitharu.kotatsu.databinding.ItemExploreButtonsBinding
import org.koitharu.kotatsu.databinding.ItemExploreSourceGridBinding
@ -126,8 +127,7 @@ fun exploreSourceGridItemAD(
bind {
val title = item.source.getTitle(context)
TooltipCompat.setTooltipText(
itemView,
itemView.setTooltipCompat(
buildSpannedString {
bold {
append(title)

@ -1,11 +1,11 @@
package org.koitharu.kotatsu.list.ui.adapter
import androidx.appcompat.widget.TooltipCompat
import androidx.core.view.isVisible
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.ui.list.AdapterDelegateClickListenerAdapter
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
import org.koitharu.kotatsu.core.util.ext.setTooltipCompat
import org.koitharu.kotatsu.databinding.ItemMangaGridBinding
import org.koitharu.kotatsu.list.ui.ListModelDiffCallback.Companion.PAYLOAD_PROGRESS_CHANGED
import org.koitharu.kotatsu.list.ui.model.ListModel
@ -24,7 +24,7 @@ fun mangaGridItemAD(
sizeResolver.attachToView(itemView, binding.textViewTitle, binding.progressView)
bind { payloads ->
TooltipCompat.setTooltipText(itemView, item.getSummary(context))
itemView.setTooltipCompat(item.getSummary(context))
binding.textViewTitle.text = item.title
binding.progressView.setProgress(item.progress, PAYLOAD_PROGRESS_CHANGED in payloads)
with(binding.iconsView) {

@ -5,6 +5,7 @@ import androidx.core.view.isVisible
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
import org.koitharu.kotatsu.core.ui.list.AdapterDelegateClickListenerAdapter
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
import org.koitharu.kotatsu.core.util.ext.setTooltipCompat
import org.koitharu.kotatsu.core.util.ext.textAndVisible
import org.koitharu.kotatsu.databinding.ItemMangaListBinding
import org.koitharu.kotatsu.list.ui.model.ListModel
@ -20,7 +21,7 @@ fun mangaListItemAD(
AdapterDelegateClickListenerAdapter(this, clickListener, MangaCompactListModel::manga).attach(itemView)
bind {
TooltipCompat.setTooltipText(itemView, item.getSummary(context))
itemView.setTooltipCompat(item.getSummary(context))
binding.textViewTitle.text = item.title
binding.textViewSubtitle.textAndVisible = item.subtitle
binding.imageViewCover.setImageAsync(item.coverUrl, item.manga)

@ -24,6 +24,7 @@ import org.koitharu.kotatsu.core.prefs.ReaderControl
import org.koitharu.kotatsu.core.util.ext.hasVisibleChildren
import org.koitharu.kotatsu.core.util.ext.isRtl
import org.koitharu.kotatsu.core.util.ext.setContentDescriptionAndTooltip
import org.koitharu.kotatsu.core.util.ext.setTooltipCompat
import org.koitharu.kotatsu.core.util.ext.setValueRounded
import org.koitharu.kotatsu.databinding.LayoutReaderActionsBinding
import org.koitharu.kotatsu.details.ui.pager.ChaptersPagesSheet
@ -254,7 +255,7 @@ class ReaderActionsView @JvmOverloads constructor(
private fun Button.initAction() {
setOnClickListener(this@ReaderActionsView)
setOnLongClickListener(this@ReaderActionsView)
TooltipCompat.setTooltipText(this, contentDescription)
setTooltipCompat(contentDescription)
}
private fun isAutoRotationEnabled(): Boolean = Settings.System.getInt(

@ -10,6 +10,7 @@ import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.ui.list.decor.SpacingItemDecoration
import org.koitharu.kotatsu.core.util.RecyclerViewScrollCallback
import org.koitharu.kotatsu.core.util.ext.setTooltipCompat
import org.koitharu.kotatsu.databinding.ItemSearchSuggestionMangaGridBinding
import org.koitharu.kotatsu.parsers.model.Manga
import org.koitharu.kotatsu.search.ui.suggestion.SearchSuggestionListener
@ -47,7 +48,7 @@ private fun searchSuggestionMangaGridAD(
}
bind {
TooltipCompat.setTooltipText(itemView, item.title)
itemView.setTooltipCompat(item.title)
binding.imageViewCover.setImageAsync(item.coverUrl, item.source)
binding.textViewTitle.text = item.title
}

@ -1,12 +1,12 @@
package org.koitharu.kotatsu.settings.storage.directories
import androidx.appcompat.widget.TooltipCompat
import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
import org.koitharu.kotatsu.R
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
import org.koitharu.kotatsu.core.util.ext.drawableStart
import org.koitharu.kotatsu.core.util.ext.setTooltipCompat
import org.koitharu.kotatsu.core.util.ext.textAndVisible
import org.koitharu.kotatsu.databinding.ItemStorageConfigBinding
import org.koitharu.kotatsu.settings.storage.DirectoryModel
@ -18,7 +18,7 @@ fun directoryConfigAD(
) {
binding.buttonRemove.setOnClickListener { v -> clickListener.onItemClick(item, v) }
TooltipCompat.setTooltipText(binding.buttonRemove, binding.buttonRemove.contentDescription)
binding.buttonRemove.setTooltipCompat(binding.buttonRemove.contentDescription)
bind {
binding.textViewTitle.text = item.title ?: getString(item.titleRes)

Loading…
Cancel
Save