|
|
|
@ -2,6 +2,7 @@ package org.koitharu.kotatsu.settings.sources.adapter
|
|
|
|
|
|
|
|
|
|
|
|
import android.view.View
|
|
|
|
import android.view.View
|
|
|
|
import androidx.appcompat.widget.PopupMenu
|
|
|
|
import androidx.appcompat.widget.PopupMenu
|
|
|
|
|
|
|
|
import androidx.core.content.ContextCompat
|
|
|
|
import androidx.core.content.pm.ShortcutManagerCompat
|
|
|
|
import androidx.core.content.pm.ShortcutManagerCompat
|
|
|
|
import androidx.core.view.isGone
|
|
|
|
import androidx.core.view.isGone
|
|
|
|
import androidx.core.view.isVisible
|
|
|
|
import androidx.core.view.isVisible
|
|
|
|
@ -16,49 +17,14 @@ import org.koitharu.kotatsu.core.parser.favicon.faviconUri
|
|
|
|
import org.koitharu.kotatsu.core.ui.image.FaviconDrawable
|
|
|
|
import org.koitharu.kotatsu.core.ui.image.FaviconDrawable
|
|
|
|
import org.koitharu.kotatsu.core.ui.list.OnTipCloseListener
|
|
|
|
import org.koitharu.kotatsu.core.ui.list.OnTipCloseListener
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.crossfade
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.crossfade
|
|
|
|
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.drawableStart
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.enqueueWith
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.enqueueWith
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.newImageRequest
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.newImageRequest
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.source
|
|
|
|
import org.koitharu.kotatsu.core.util.ext.source
|
|
|
|
import org.koitharu.kotatsu.databinding.ItemSourceConfigBinding
|
|
|
|
import org.koitharu.kotatsu.databinding.ItemSourceConfigBinding
|
|
|
|
import org.koitharu.kotatsu.databinding.ItemSourceConfigCheckableBinding
|
|
|
|
|
|
|
|
import org.koitharu.kotatsu.databinding.ItemTipBinding
|
|
|
|
import org.koitharu.kotatsu.databinding.ItemTipBinding
|
|
|
|
import org.koitharu.kotatsu.settings.sources.model.SourceConfigItem
|
|
|
|
import org.koitharu.kotatsu.settings.sources.model.SourceConfigItem
|
|
|
|
|
|
|
|
|
|
|
|
fun sourceConfigItemCheckableDelegate(
|
|
|
|
|
|
|
|
listener: SourceConfigListener,
|
|
|
|
|
|
|
|
coil: ImageLoader,
|
|
|
|
|
|
|
|
lifecycleOwner: LifecycleOwner,
|
|
|
|
|
|
|
|
) = adapterDelegateViewBinding<SourceConfigItem.SourceItem, SourceConfigItem, ItemSourceConfigCheckableBinding>(
|
|
|
|
|
|
|
|
{ layoutInflater, parent ->
|
|
|
|
|
|
|
|
ItemSourceConfigCheckableBinding.inflate(
|
|
|
|
|
|
|
|
layoutInflater,
|
|
|
|
|
|
|
|
parent,
|
|
|
|
|
|
|
|
false,
|
|
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
},
|
|
|
|
|
|
|
|
) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
binding.switchToggle.setOnCheckedChangeListener { _, isChecked ->
|
|
|
|
|
|
|
|
listener.onItemEnabledChanged(item, isChecked)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
bind {
|
|
|
|
|
|
|
|
binding.textViewTitle.text = item.source.getTitle(context)
|
|
|
|
|
|
|
|
binding.switchToggle.isChecked = item.isEnabled
|
|
|
|
|
|
|
|
binding.switchToggle.isEnabled = item.isAvailable
|
|
|
|
|
|
|
|
binding.textViewDescription.text = item.source.getSummary(context)
|
|
|
|
|
|
|
|
val fallbackIcon = FaviconDrawable(context, R.style.FaviconDrawable_Small, item.source.name)
|
|
|
|
|
|
|
|
binding.imageViewIcon.newImageRequest(lifecycleOwner, item.source.faviconUri())?.run {
|
|
|
|
|
|
|
|
crossfade(context)
|
|
|
|
|
|
|
|
error(fallbackIcon)
|
|
|
|
|
|
|
|
placeholder(fallbackIcon)
|
|
|
|
|
|
|
|
fallback(fallbackIcon)
|
|
|
|
|
|
|
|
source(item.source)
|
|
|
|
|
|
|
|
enqueueWith(coil)
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
fun sourceConfigItemDelegate2(
|
|
|
|
fun sourceConfigItemDelegate2(
|
|
|
|
listener: SourceConfigListener,
|
|
|
|
listener: SourceConfigListener,
|
|
|
|
coil: ImageLoader,
|
|
|
|
coil: ImageLoader,
|
|
|
|
@ -73,6 +39,7 @@ fun sourceConfigItemDelegate2(
|
|
|
|
},
|
|
|
|
},
|
|
|
|
) {
|
|
|
|
) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val iconPinned = ContextCompat.getDrawable(context, R.drawable.ic_pin_small)
|
|
|
|
val eventListener = View.OnClickListener { v ->
|
|
|
|
val eventListener = View.OnClickListener { v ->
|
|
|
|
when (v.id) {
|
|
|
|
when (v.id) {
|
|
|
|
R.id.imageView_add -> listener.onItemEnabledChanged(item, true)
|
|
|
|
R.id.imageView_add -> listener.onItemEnabledChanged(item, true)
|
|
|
|
@ -89,6 +56,7 @@ fun sourceConfigItemDelegate2(
|
|
|
|
binding.imageViewAdd.isGone = item.isEnabled || !item.isAvailable
|
|
|
|
binding.imageViewAdd.isGone = item.isEnabled || !item.isAvailable
|
|
|
|
binding.imageViewRemove.isVisible = item.isEnabled
|
|
|
|
binding.imageViewRemove.isVisible = item.isEnabled
|
|
|
|
binding.imageViewMenu.isVisible = item.isEnabled
|
|
|
|
binding.imageViewMenu.isVisible = item.isEnabled
|
|
|
|
|
|
|
|
binding.textViewTitle.drawableStart = if (item.isPinned) iconPinned else null
|
|
|
|
binding.textViewDescription.text = item.source.getSummary(context)
|
|
|
|
binding.textViewDescription.text = item.source.getSummary(context)
|
|
|
|
val fallbackIcon = FaviconDrawable(context, R.style.FaviconDrawable_Small, item.source.name)
|
|
|
|
val fallbackIcon = FaviconDrawable(context, R.style.FaviconDrawable_Small, item.source.name)
|
|
|
|
binding.imageViewIcon.newImageRequest(lifecycleOwner, item.source.faviconUri())?.run {
|
|
|
|
binding.imageViewIcon.newImageRequest(lifecycleOwner, item.source.faviconUri())?.run {
|
|
|
|
@ -132,12 +100,15 @@ private fun showSourceMenu(
|
|
|
|
menu.inflate(R.menu.popup_source_config)
|
|
|
|
menu.inflate(R.menu.popup_source_config)
|
|
|
|
menu.menu.findItem(R.id.action_shortcut)
|
|
|
|
menu.menu.findItem(R.id.action_shortcut)
|
|
|
|
?.isVisible = ShortcutManagerCompat.isRequestPinShortcutSupported(anchor.context)
|
|
|
|
?.isVisible = ShortcutManagerCompat.isRequestPinShortcutSupported(anchor.context)
|
|
|
|
|
|
|
|
menu.menu.findItem(R.id.action_pin)?.isVisible = item.isEnabled
|
|
|
|
|
|
|
|
menu.menu.findItem(R.id.action_pin)?.isChecked = item.isPinned
|
|
|
|
menu.menu.findItem(R.id.action_lift)?.isVisible = item.isDraggable
|
|
|
|
menu.menu.findItem(R.id.action_lift)?.isVisible = item.isDraggable
|
|
|
|
menu.setOnMenuItemClickListener {
|
|
|
|
menu.setOnMenuItemClickListener {
|
|
|
|
when (it.itemId) {
|
|
|
|
when (it.itemId) {
|
|
|
|
R.id.action_settings -> listener.onItemSettingsClick(item)
|
|
|
|
R.id.action_settings -> listener.onItemSettingsClick(item)
|
|
|
|
R.id.action_lift -> listener.onItemLiftClick(item)
|
|
|
|
R.id.action_lift -> listener.onItemLiftClick(item)
|
|
|
|
R.id.action_shortcut -> listener.onItemShortcutClick(item)
|
|
|
|
R.id.action_shortcut -> listener.onItemShortcutClick(item)
|
|
|
|
|
|
|
|
R.id.action_pin -> listener.onItemPinClick(item)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
true
|
|
|
|
true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|