From 78cb6a8dfe3d8f2c2d827c9ae8861ba8fb1c7644 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Wed, 10 Apr 2019 10:48:28 +0200 Subject: [PATCH] Improve Duration filters --- .../ui/fragment/FilterDetailsFragment.kt | 10 ++++++++-- .../view/rowrepresentable/FilterElementRow.kt | 20 ++++++++++++------- .../view/rowrepresentable/FilterSectionRow.kt | 2 +- 3 files changed, 22 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt index 93631905..303333e4 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt @@ -82,6 +82,12 @@ open class FilterDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresenta val data = row.editingDescriptors(mapOf("hours" to hours, "minutes" to minutes)) BottomSheetFragment.create(fragmentManager, row, this, data, true) } + is FilterElementRow.DurationLessThan -> { + val hours = if (row.minutes / 60 > 0) (row.minutes / 60).toString() else "" + val minutes = if (row.minutes % 60 > 0) (row.minutes % 60).toString() else "" + val data = row.editingDescriptors(mapOf("hours" to hours, "minutes" to minutes)) + BottomSheetFragment.create(fragmentManager, row, this, data, true) + } else -> { val oldRows = ArrayList() @@ -129,7 +135,7 @@ open class FilterDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresenta is FilterElementRow.PastDays -> if (row.lastDays > 0) row.lastDays.toString() else NULL_TEXT is FilterElementRow.From -> row.date.shortDate() is FilterElementRow.To -> row.date.shortDate() - is FilterElementRow.DurationMoreThan -> row.minutes.toMinutes(requireContext()) + is FilterElementRow.TimeFilterElementRow -> row.minutes.toMinutes(requireContext()) else -> super.stringForRow(row) } } @@ -146,7 +152,7 @@ open class FilterDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresenta is FilterElementRow.From -> row.date = if (value != null && value is Date) value else Date() is FilterElementRow.To -> row.date = if (value != null && value is Date) value else Date() is FilterElementRow.PastDays -> row.lastDays = if (value != null && value is String) value.toInt() else 0 - is FilterElementRow.DurationMoreThan -> { + is FilterElementRow.TimeFilterElementRow -> { if (value is ArrayList<*>) { val hours = try { (value[0] as String? ?: "0").toInt() diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterElementRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterElementRow.kt index 6340ff63..f3c046e6 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterElementRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterElementRow.kt @@ -46,9 +46,15 @@ sealed class FilterElementRow : RowRepresentable { } } - open class QuantityFilterElementRow : FilterElementRow() + open class QuantityFilterElementRow(var value: Double = 0.0) : FilterElementRow() + open class TimeFilterElementRow : QuantityFilterElementRow() { + var minutes = value.toInt() + } + open class MoreFilterElementRow : QuantityFilterElementRow() open class LessFilterElementRow : QuantityFilterElementRow() + open class MoreTimeFilterElementRow : TimeFilterElementRow() + open class LessTimeFilterElementRow : TimeFilterElementRow() data class Blind(var sb: Double? = null, var bb: Double? = null, var code: String? = null) : FilterElementRow() @@ -67,10 +73,10 @@ sealed class FilterElementRow : RowRepresentable { data class AllTournamentFeature(val tournamentFeature: Manageable) : DataFilterElementRow(tournamentFeature) data class AnyTournamentFeature(val tournamentFeature: Manageable) : DataFilterElementRow(tournamentFeature) - data class ResultMoreThan(var value: Double) : MoreFilterElementRow() - data class ResultLessThan(var value: Double) : LessFilterElementRow() - data class DurationMoreThan(var minutes: Int) : MoreFilterElementRow() - data class DurationLessThan(var minutes: Int) : LessFilterElementRow() + object ResultMoreThan : MoreFilterElementRow() + object ResultLessThan : LessFilterElementRow() + object DurationMoreThan : MoreTimeFilterElementRow() + object DurationLessThan : LessTimeFilterElementRow() lateinit var filterSectionRow: FilterSectionRow @@ -150,8 +156,8 @@ sealed class FilterElementRow : RowRepresentable { is Weekend -> R.string.weekend is PastDays -> R.string.period_in_days is Blind -> R.string.blinds - is MoreFilterElementRow -> R.string.more_than - is LessFilterElementRow -> R.string.less_than + is MoreFilterElementRow, is MoreTimeFilterElementRow -> R.string.more_than + is LessFilterElementRow, is LessTimeFilterElementRow -> R.string.less_than else -> null } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt index 29b1801d..7158d301 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterSectionRow.kt @@ -154,7 +154,7 @@ enum class FilterSectionRow(override val resId: Int?) : RowRepresentable { MULTI_PLAYER -> arrayListOf() - SESSION_DURATION -> arrayListOf(DurationMoreThan(0), DurationLessThan(0)) + SESSION_DURATION -> arrayListOf(DurationMoreThan, DurationLessThan) RANGE -> arrayListOf(From(Date()), To(Date())) VALUE -> arrayListOf()