From b2b36dfdccc572ff2796ba16ed4b84a442ff3d15 Mon Sep 17 00:00:00 2001 From: Laurent Date: Fri, 2 Oct 2020 14:17:12 +0200 Subject: [PATCH] Move the QueryCondition item wrapping from QueryCondition to the FilterSectionRow --- .../android/model/filter/QueryCondition.kt | 55 +++---------------- .../view/rowrepresentable/FilterSectionRow.kt | 24 +++++++- 2 files changed, 30 insertions(+), 49 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt b/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt index 0822fa40..33b972b3 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt @@ -18,7 +18,6 @@ import net.pokeranalytics.android.model.realm.* import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType -import net.pokeranalytics.android.ui.view.rowrepresentable.* import net.pokeranalytics.android.util.NULL_TEXT import net.pokeranalytics.android.util.UserDefaults import net.pokeranalytics.android.util.extensions.* @@ -222,12 +221,6 @@ sealed class QueryCondition : RowRepresentable { } } - abstract class UserInputListOfInt : ListOfInt() { - override fun toRowWrapper(filterSectionRow: FilterSectionRow): FilterItemRow { - return IntValueListFilterItemRow(this, filterSectionRow) - } - } - abstract class ListOfString : ListOfValues() { override var operator: Operator = Operator.ANY override var listOfValues = mutableListOf() @@ -253,9 +246,6 @@ sealed class QueryCondition : RowRepresentable { singleValue = filterCondition.getValue() } - override fun toRowWrapper(filterSectionRow: FilterSectionRow): FilterItemRow { - return DateFilterItemRow(this, filterSectionRow) - } } abstract class SingleInt(value: Int) : SingleValue(value) { @@ -270,12 +260,6 @@ sealed class QueryCondition : RowRepresentable { } - abstract class UserInputSingleInt(value: Int) : SingleInt(value) { - override fun toRowWrapper(filterSectionRow: FilterSectionRow): FilterItemRow { - return IntFilterItemRow(this, filterSectionRow) - } - } - override fun getDisplayName(context: Context): String { this.resId?.let { return context.getString(it) @@ -321,7 +305,7 @@ sealed class QueryCondition : RowRepresentable { val showTime: Boolean } - abstract class DateQuery(date: Date) : UserInputSingleDate(date), DateTime { + abstract class DateQuery(date: Date) : SingleDate(date), DateTime { override val showTime: Boolean = false override fun labelForValue(value: Date, context: Context): String { @@ -333,12 +317,6 @@ sealed class QueryCondition : RowRepresentable { } } - abstract class UserInputSingleDate(date: Date) : SingleDate(date) { - override fun toRowWrapper(filterSectionRow: FilterSectionRow): FilterItemRow { - return DateFilterItemRow(this, filterSectionRow) - } - } - abstract class TimeQuery(date: Date) : DateQuery(date) { override val showTime: Boolean = true } @@ -461,11 +439,6 @@ sealed class QueryCondition : RowRepresentable { override fun entityName(context: Context): String { return context.getString(R.string.blinds) } - - override fun toRowWrapper(filterSectionRow: FilterSectionRow): FilterItemRow { - return FixedValueFilterItemRow(this, filterSectionRow) - } - } class NumberOfTable : ListOfInt() { @@ -478,13 +451,7 @@ sealed class QueryCondition : RowRepresentable { } } - open class UserInputListOfDouble : ListOfDouble() { - override fun toRowWrapper(filterSectionRow: FilterSectionRow): FilterItemRow { - return DoubleValueListFilterItemRow(this, filterSectionRow) - } - } - - class NumberOfRebuy() : UserInputListOfDouble() { + class NumberOfRebuy() : ListOfDouble() { constructor(operator: Operator, numberOfRebuy: Double) : this() { this.operator = operator this.listOfValues = arrayListOf(numberOfRebuy) @@ -495,7 +462,7 @@ sealed class QueryCondition : RowRepresentable { } } - class TournamentFinalPosition() : UserInputListOfInt() { + class TournamentFinalPosition() : ListOfInt() { constructor(operator: Operator, finalPosition: Int) : this() { this.operator = operator this.listOfValues = arrayListOf(finalPosition) @@ -516,18 +483,14 @@ sealed class QueryCondition : RowRepresentable { } } - open class NetAmount : ListOfDouble() { - override fun toRowWrapper(filterSectionRow: FilterSectionRow): FilterItemRow { - return DoubleValueListFilterItemRow(this, filterSectionRow) - } - } + open class NetAmount : ListOfDouble() class NetAmountWon : NetAmount() class NetAmountLost : NetAmount() { override var sign: Int = -1 } - class TournamentNumberOfPlayer : UserInputListOfInt() { + class TournamentNumberOfPlayer : ListOfInt() { override fun labelForValue(value: Int, context: Context): String { return value.toString() + " " + context.getString(R.string.number_of_players) } @@ -594,7 +557,7 @@ sealed class QueryCondition : RowRepresentable { } } - class PastDay(value: Int) : UserInputSingleInt(value) { + class PastDay(value: Int) : SingleInt(value) { override var operator = Operator.EQUALS override val viewType: Int = RowViewType.TITLE_VALUE_CHECK.ordinal @@ -609,7 +572,7 @@ sealed class QueryCondition : RowRepresentable { // } } - class Duration(value: Int) : UserInputSingleInt(value) { + class Duration(value: Int) : SingleInt(value) { override var operator = Operator.EQUALS var minutes: Int @@ -728,10 +691,6 @@ sealed class QueryCondition : RowRepresentable { } } - open fun toRowWrapper(filterSectionRow: FilterSectionRow): FilterItemRow { - return FixedValueFilterItemRow(this, filterSectionRow) - } - /** * main method of the enum * providing a base RealmQuery [realmQuery], the method is able to attached the corresponding query and returns the newly formed [RealmQuery] 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 b058aeaf..101f3565 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 @@ -73,10 +73,32 @@ sealed class FilterSectionRow(override val resId: Int?) : RowRepresentable { val filterItems: List get() { return this.queryConditions.map { - it.toRowWrapper(this@FilterSectionRow) + rowWrapper(it, this@FilterSectionRow) +// it.toRowWrapper(this@FilterSectionRow) } } + private fun rowWrapper(queryCondition: QueryCondition, section: FilterSectionRow): FilterItemRow { + return when (queryCondition) { + // Int List + is QueryCondition.TournamentFinalPosition -> IntValueListFilterItemRow(queryCondition, section) + is QueryCondition.TournamentNumberOfPlayer -> IntValueListFilterItemRow(queryCondition, section) + // Double List + is QueryCondition.NumberOfRebuy -> DoubleValueListFilterItemRow(queryCondition, section) + is QueryCondition.NetAmount -> DoubleValueListFilterItemRow(queryCondition, section) + // Int + is QueryCondition.PastDay -> IntFilterItemRow(queryCondition, section) + is QueryCondition.Duration -> IntFilterItemRow(queryCondition, section) + // Dates + is QueryCondition.StartedFromDate -> DateFilterItemRow(queryCondition, section) + is QueryCondition.StartedFromTime -> DateFilterItemRow(queryCondition, section) + is QueryCondition.StartedToDate -> DateFilterItemRow(queryCondition, section) + is QueryCondition.EndedToDate -> DateFilterItemRow(queryCondition, section) + is QueryCondition.EndedToTime -> DateFilterItemRow(queryCondition, section) + else -> FixedValueFilterItemRow(queryCondition, section) + } + } + private val queryConditions: List get() { return when (this@FilterSectionRow) {