update the display / hide of the current filter related to the current filterable

dev
Razmig Sarkissian 7 years ago
parent 52b5aec140
commit 0f9427c71f
  1. 19
      app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt
  2. 5
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt
  3. 29
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/FilterableFragment.kt
  4. 1
      app/src/main/java/net/pokeranalytics/android/ui/interfaces/FilterHandler.kt

@ -199,6 +199,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
val sdf = SimpleDateFormat("dd/M/yyyy hh:mm", Locale.getDefault()) val sdf = SimpleDateFormat("dd/M/yyyy hh:mm", Locale.getDefault())
betaLimitDate = sdf.parse("17/7/2019 10:00") betaLimitDate = sdf.parse("17/7/2019 10:00")
this.currentFilterable = FilterableType.SESSION
val viewManager = SmoothScrollLinearLayoutManager(requireContext()) val viewManager = SmoothScrollLinearLayoutManager(requireContext())
recyclerView.apply { recyclerView.apply {
@ -325,11 +326,18 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
this.loadTransactions(filter) this.loadTransactions(filter)
filter?.let { filter?.let {
if (it.filterableType == FilterableType.SESSION) { when (it.filterableType) {
recyclerView.adapter = feedSessionAdapter FilterableType.SESSION -> {
} else { recyclerView.adapter = feedSessionAdapter
recyclerView.adapter = feedTransactionAdapter tabs.getTabAt(0)?.select()
} }
FilterableType.TRANSACTION -> {
recyclerView.adapter = feedTransactionAdapter
tabs.getTabAt(1)?.select()
}
else -> {
}
}
adapterHasBeenSet = true adapterHasBeenSet = true
} }
@ -351,5 +359,4 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate {
} }
} }
override var currentFilterable: FilterableType = FilterableType.SESSION
} }

@ -60,6 +60,7 @@ class StatisticsFragment : FilterableFragment() {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
initUI() initUI()
this.currentFilterable = FilterableType.SESSION
applyFilter() applyFilter()
} }
@ -98,8 +99,6 @@ class StatisticsFragment : FilterableFragment() {
} }
// Filter Handler // Filter Handler
override fun createFilter() {
}
override fun applyFilter() { override fun applyFilter() {
super.applyFilter() super.applyFilter()
@ -111,8 +110,6 @@ class StatisticsFragment : FilterableFragment() {
this.launchStatComputation() this.launchStatComputation()
} }
override var currentFilterable: FilterableType = FilterableType.SESSION
// Business // Business
/** /**

@ -13,6 +13,7 @@ import kotlinx.coroutines.GlobalScope
import kotlinx.coroutines.delay import kotlinx.coroutines.delay
import kotlinx.coroutines.launch import kotlinx.coroutines.launch
import net.pokeranalytics.android.R 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
import net.pokeranalytics.android.ui.interfaces.FilterHandler.Companion.INTENT_FILTER_UPDATE_FILTER_UI import net.pokeranalytics.android.ui.interfaces.FilterHandler.Companion.INTENT_FILTER_UPDATE_FILTER_UI
import net.pokeranalytics.android.ui.interfaces.FilterableType import net.pokeranalytics.android.ui.interfaces.FilterableType
@ -29,6 +30,16 @@ import timber.log.Timber
open class FilterableFragment : RealmFragment(), FilterHandler { open class FilterableFragment : RealmFragment(), FilterHandler {
override var currentFilterable: FilterableType = FilterableType.ALL 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 private var filterMenuItem: MenuItem? = null
@ -78,9 +89,6 @@ open class FilterableFragment : RealmFragment(), FilterHandler {
return super.onOptionsItemSelected(item) return super.onOptionsItemSelected(item)
} }
override fun createFilter() {
}
override fun applyFilter() { override fun applyFilter() {
updateFilterUI() updateFilterUI()
} }
@ -106,6 +114,9 @@ open class FilterableFragment : RealmFragment(), FilterHandler {
private fun displaySelectedFilter() { private fun displaySelectedFilter() {
currentFilter(requireContext(), getRealm())?.let { filter -> currentFilter(requireContext(), getRealm())?.let { filter ->
if (this.shouldHideCurrentFilter(filter)) {
return
}
view?.findViewById<ViewGroup>(R.id.selectedFilter)?.let { viewGroup -> view?.findViewById<ViewGroup>(R.id.selectedFilter)?.let { viewGroup ->
val layoutCurrentFilter = LayoutInflater.from(requireContext()).inflate(R.layout.view_selected_filter, viewGroup, false) val layoutCurrentFilter = LayoutInflater.from(requireContext()).inflate(R.layout.view_selected_filter, viewGroup, false)
@ -128,11 +139,21 @@ open class FilterableFragment : RealmFragment(), FilterHandler {
/** /**
* Hide the filter UI * Hide the filter UI
*/ */
private fun hideSelectedFilter() { private fun hideSelectedFilter() {
view?.findViewById<ViewGroup>(R.id.selectedFilter).let { view?.findViewById<ViewGroup>(R.id.selectedFilter).let {
GlobalScope.launch(Dispatchers.Main) { GlobalScope.launch(Dispatchers.Main) {
it?.visibility = View.GONE it?.visibility = View.GONE
} }
} }
} }
/**
* 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
}
} }

@ -29,7 +29,6 @@ interface FilterHandler {
const val INTENT_FILTER_UPDATE_FILTER_UI = "net.pokeranalytics.android.UPDATE_FILTER_UI" const val INTENT_FILTER_UPDATE_FILTER_UI = "net.pokeranalytics.android.UPDATE_FILTER_UI"
} }
fun createFilter()
fun applyFilter() fun applyFilter()
fun removeFilter() fun removeFilter()

Loading…
Cancel
Save