|
|
|
|
@ -13,6 +13,7 @@ import kotlinx.coroutines.GlobalScope |
|
|
|
|
import kotlinx.coroutines.delay |
|
|
|
|
import kotlinx.coroutines.launch |
|
|
|
|
import net.pokeranalytics.android.R |
|
|
|
|
import net.pokeranalytics.android.model.realm.Filter |
|
|
|
|
import net.pokeranalytics.android.ui.interfaces.FilterHandler |
|
|
|
|
import net.pokeranalytics.android.ui.interfaces.FilterHandler.Companion.INTENT_FILTER_UPDATE_FILTER_UI |
|
|
|
|
import net.pokeranalytics.android.ui.interfaces.FilterableType |
|
|
|
|
@ -29,6 +30,16 @@ import timber.log.Timber |
|
|
|
|
open class FilterableFragment : RealmFragment(), FilterHandler { |
|
|
|
|
|
|
|
|
|
override var currentFilterable: FilterableType = FilterableType.ALL |
|
|
|
|
set(value) { |
|
|
|
|
field = value |
|
|
|
|
this.currentFilter(this.requireContext(), getRealm())?.let { |
|
|
|
|
if (this.shouldHideCurrentFilter(it)) { |
|
|
|
|
hideSelectedFilter() |
|
|
|
|
} else { |
|
|
|
|
displaySelectedFilter() |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
private var filterMenuItem: MenuItem? = null |
|
|
|
|
|
|
|
|
|
@ -78,9 +89,6 @@ open class FilterableFragment : RealmFragment(), FilterHandler { |
|
|
|
|
return super.onOptionsItemSelected(item) |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun createFilter() { |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
override fun applyFilter() { |
|
|
|
|
updateFilterUI() |
|
|
|
|
} |
|
|
|
|
@ -106,6 +114,9 @@ open class FilterableFragment : RealmFragment(), FilterHandler { |
|
|
|
|
private fun displaySelectedFilter() { |
|
|
|
|
|
|
|
|
|
currentFilter(requireContext(), getRealm())?.let { filter -> |
|
|
|
|
if (this.shouldHideCurrentFilter(filter)) { |
|
|
|
|
return |
|
|
|
|
} |
|
|
|
|
view?.findViewById<ViewGroup>(R.id.selectedFilter)?.let { viewGroup -> |
|
|
|
|
|
|
|
|
|
val layoutCurrentFilter = LayoutInflater.from(requireContext()).inflate(R.layout.view_selected_filter, viewGroup, false) |
|
|
|
|
@ -135,4 +146,14 @@ open class FilterableFragment : RealmFragment(), FilterHandler { |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Check if the current filter's header should be displayed |
|
|
|
|
*/ |
|
|
|
|
private fun shouldHideCurrentFilter(currentFilter: Filter? = null): Boolean { |
|
|
|
|
currentFilter?.let { |
|
|
|
|
return it.filterableType != this.currentFilterable |
|
|
|
|
} |
|
|
|
|
return false |
|
|
|
|
} |
|
|
|
|
} |