From 75d5da71f2f4ce948f20d1335a7fbd909ee3d651 Mon Sep 17 00:00:00 2001 From: Jobobby04 Date: Wed, 24 Jun 2020 20:14:31 -0400 Subject: [PATCH] Rewrite saved searches again, hopefully fix the last few bugs --- .../source/browse/SavedSearchesAdapter.kt | 41 +++++++++++++++++ .../source/browse/SavedSearchesHolder.kt | 32 ------------- .../browse/source/browse/SavedSearchesItem.kt | 46 ------------------- .../browse/source/browse/SourceFilterSheet.kt | 11 ++--- 4 files changed, 46 insertions(+), 84 deletions(-) create mode 100644 app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SavedSearchesAdapter.kt delete mode 100644 app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SavedSearchesHolder.kt delete mode 100644 app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SavedSearchesItem.kt diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SavedSearchesAdapter.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SavedSearchesAdapter.kt new file mode 100644 index 000000000..655ecf9eb --- /dev/null +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SavedSearchesAdapter.kt @@ -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 = emptyList()) : + RecyclerView.Adapter() { + + 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 = emptyList()) { + binding.savedSearches.removeAllViews() + if (chips.isEmpty()) { + binding.savedSearchesTitle.gone() + } else { + binding.savedSearchesTitle.visible() + chips.forEach { + binding.savedSearches.addView(it) + } + } + } + } +} diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SavedSearchesHolder.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SavedSearchesHolder.kt deleted file mode 100644 index aeeaad923..000000000 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SavedSearchesHolder.kt +++ /dev/null @@ -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 -) : BaseFlexibleViewHolder(view, adapter) { - - var binding: SourceFilterSheetSavedSearchesBinding = SourceFilterSheetSavedSearchesBinding.bind(itemView) - - fun setChips(chips: List = 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) - } - } -} diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SavedSearchesItem.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SavedSearchesItem.kt deleted file mode 100644 index 44e1fb051..000000000 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SavedSearchesItem.kt +++ /dev/null @@ -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) : - AbstractFlexibleItem() { - - 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>): SavedSearchesHolder { - return SavedSearchesHolder(view, adapter as FlexibleAdapter) - } - - override fun bindViewHolder( - adapter: FlexibleAdapter>, - holder: SavedSearchesHolder, - position: Int, - payloads: MutableList? - ) { - holder.setChips(chips) - } - - override fun equals(other: Any?): Boolean { - return (this === other) - } - - override fun hashCode(): Int { - return this.hashCode() - } -} diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt index 241440350..d04f914f2 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/browse/source/browse/SourceFilterSheet.kt @@ -81,12 +81,10 @@ class SourceFilterSheet( var onSavedSearchDeleteClicked: (Int, String) -> Unit = { _, _ -> } - var savedSearchesAdapter: FlexibleAdapter = FlexibleAdapter(listOf(SavedSearchesItem(getChips(searches)))) + private val savedSearchesAdapter = SavedSearchesAdapter(getSavedSearchesChips(searches)) // SY <-- val adapter: FlexibleAdapter> = FlexibleAdapter>(null) - .setDisplayHeadersAtStartUp(true) - .setStickyHeaders(true) init { // SY --> @@ -105,13 +103,14 @@ class SourceFilterSheet( // EXH --> fun setSavedSearches(searches: List) { + 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): List { + private fun getSavedSearchesChips(searches: List): List { recycler.post { save_search_btn.visibility = if (searches.size < MAX_SAVED_SEARCHES) View.VISIBLE else View.GONE }