diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetEditTextFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetEditTextFragment.kt index 68270e60..cf69a603 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetEditTextFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetEditTextFragment.kt @@ -29,7 +29,7 @@ class BottomSheetEditTextFragment : BottomSheetFragment() { */ private fun initUI() { - val data = getDescriptors() ?: throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor not found") + val data = getDescriptors() ?: throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor not found for $this") if (data.size != 1) { throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/filter/FilterDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/filter/FilterDetailsFragment.kt index a7b9b90e..b5b9da1a 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/filter/FilterDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/filter/FilterDetailsFragment.kt @@ -114,43 +114,52 @@ open class FilterDetailsFragment : RealmFragment(), RowRepresentableDelegate { return } - when (row) { - is DateFilterItemRow -> { - when (val condition = row.rawCondition) { - is QueryCondition.DateQuery -> DateTimePickerManager.create( - requireContext(), - row, - this, - row.value, - onlyDate = !condition.showTime, - onlyTime = condition.showTime - ) - } - } - is IntFilterItemRow -> { - when (val condition = row.rawCondition) { - is QueryCondition.Duration -> { - val hours = (condition.minutes / 60).toString() - val minutes = (condition.minutes % 60).toString() - val data = row.editingDescriptors(mapOf("hours" to hours, "minutes" to minutes)) - showBottomSheet(row, this, data, true) - } + (row as? BaseFilterItemRow)?.let { + when (val condition = it.rawCondition) { + is QueryCondition.DateQuery -> DateTimePickerManager.create( + requireContext(), + row, + this, + (row as DateFilterItemRow).value, + onlyDate = !condition.showTime, + onlyTime = condition.showTime + ) + is QueryCondition.Duration -> { + val hours = (condition.minutes / 60).toString() + val minutes = (condition.minutes % 60).toString() + val data = row.editingDescriptors(mapOf("hours" to hours, "minutes" to minutes)) + showBottomSheet(row, this, data, true) } - } - is ValueListFilterItemRow<*> -> { - when (row.rawCondition) { - is QueryCondition.ListOfValues<*> -> { - var valueAsString: String? = null - row.list.firstOrNull()?.let { - valueAsString = row.list.firstOrNull()?.toString() - } - val data = row.editingDescriptors(mapOf("valueAsString" to valueAsString)) - showBottomSheet(row, this, data, true) - } + is QueryCondition.ListOfValues<*> -> { + val valueAsString: String? = (row as FilterValueHolder).singleValue?.toString() +// row.list.firstOrNull()?.let { +// valueAsString = row.list.firstOrNull()?.toString() +// } + val data = row.editingDescriptors(mapOf("valueAsString" to valueAsString)) + showBottomSheet(row, this, data, true) } + else -> { } } } +// when (row) { +// is DateFilterItemRow -> { +// when (val condition = row.rawCondition) { +// +// } +// } +// is IntFilterItemRow -> { +// when (val condition = row.rawCondition) { +// +// } +// } +// is ValueListFilterItemRow<*> -> { +// when (row.rawCondition) { +// +// } +// } +// } + // (row as? BaseFilterItemRow)?.let { filterItemRow -> // val rawCondition = filterItemRow.rawCondition 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 cdf99d06..36952dcf 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 @@ -68,6 +68,7 @@ interface FilterItemRow : RowRepresentable { interface FilterValueHolder { fun valueFormatted(context: Context): CharSequence? + val singleValue: Any? } open class BaseFilterItemRow(queryCondition: QueryCondition, override var filterSectionRow: FilterSectionRow) : FilterItemRow { @@ -93,6 +94,8 @@ open class BaseFilterItemRow(queryCondition: QueryCondition, override var filter override val bottomSheetType: BottomSheetType get() { return this.rawCondition.bottomSheetType } + + } @@ -118,6 +121,11 @@ abstract class ValueFilterItemRow>(queryCondition: QueryConditi return NULL_TEXT } + override val singleValue: Any? + get() { + return this.value + } + override fun updateValue(fc: FilterCondition) { // TODO @@ -157,6 +165,10 @@ abstract class ValueListFilterItemRow>(queryCondition: QueryCon return NULL_TEXT } + override val singleValue: Any? + get() { + return this.list.firstOrNull() + } // override fun getDisplayName(context: Context): String { // return this.listCondition.getDisplayName(context, this.list)