filterfix
Laurent 5 years ago
parent 7924e19fe3
commit fb0c5f7933
  1. 3
      app/src/main/java/net/pokeranalytics/android/model/filter/QueryCondition.kt
  2. 7
      app/src/main/java/net/pokeranalytics/android/ui/modules/filter/FilterDetailsFragment.kt
  3. 29
      app/src/main/java/net/pokeranalytics/android/ui/modules/filter/FilterDetailsViewModel.kt
  4. 28
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/FilterElementRow.kt

@ -22,12 +22,9 @@ 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.*
import java.lang.Exception
import java.text.DateFormatSymbols
import java.text.NumberFormat
import java.util.*
import kotlin.collections.ArrayList
import kotlin.reflect.full.primaryConstructor
/**
* Enum describing the way a query should be handled

@ -130,8 +130,8 @@ open class FilterDetailsFragment : RealmFragment(), RowRepresentableDelegate {
is IntFilterItemRow -> {
when (val condition = row.rawCondition) {
is QueryCondition.Duration -> {
val hours: String? = (condition.minutes / 60).toString()
val minutes: String? = (condition.minutes % 60).toString()
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)
}
@ -195,7 +195,7 @@ open class FilterDetailsFragment : RealmFragment(), RowRepresentableDelegate {
when (row) {
is DateFilterItemRow -> {
row.value = value as Date
row.value = value as? Date
}
is IntFilterItemRow -> {
when (value) {
@ -221,6 +221,7 @@ open class FilterDetailsFragment : RealmFragment(), RowRepresentableDelegate {
row.value = minutes
}
}
else -> { row.value = null }
}
}
is DoubleValueListFilterItemRow -> {

@ -3,18 +3,15 @@ package net.pokeranalytics.android.ui.modules.filter
import android.content.Context
import androidx.lifecycle.ViewModel
import androidx.lifecycle.ViewModelProvider
import net.pokeranalytics.android.model.filter.QueryCondition
import net.pokeranalytics.android.model.realm.Filter
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.ui.view.rowrepresentable.BaseFilterItemRow
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategoryRow
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterItemRow
import net.pokeranalytics.android.ui.view.rowrepresentable.ValueListFilterItemRow
import net.pokeranalytics.android.ui.view.rowrepresentable.FilterValueHolder
import net.pokeranalytics.android.util.NULL_TEXT
import timber.log.Timber
class FilterDetailsViewModelFactory(var filter: Filter, var categoryRow: FilterCategoryRow): ViewModelProvider.Factory {
@ -43,14 +40,24 @@ class FilterDetailsViewModel(categoryRow: FilterCategoryRow, var filter: Filter)
override fun charSequenceForRow(row: RowRepresentable, context: Context): CharSequence {
val filterItemRow = row as? BaseFilterItemRow
filterItemRow?.let {
return when (val condition = it.rawCondition) {
is QueryCondition.ListOfValues<*> -> condition.firstValue(context) ?: NULL_TEXT
else -> super.charSequenceForRow(row, context, 0)
}
return when (row) {
is FilterValueHolder -> {
row.valueFormatted(context)
}
return NULL_TEXT
else -> super.charSequenceForRow(row, context, 0)
} ?: NULL_TEXT
// val filterItemRow = row as? BaseFilterItemRow
// filterItemRow?.let {
// return when (val condition = it.rawCondition) {
//// is QueryCondition.SingleValue<*> -> filter
// is QueryCondition.ListOfValues<*> -> {
// condition.firstValue(context) ?: NULL_TEXT
// }
// else -> super.charSequenceForRow(row, context, 0)
// }
// }
// return NULL_TEXT
// return when (row) {
// is BaseFilterItemRow -> {

@ -8,6 +8,7 @@ import net.pokeranalytics.android.model.realm.FilterCondition
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor
import net.pokeranalytics.android.util.NULL_TEXT
import java.util.*
interface FilterItemRow : RowRepresentable {
@ -65,6 +66,10 @@ interface FilterItemRow : RowRepresentable {
}
}
interface FilterValueHolder {
fun valueFormatted(context: Context): CharSequence?
}
open class BaseFilterItemRow(queryCondition: QueryCondition, override var filterSectionRow: FilterSectionRow) : FilterItemRow {
var rawCondition: QueryCondition = queryCondition
@ -79,6 +84,9 @@ open class BaseFilterItemRow(queryCondition: QueryCondition, override var filter
return this.rawCondition.getDisplayName(context)
}
override val resId: Int?
get() { return this.rawCondition.resId }
override val viewType: Int
get() { return this.rawCondition.viewType }
@ -88,7 +96,7 @@ open class BaseFilterItemRow(queryCondition: QueryCondition, override var filter
}
abstract class ValueFilterItemRow<T: Comparable<T>>(queryCondition: QueryCondition.SingleValue<T>, filterSectionRow: FilterSectionRow): BaseFilterItemRow(queryCondition, filterSectionRow) {
abstract class ValueFilterItemRow<T: Comparable<T>>(queryCondition: QueryCondition.SingleValue<T>, filterSectionRow: FilterSectionRow): BaseFilterItemRow(queryCondition, filterSectionRow), FilterValueHolder {
private var valueCondition: QueryCondition.SingleValue<T> = queryCondition
@ -103,6 +111,13 @@ abstract class ValueFilterItemRow<T: Comparable<T>>(queryCondition: QueryConditi
return null
}
override fun valueFormatted(context: Context): CharSequence? {
this.value?.let {
return this.valueCondition.labelForValue(it, context)
}
return NULL_TEXT
}
override fun updateValue(fc: FilterCondition) {
// TODO
@ -113,7 +128,7 @@ abstract class ValueFilterItemRow<T: Comparable<T>>(queryCondition: QueryConditi
}
abstract class ValueListFilterItemRow<T: Comparable<T>>(queryCondition: QueryCondition.ListOfValues<T>, filterSectionRow: FilterSectionRow): BaseFilterItemRow(queryCondition, filterSectionRow) {
abstract class ValueListFilterItemRow<T: Comparable<T>>(queryCondition: QueryCondition.ListOfValues<T>, filterSectionRow: FilterSectionRow): BaseFilterItemRow(queryCondition, filterSectionRow), FilterValueHolder {
private var listCondition: QueryCondition.ListOfValues<T> = queryCondition
@ -134,6 +149,15 @@ abstract class ValueListFilterItemRow<T: Comparable<T>>(queryCondition: QueryCon
}
}
override fun valueFormatted(context: Context): CharSequence? {
this.list.firstOrNull()?.let {
return this.listCondition.labelForValue(it, context)
}
return NULL_TEXT
}
// override fun getDisplayName(context: Context): String {
// return this.listCondition.getDisplayName(context, this.list)
// }

Loading…
Cancel
Save