Fix long tap on old Android versions (close #1478)
This commit is contained in:
@@ -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?
|
val Toolbar.menuView: ActionMenuView?
|
||||||
get() {
|
get() {
|
||||||
menu // to call ensureMenu()
|
menu // to call ensureMenu()
|
||||||
@@ -201,7 +209,7 @@ fun Chip.setProgressIcon() {
|
|||||||
fun View.setContentDescriptionAndTooltip(@StringRes resId: Int) {
|
fun View.setContentDescriptionAndTooltip(@StringRes resId: Int) {
|
||||||
val text = resources.getString(resId)
|
val text = resources.getString(resId)
|
||||||
contentDescription = text
|
contentDescription = text
|
||||||
TooltipCompat.setTooltipText(this, text)
|
setTooltipCompat(text)
|
||||||
}
|
}
|
||||||
|
|
||||||
fun View.getWindowBounds(): Rect {
|
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.observe
|
||||||
import org.koitharu.kotatsu.core.util.ext.observeEvent
|
import org.koitharu.kotatsu.core.util.ext.observeEvent
|
||||||
import org.koitharu.kotatsu.core.util.ext.parentView
|
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.start
|
||||||
import org.koitharu.kotatsu.core.util.ext.textAndVisible
|
import org.koitharu.kotatsu.core.util.ext.textAndVisible
|
||||||
import org.koitharu.kotatsu.core.util.ext.toUriOrNull
|
import org.koitharu.kotatsu.core.util.ext.toUriOrNull
|
||||||
@@ -455,7 +456,7 @@ class DetailsActivity :
|
|||||||
textViewSourceLabel.isVisible = false
|
textViewSourceLabel.isVisible = false
|
||||||
} else {
|
} else {
|
||||||
textViewSource.textAndVisible = manga.source.getTitle(this@DetailsActivity)
|
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
|
textViewSourceLabel.isVisible = textViewSource.isVisible == true
|
||||||
}
|
}
|
||||||
val faviconPlaceholderFactory = FaviconDrawable.Factory(R.style.FaviconDrawable_Chip)
|
val faviconPlaceholderFactory = FaviconDrawable.Factory(R.style.FaviconDrawable_Chip)
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
package org.koitharu.kotatsu.details.ui.adapter
|
package org.koitharu.kotatsu.details.ui.adapter
|
||||||
|
|
||||||
import android.graphics.Typeface
|
import android.graphics.Typeface
|
||||||
import androidx.appcompat.widget.TooltipCompat
|
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
|
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
|
||||||
import org.koitharu.kotatsu.core.ui.list.AdapterDelegateClickListenerAdapter
|
import org.koitharu.kotatsu.core.ui.list.AdapterDelegateClickListenerAdapter
|
||||||
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
|
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
|
||||||
import org.koitharu.kotatsu.core.util.ext.getThemeColorStateList
|
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.databinding.ItemChapterGridBinding
|
||||||
import org.koitharu.kotatsu.details.ui.model.ChapterListItem
|
import org.koitharu.kotatsu.details.ui.model.ChapterListItem
|
||||||
import org.koitharu.kotatsu.list.ui.model.ListModel
|
import org.koitharu.kotatsu.list.ui.model.ListModel
|
||||||
@@ -23,7 +23,7 @@ fun chapterGridItemAD(
|
|||||||
bind { payloads ->
|
bind { payloads ->
|
||||||
if (payloads.isEmpty()) {
|
if (payloads.isEmpty()) {
|
||||||
binding.textViewTitle.text = item.chapter.numberString() ?: "?"
|
binding.textViewTitle.text = item.chapter.numberString() ?: "?"
|
||||||
TooltipCompat.setTooltipText(itemView, item.chapter.title)
|
itemView.setTooltipCompat(item.chapter.title)
|
||||||
}
|
}
|
||||||
binding.imageViewNew.isVisible = item.isNew
|
binding.imageViewNew.isVisible = item.isNew
|
||||||
binding.imageViewCurrent.isVisible = item.isCurrent
|
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.drawableStart
|
||||||
import org.koitharu.kotatsu.core.util.ext.recyclerView
|
import org.koitharu.kotatsu.core.util.ext.recyclerView
|
||||||
import org.koitharu.kotatsu.core.util.ext.setProgressIcon
|
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.core.util.ext.textAndVisible
|
||||||
import org.koitharu.kotatsu.databinding.ItemExploreButtonsBinding
|
import org.koitharu.kotatsu.databinding.ItemExploreButtonsBinding
|
||||||
import org.koitharu.kotatsu.databinding.ItemExploreSourceGridBinding
|
import org.koitharu.kotatsu.databinding.ItemExploreSourceGridBinding
|
||||||
@@ -126,8 +127,7 @@ fun exploreSourceGridItemAD(
|
|||||||
|
|
||||||
bind {
|
bind {
|
||||||
val title = item.source.getTitle(context)
|
val title = item.source.getTitle(context)
|
||||||
TooltipCompat.setTooltipText(
|
itemView.setTooltipCompat(
|
||||||
itemView,
|
|
||||||
buildSpannedString {
|
buildSpannedString {
|
||||||
bold {
|
bold {
|
||||||
append(title)
|
append(title)
|
||||||
|
|||||||
@@ -1,11 +1,11 @@
|
|||||||
package org.koitharu.kotatsu.list.ui.adapter
|
package org.koitharu.kotatsu.list.ui.adapter
|
||||||
|
|
||||||
import androidx.appcompat.widget.TooltipCompat
|
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
|
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
|
||||||
import org.koitharu.kotatsu.R
|
import org.koitharu.kotatsu.R
|
||||||
import org.koitharu.kotatsu.core.ui.list.AdapterDelegateClickListenerAdapter
|
import org.koitharu.kotatsu.core.ui.list.AdapterDelegateClickListenerAdapter
|
||||||
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
|
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.databinding.ItemMangaGridBinding
|
||||||
import org.koitharu.kotatsu.list.ui.ListModelDiffCallback.Companion.PAYLOAD_PROGRESS_CHANGED
|
import org.koitharu.kotatsu.list.ui.ListModelDiffCallback.Companion.PAYLOAD_PROGRESS_CHANGED
|
||||||
import org.koitharu.kotatsu.list.ui.model.ListModel
|
import org.koitharu.kotatsu.list.ui.model.ListModel
|
||||||
@@ -24,7 +24,7 @@ fun mangaGridItemAD(
|
|||||||
sizeResolver.attachToView(itemView, binding.textViewTitle, binding.progressView)
|
sizeResolver.attachToView(itemView, binding.textViewTitle, binding.progressView)
|
||||||
|
|
||||||
bind { payloads ->
|
bind { payloads ->
|
||||||
TooltipCompat.setTooltipText(itemView, item.getSummary(context))
|
itemView.setTooltipCompat(item.getSummary(context))
|
||||||
binding.textViewTitle.text = item.title
|
binding.textViewTitle.text = item.title
|
||||||
binding.progressView.setProgress(item.progress, PAYLOAD_PROGRESS_CHANGED in payloads)
|
binding.progressView.setProgress(item.progress, PAYLOAD_PROGRESS_CHANGED in payloads)
|
||||||
with(binding.iconsView) {
|
with(binding.iconsView) {
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ import androidx.core.view.isVisible
|
|||||||
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
|
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
|
||||||
import org.koitharu.kotatsu.core.ui.list.AdapterDelegateClickListenerAdapter
|
import org.koitharu.kotatsu.core.ui.list.AdapterDelegateClickListenerAdapter
|
||||||
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
|
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.core.util.ext.textAndVisible
|
||||||
import org.koitharu.kotatsu.databinding.ItemMangaListBinding
|
import org.koitharu.kotatsu.databinding.ItemMangaListBinding
|
||||||
import org.koitharu.kotatsu.list.ui.model.ListModel
|
import org.koitharu.kotatsu.list.ui.model.ListModel
|
||||||
@@ -20,7 +21,7 @@ fun mangaListItemAD(
|
|||||||
AdapterDelegateClickListenerAdapter(this, clickListener, MangaCompactListModel::manga).attach(itemView)
|
AdapterDelegateClickListenerAdapter(this, clickListener, MangaCompactListModel::manga).attach(itemView)
|
||||||
|
|
||||||
bind {
|
bind {
|
||||||
TooltipCompat.setTooltipText(itemView, item.getSummary(context))
|
itemView.setTooltipCompat(item.getSummary(context))
|
||||||
binding.textViewTitle.text = item.title
|
binding.textViewTitle.text = item.title
|
||||||
binding.textViewSubtitle.textAndVisible = item.subtitle
|
binding.textViewSubtitle.textAndVisible = item.subtitle
|
||||||
binding.imageViewCover.setImageAsync(item.coverUrl, item.manga)
|
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.hasVisibleChildren
|
||||||
import org.koitharu.kotatsu.core.util.ext.isRtl
|
import org.koitharu.kotatsu.core.util.ext.isRtl
|
||||||
import org.koitharu.kotatsu.core.util.ext.setContentDescriptionAndTooltip
|
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.core.util.ext.setValueRounded
|
||||||
import org.koitharu.kotatsu.databinding.LayoutReaderActionsBinding
|
import org.koitharu.kotatsu.databinding.LayoutReaderActionsBinding
|
||||||
import org.koitharu.kotatsu.details.ui.pager.ChaptersPagesSheet
|
import org.koitharu.kotatsu.details.ui.pager.ChaptersPagesSheet
|
||||||
@@ -254,7 +255,7 @@ class ReaderActionsView @JvmOverloads constructor(
|
|||||||
private fun Button.initAction() {
|
private fun Button.initAction() {
|
||||||
setOnClickListener(this@ReaderActionsView)
|
setOnClickListener(this@ReaderActionsView)
|
||||||
setOnLongClickListener(this@ReaderActionsView)
|
setOnLongClickListener(this@ReaderActionsView)
|
||||||
TooltipCompat.setTooltipText(this, contentDescription)
|
setTooltipCompat(contentDescription)
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun isAutoRotationEnabled(): Boolean = Settings.System.getInt(
|
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.R
|
||||||
import org.koitharu.kotatsu.core.ui.list.decor.SpacingItemDecoration
|
import org.koitharu.kotatsu.core.ui.list.decor.SpacingItemDecoration
|
||||||
import org.koitharu.kotatsu.core.util.RecyclerViewScrollCallback
|
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.databinding.ItemSearchSuggestionMangaGridBinding
|
||||||
import org.koitharu.kotatsu.parsers.model.Manga
|
import org.koitharu.kotatsu.parsers.model.Manga
|
||||||
import org.koitharu.kotatsu.search.ui.suggestion.SearchSuggestionListener
|
import org.koitharu.kotatsu.search.ui.suggestion.SearchSuggestionListener
|
||||||
@@ -47,7 +48,7 @@ private fun searchSuggestionMangaGridAD(
|
|||||||
}
|
}
|
||||||
|
|
||||||
bind {
|
bind {
|
||||||
TooltipCompat.setTooltipText(itemView, item.title)
|
itemView.setTooltipCompat(item.title)
|
||||||
binding.imageViewCover.setImageAsync(item.coverUrl, item.source)
|
binding.imageViewCover.setImageAsync(item.coverUrl, item.source)
|
||||||
binding.textViewTitle.text = item.title
|
binding.textViewTitle.text = item.title
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,12 +1,12 @@
|
|||||||
package org.koitharu.kotatsu.settings.storage.directories
|
package org.koitharu.kotatsu.settings.storage.directories
|
||||||
|
|
||||||
import androidx.appcompat.widget.TooltipCompat
|
|
||||||
import androidx.core.content.ContextCompat
|
import androidx.core.content.ContextCompat
|
||||||
import androidx.core.view.isVisible
|
import androidx.core.view.isVisible
|
||||||
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
|
import com.hannesdorfmann.adapterdelegates4.dsl.adapterDelegateViewBinding
|
||||||
import org.koitharu.kotatsu.R
|
import org.koitharu.kotatsu.R
|
||||||
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
|
import org.koitharu.kotatsu.core.ui.list.OnListItemClickListener
|
||||||
import org.koitharu.kotatsu.core.util.ext.drawableStart
|
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.core.util.ext.textAndVisible
|
||||||
import org.koitharu.kotatsu.databinding.ItemStorageConfigBinding
|
import org.koitharu.kotatsu.databinding.ItemStorageConfigBinding
|
||||||
import org.koitharu.kotatsu.settings.storage.DirectoryModel
|
import org.koitharu.kotatsu.settings.storage.DirectoryModel
|
||||||
@@ -18,7 +18,7 @@ fun directoryConfigAD(
|
|||||||
) {
|
) {
|
||||||
|
|
||||||
binding.buttonRemove.setOnClickListener { v -> clickListener.onItemClick(item, v) }
|
binding.buttonRemove.setOnClickListener { v -> clickListener.onItemClick(item, v) }
|
||||||
TooltipCompat.setTooltipText(binding.buttonRemove, binding.buttonRemove.contentDescription)
|
binding.buttonRemove.setTooltipCompat(binding.buttonRemove.contentDescription)
|
||||||
|
|
||||||
bind {
|
bind {
|
||||||
binding.textViewTitle.text = item.title ?: getString(item.titleRes)
|
binding.textViewTitle.text = item.title ?: getString(item.titleRes)
|
||||||
|
|||||||
Reference in New Issue
Block a user