diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt index 0c39fd5b..1057e21d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FeedFragment.kt @@ -199,6 +199,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { val sdf = SimpleDateFormat("dd/M/yyyy hh:mm", Locale.getDefault()) betaLimitDate = sdf.parse("17/7/2019 10:00") + this.currentFilterable = FilterableType.SESSION val viewManager = SmoothScrollLinearLayoutManager(requireContext()) recyclerView.apply { @@ -325,11 +326,18 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { this.loadTransactions(filter) filter?.let { - if (it.filterableType == FilterableType.SESSION) { - recyclerView.adapter = feedSessionAdapter - } else { - recyclerView.adapter = feedTransactionAdapter - } + when (it.filterableType) { + FilterableType.SESSION -> { + recyclerView.adapter = feedSessionAdapter + tabs.getTabAt(0)?.select() + } + FilterableType.TRANSACTION -> { + recyclerView.adapter = feedTransactionAdapter + tabs.getTabAt(1)?.select() + } + else -> { + } + } adapterHasBeenSet = true } @@ -351,5 +359,4 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate { } } - override var currentFilterable: FilterableType = FilterableType.SESSION } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt index 1003f057..dfcc828a 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatisticsFragment.kt @@ -60,6 +60,7 @@ class StatisticsFragment : FilterableFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) initUI() + this.currentFilterable = FilterableType.SESSION applyFilter() } @@ -98,8 +99,6 @@ class StatisticsFragment : FilterableFragment() { } // Filter Handler - override fun createFilter() { - } override fun applyFilter() { super.applyFilter() @@ -111,8 +110,6 @@ class StatisticsFragment : FilterableFragment() { this.launchStatComputation() } - override var currentFilterable: FilterableType = FilterableType.SESSION - // Business /** diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/FilterableFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/FilterableFragment.kt index 8a3d3eee..fb6dd3a8 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/FilterableFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/FilterableFragment.kt @@ -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(R.id.selectedFilter)?.let { viewGroup -> 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 */ - private fun hideSelectedFilter() { + private fun hideSelectedFilter() { view?.findViewById(R.id.selectedFilter).let { GlobalScope.launch(Dispatchers.Main) { 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 + } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/interfaces/FilterHandler.kt b/app/src/main/java/net/pokeranalytics/android/ui/interfaces/FilterHandler.kt index 2467b461..17826991 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/interfaces/FilterHandler.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/interfaces/FilterHandler.kt @@ -29,7 +29,6 @@ interface FilterHandler { const val INTENT_FILTER_UPDATE_FILTER_UI = "net.pokeranalytics.android.UPDATE_FILTER_UI" } - fun createFilter() fun applyFilter() fun removeFilter() diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategoryRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategoryRow.kt index 29096d5e..a0d7cd41 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategoryRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterCategoryRow.kt @@ -16,7 +16,7 @@ enum class FilterCategoryRow(override val resId: Int?, override val viewType: In //Sessions(R.string.sessions), CASH(R.string.cash), TOURNAMENT(R.string.tournament), - ONLINE(R.string.online), + //ONLINE(R.string.online), RESULT(R.string.result), TRANSACTION_TYPES(R.string.operation_types), LOCATIONS(R.string.locations), @@ -105,9 +105,7 @@ enum class FilterCategoryRow(override val resId: Int?, override val viewType: In TournamentNumberOfPlayer, TournamentFinalPosition ) - ONLINE -> arrayListOf( - MultiTabling - ) + //ONLINE -> arrayListOf(MultiTabling) LOCATIONS -> arrayListOf( Location )