Rewrite saved searches again, hopefully fix the last few bugs
This commit is contained in:
parent
3e9e42271e
commit
75d5da71f2
@ -0,0 +1,41 @@
|
||||
package eu.kanade.tachiyomi.ui.browse.source.browse
|
||||
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.google.android.material.chip.Chip
|
||||
import eu.kanade.tachiyomi.databinding.SourceFilterSheetSavedSearchesBinding
|
||||
import eu.kanade.tachiyomi.util.view.gone
|
||||
import eu.kanade.tachiyomi.util.view.visible
|
||||
|
||||
class SavedSearchesAdapter(var chips: List<Chip> = emptyList()) :
|
||||
RecyclerView.Adapter<SavedSearchesAdapter.SavedSearchesViewHolder>() {
|
||||
|
||||
private lateinit var binding: SourceFilterSheetSavedSearchesBinding
|
||||
|
||||
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): SavedSearchesViewHolder {
|
||||
binding = SourceFilterSheetSavedSearchesBinding.inflate(LayoutInflater.from(parent.context), parent, false)
|
||||
return SavedSearchesViewHolder(binding.root)
|
||||
}
|
||||
|
||||
override fun getItemCount(): Int = 1
|
||||
|
||||
override fun onBindViewHolder(holder: SavedSearchesViewHolder, position: Int) {
|
||||
holder.bind(chips)
|
||||
}
|
||||
|
||||
inner class SavedSearchesViewHolder(view: View) : RecyclerView.ViewHolder(view) {
|
||||
fun bind(chips: List<Chip> = emptyList()) {
|
||||
binding.savedSearches.removeAllViews()
|
||||
if (chips.isEmpty()) {
|
||||
binding.savedSearchesTitle.gone()
|
||||
} else {
|
||||
binding.savedSearchesTitle.visible()
|
||||
chips.forEach {
|
||||
binding.savedSearches.addView(it)
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
package eu.kanade.tachiyomi.ui.browse.source.browse
|
||||
|
||||
import android.view.View
|
||||
import com.google.android.material.chip.Chip
|
||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||
import eu.kanade.tachiyomi.databinding.SourceFilterSheetSavedSearchesBinding
|
||||
import eu.kanade.tachiyomi.ui.base.holder.BaseFlexibleViewHolder
|
||||
import eu.kanade.tachiyomi.util.view.gone
|
||||
import eu.kanade.tachiyomi.util.view.visible
|
||||
import timber.log.Timber
|
||||
|
||||
class SavedSearchesHolder(
|
||||
view: View,
|
||||
adapter: FlexibleAdapter<SavedSearchesItem>
|
||||
) : BaseFlexibleViewHolder(view, adapter) {
|
||||
|
||||
var binding: SourceFilterSheetSavedSearchesBinding = SourceFilterSheetSavedSearchesBinding.bind(itemView)
|
||||
|
||||
fun setChips(chips: List<Chip> = emptyList()) {
|
||||
Timber.d("Chips set")
|
||||
binding.savedSearches.removeAllViews()
|
||||
if (chips.isEmpty()) {
|
||||
binding.savedSearchesTitle.gone()
|
||||
} else {
|
||||
binding.savedSearchesTitle.visible()
|
||||
}
|
||||
chips.forEach {
|
||||
Timber.d(it.text.toString())
|
||||
binding.savedSearches.addView(it)
|
||||
}
|
||||
}
|
||||
}
|
@ -1,46 +0,0 @@
|
||||
package eu.kanade.tachiyomi.ui.browse.source.browse
|
||||
|
||||
import android.view.View
|
||||
import androidx.recyclerview.widget.RecyclerView
|
||||
import com.google.android.material.chip.Chip
|
||||
import eu.davidea.flexibleadapter.FlexibleAdapter
|
||||
import eu.davidea.flexibleadapter.items.AbstractFlexibleItem
|
||||
import eu.davidea.flexibleadapter.items.IFlexible
|
||||
import eu.kanade.tachiyomi.R
|
||||
|
||||
class SavedSearchesItem(val chips: List<Chip>) :
|
||||
AbstractFlexibleItem<SavedSearchesHolder>() {
|
||||
|
||||
override fun getLayoutRes(): Int {
|
||||
return R.layout.source_filter_sheet_saved_searches
|
||||
}
|
||||
|
||||
override fun isSelectable(): Boolean {
|
||||
return false
|
||||
}
|
||||
|
||||
override fun isSwipeable(): Boolean {
|
||||
return false
|
||||
}
|
||||
|
||||
override fun createViewHolder(view: View, adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>): SavedSearchesHolder {
|
||||
return SavedSearchesHolder(view, adapter as FlexibleAdapter<SavedSearchesItem>)
|
||||
}
|
||||
|
||||
override fun bindViewHolder(
|
||||
adapter: FlexibleAdapter<IFlexible<RecyclerView.ViewHolder>>,
|
||||
holder: SavedSearchesHolder,
|
||||
position: Int,
|
||||
payloads: MutableList<Any?>?
|
||||
) {
|
||||
holder.setChips(chips)
|
||||
}
|
||||
|
||||
override fun equals(other: Any?): Boolean {
|
||||
return (this === other)
|
||||
}
|
||||
|
||||
override fun hashCode(): Int {
|
||||
return this.hashCode()
|
||||
}
|
||||
}
|
@ -81,12 +81,10 @@ class SourceFilterSheet(
|
||||
|
||||
var onSavedSearchDeleteClicked: (Int, String) -> Unit = { _, _ -> }
|
||||
|
||||
var savedSearchesAdapter: FlexibleAdapter<SavedSearchesItem> = FlexibleAdapter<SavedSearchesItem>(listOf(SavedSearchesItem(getChips(searches))))
|
||||
private val savedSearchesAdapter = SavedSearchesAdapter(getSavedSearchesChips(searches))
|
||||
// SY <--
|
||||
|
||||
val adapter: FlexibleAdapter<IFlexible<*>> = FlexibleAdapter<IFlexible<*>>(null)
|
||||
.setDisplayHeadersAtStartUp(true)
|
||||
.setStickyHeaders(true)
|
||||
|
||||
init {
|
||||
// SY -->
|
||||
@ -105,13 +103,14 @@ class SourceFilterSheet(
|
||||
|
||||
// EXH -->
|
||||
fun setSavedSearches(searches: List<EXHSavedSearch>) {
|
||||
val savedSearchesChips = getSavedSearchesChips(searches)
|
||||
savedSearchesAdapter.chips = savedSearchesChips
|
||||
recycler.post {
|
||||
(recycler.findViewHolderForAdapterPosition(0) as? SavedSearchesHolder)?.setChips(getChips(searches))
|
||||
savedSearchesAdapter.expand(0)
|
||||
(recycler.findViewHolderForAdapterPosition(0) as? SavedSearchesAdapter.SavedSearchesViewHolder)?.bind(savedSearchesChips)
|
||||
}
|
||||
}
|
||||
|
||||
private fun getChips(searches: List<EXHSavedSearch>): List<Chip> {
|
||||
private fun getSavedSearchesChips(searches: List<EXHSavedSearch>): List<Chip> {
|
||||
recycler.post {
|
||||
save_search_btn.visibility = if (searches.size < MAX_SAVED_SEARCHES) View.VISIBLE else View.GONE
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user