diff --git a/app/src/main/java/net/pokeranalytics/android/exceptions/Exceptions.kt b/app/src/main/java/net/pokeranalytics/android/exceptions/Exceptions.kt index 2f391884..ac0e2564 100644 --- a/app/src/main/java/net/pokeranalytics/android/exceptions/Exceptions.kt +++ b/app/src/main/java/net/pokeranalytics/android/exceptions/Exceptions.kt @@ -7,3 +7,7 @@ class ModelException(message: String) : Exception(message) { class FormattingException(message: String) : Exception(message) { } + +class RowRepresentableEditDescriptorException(message: String) : Exception(message) { + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt index fc2463e3..39d2be16 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt @@ -11,7 +11,6 @@ import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.rowrepresentable.BankrollRow import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow -import timber.log.Timber import java.util.* import kotlin.collections.ArrayList @@ -70,7 +69,7 @@ open class Bankroll(name: String = "") : RealmObject(), Manageable, } } - override fun editDescriptors(row: RowRepresentable): ArrayList { + override fun editDescriptors(row: RowRepresentable): ArrayList? { val data = java.util.ArrayList() when (row) { SimpleRow.NAME -> data.add( diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt index b69e5c95..cae77e5f 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt @@ -1,9 +1,6 @@ package net.pokeranalytics.android.model.realm -import io.realm.Realm import io.realm.RealmObject -import io.realm.RealmResults -import io.realm.Sort import io.realm.annotations.PrimaryKey import net.pokeranalytics.android.R import net.pokeranalytics.android.model.interfaces.CountableUsage @@ -55,23 +52,12 @@ open class Game : RealmObject(), Manageable, StaticRowRepresentableDataSource, R } } - override fun editDescriptors(row: RowRepresentable): ArrayList { - val data = java.util.ArrayList() - when (row) { - SimpleRow.NAME -> data.add( - RowRepresentableEditDescriptor( - this.name, - SimpleRow.NAME.resId - ) - ) - GameRow.SHORT_NAME -> data.add( - RowRepresentableEditDescriptor( - this.shortName, - GameRow.SHORT_NAME.resId - ) - ) + override fun editDescriptors(row: RowRepresentable): ArrayList? { + return when (row) { + SimpleRow.NAME -> row.editingDescriptors(mapOf("defaultValue" to this.name)) + GameRow.SHORT_NAME -> row.editingDescriptors(mapOf("defaultValue" to this.shortName)) + else -> null } - return data } override fun updateValue(value: Any?, row: RowRepresentable) { diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index 25cd76bc..e1a93915 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -5,7 +5,6 @@ import android.text.InputType import io.realm.Realm import io.realm.RealmList import io.realm.RealmObject -import io.realm.Sort import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey import io.realm.kotlin.where @@ -36,8 +35,6 @@ import net.pokeranalytics.android.util.extensions.* import java.util.* import java.util.Currency import kotlin.collections.ArrayList -import kotlin.properties.Delegates -import kotlin.reflect.KProperty open class Session : RealmObject(), SessionInterface, Manageable, StaticRowRepresentableDataSource, RowRepresentable, Timed { @@ -590,7 +587,7 @@ open class Session : RealmObject(), SessionInterface, Manageable, StaticRowRepre } } - override fun editDescriptors(row: RowRepresentable): ArrayList { + override fun editDescriptors(row: RowRepresentable): ArrayList? { val data = ArrayList() diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt index e5774dc8..46f406e3 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt @@ -50,7 +50,7 @@ open class TournamentFeature : RealmObject(), Manageable, StaticRowRepresentable } - override fun editDescriptors(row: RowRepresentable): ArrayList { + override fun editDescriptors(row: RowRepresentable): ArrayList? { val data = java.util.ArrayList() when (row) { SimpleRow.NAME -> data.add( diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentName.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentName.kt index 7d149a82..b6f484f6 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentName.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentName.kt @@ -4,7 +4,6 @@ import io.realm.RealmObject import io.realm.annotations.PrimaryKey import net.pokeranalytics.android.R import net.pokeranalytics.android.model.interfaces.Manageable -import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor @@ -51,7 +50,7 @@ open class TournamentName : RealmObject(), Manageable, StaticRowRepresentableDat } } - override fun editDescriptors(row: RowRepresentable): ArrayList { + override fun editDescriptors(row: RowRepresentable): ArrayList? { val data = java.util.ArrayList() when (row) { SimpleRow.NAME -> data.add( diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt index 91a17662..971cce30 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt @@ -4,7 +4,6 @@ import android.text.InputType import io.realm.RealmObject import io.realm.annotations.PrimaryKey import net.pokeranalytics.android.model.interfaces.Manageable -import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor @@ -54,7 +53,7 @@ open class TransactionType : RealmObject(), Manageable, StaticRowRepresentableDa } } - override fun editDescriptors(row: RowRepresentable): ArrayList { + override fun editDescriptors(row: RowRepresentable): ArrayList? { val data = java.util.ArrayList() when (row) { SimpleRow.NAME -> data.add( diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableDataSource.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableDataSource.kt index 1aadf238..e313e0cd 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableDataSource.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableDataSource.kt @@ -154,8 +154,8 @@ interface EditableDataSource { /** * A list of [RowRepresentableEditDescriptor] object specifying the way the edition will be handled */ - fun editDescriptors(row: RowRepresentable): ArrayList { - return ArrayList() + fun editDescriptors(row: RowRepresentable): ArrayList? { + return null } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/LocationDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/LocationDataFragment.kt index 93d56641..0213d3ba 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/LocationDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/LocationDataFragment.kt @@ -78,7 +78,7 @@ class LocationDataFragment : EditableDataFragment(), StaticRowRepresentableDataS } } - override fun editDescriptors(row: RowRepresentable): ArrayList { + override fun editDescriptors(row: RowRepresentable): ArrayList? { val data = java.util.ArrayList() when (row) { SimpleRow.NAME -> data.add( diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetDoubleEditTextFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetDoubleEditTextFragment.kt index c7ab6d4f..fe22230f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetDoubleEditTextFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetDoubleEditTextFragment.kt @@ -9,6 +9,7 @@ import androidx.core.widget.addTextChangedListener import kotlinx.android.synthetic.main.bottom_sheet_double_edit_text.* import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* import net.pokeranalytics.android.R +import net.pokeranalytics.android.exceptions.RowRepresentableEditDescriptorException import net.pokeranalytics.android.ui.view.rowrepresentable.SessionRow import net.pokeranalytics.android.util.extensions.round @@ -49,57 +50,55 @@ class BottomSheetDoubleEditTextFragment : BottomSheetFragment() { * Init UI */ private fun initUI() { + val data = getData()?:throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor not found") + if (data.size != 2) { + throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") + } setAddButtonVisible(false) - val data = getData() - values.add(0, "") values.add(1, "") LayoutInflater.from(requireContext()) .inflate(R.layout.bottom_sheet_double_edit_text, view?.bottomSheetContainer, true) - if (data.size == 2) { + values[0] = (data[0].defaultValue ?: "").toString() + values[1] = (data[1].defaultValue ?: "").toString() - values[0] = (data[0].defaultValue ?: "").toString() - values[1] = (data[1].defaultValue ?: "").toString() + editText1.setText(values[0]) + editText2.setText(values[1]) - editText1.setText(values[0]) - editText2.setText(values[1]) - - data[0].hint?.let { editText1.hint = getString(it) } - editText1.inputType = data[0].inputType ?: InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES - editText1.addTextChangedListener { - values[0] = it?.toString() ?: "" - } + data[0].hint?.let { editText1.hint = getString(it) } + editText1.inputType = data[0].inputType ?: InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES + editText1.addTextChangedListener { + values[0] = it?.toString() ?: "" + } - data[1].hint?.let { editText2.hint = getString(it) } - editText2.inputType = data[1].inputType ?: InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES - editText2.addTextChangedListener { - values[1] = it?.toString() ?: "" - if (isEditingBlinds) { - try { - val bigBlind = values[1].toDouble() - editText1.setText((bigBlind / 2.0).round()) - } catch (e: Exception) { - editText1.setText("") - } + data[1].hint?.let { editText2.hint = getString(it) } + editText2.inputType = data[1].inputType ?: InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES + editText2.addTextChangedListener { + values[1] = it?.toString() ?: "" + if (isEditingBlinds) { + try { + val bigBlind = values[1].toDouble() + editText1.setText((bigBlind / 2.0).round()) + } catch (e: Exception) { + editText1.setText("") } } + } - editText2.setOnEditorActionListener { v, actionId, _ -> - if (actionId == EditorInfo.IME_ACTION_DONE) { - this.delegate.onRowValueChanged(values, row) - dismiss() - true - } else { - false - } + editText2.setOnEditorActionListener { v, actionId, _ -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + this.delegate.onRowValueChanged(values, row) + dismiss() + true + } else { + false } } - } } \ No newline at end of file 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 a6027e34..7cfd287d 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 @@ -9,6 +9,7 @@ import androidx.core.widget.addTextChangedListener import kotlinx.android.synthetic.main.bottom_sheet_edit_text.* import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* import net.pokeranalytics.android.R +import net.pokeranalytics.android.exceptions.RowRepresentableEditDescriptorException class BottomSheetEditTextFragment : BottomSheetFragment() { @@ -40,28 +41,26 @@ class BottomSheetEditTextFragment : BottomSheetFragment() { * Init UI */ private fun initUI() { + val data = getData()?:throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor not found") + if (data.size != 1) { + throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") + } setAddButtonVisible(false) - LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_edit_text, view?.bottomSheetContainer, true) - val data = getData() - - if (data.size == 1) { - - data[0].hint?.let { editText1.hint = getString(it) } - editText1.inputType = data[0].inputType ?: InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES - editText1.addTextChangedListener { value = it?.toString() ?: "" } - editText1.setText((data[0].defaultValue ?: "").toString()) - - editText1.setOnEditorActionListener { v, actionId, _ -> - if (actionId == EditorInfo.IME_ACTION_DONE) { - delegate.onRowValueChanged(getValue(), row) - dismiss() - true - } else { - false - } + data[0].hint?.let { editText1.hint = getString(it) } + editText1.inputType = data[0].inputType ?: InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES + editText1.addTextChangedListener { value = it?.toString() ?: "" } + editText1.setText((data[0].defaultValue ?: "").toString()) + + editText1.setOnEditorActionListener { v, actionId, _ -> + if (actionId == EditorInfo.IME_ACTION_DONE) { + delegate.onRowValueChanged(getValue(), row) + dismiss() + true + } else { + false } } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetEditTextMultiLinesFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetEditTextMultiLinesFragment.kt index 3787218f..4014198d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetEditTextMultiLinesFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetEditTextMultiLinesFragment.kt @@ -7,6 +7,8 @@ import android.view.View import androidx.core.widget.addTextChangedListener import kotlinx.android.synthetic.main.bottom_sheet_edit_text_multi_lines.* import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* +import net.pokeranalytics.android.exceptions.RowRepresentableEditDescriptorException +import java.lang.AssertionError class BottomSheetEditTextMultiLinesFragment : BottomSheetFragment() { @@ -38,19 +40,19 @@ class BottomSheetEditTextMultiLinesFragment : BottomSheetFragment() { * Init UI */ private fun initUI() { + val data = getData()?:throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor not found") + if (data.size != 1) { + throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") + } setAddButtonVisible(false) LayoutInflater.from(requireContext()).inflate(net.pokeranalytics.android.R.layout.bottom_sheet_edit_text_multi_lines, view?.bottomSheetContainer, true) - val data = getData() - - if (data.size == 1) { - data[0].hint?.let { editText1.hint = getString(it) } - editText1.inputType = data[0].inputType ?: InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES - editText1.addTextChangedListener { value = it?.toString() ?: "" } - editText1.setText((data[0].defaultValue ?: "").toString()) - } + data[0].hint?.let { editText1.hint = getString(it) } + editText1.inputType = data[0].inputType ?: InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES + editText1.addTextChangedListener { value = it?.toString() ?: "" } + editText1.setText((data[0].defaultValue ?: "").toString()) } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetFragment.kt index 698b72e3..675c21de 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetFragment.kt @@ -23,17 +23,18 @@ import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.rowrepresentable.SessionRow enum class BottomSheetType { - NONE, - LIST, - LIST_STATIC, - LIST_GAME, - DOUBLE_LIST, - MULTI_SELECTION, - GRID, - EDIT_TEXT, - EDIT_TEXT_MULTI_LINES, - DOUBLE_EDIT_TEXT, - SUM + NONE { override fun newInstance() = BottomSheetFragment()}, + LIST { override fun newInstance() = BottomSheetListFragment()}, + LIST_STATIC { override fun newInstance() = BottomSheetStaticListFragment()}, + LIST_GAME { override fun newInstance() = BottomSheetListGameFragment()}, + DOUBLE_LIST { override fun newInstance() = BottomSheetListGameFragment()}, + MULTI_SELECTION { override fun newInstance() = BottomSheetMultiSelectionFragment()}, + GRID { override fun newInstance() = BottomSheetTableSizeGridFragment()}, + EDIT_TEXT { override fun newInstance() = BottomSheetEditTextFragment()}, + EDIT_TEXT_MULTI_LINES { override fun newInstance() = BottomSheetEditTextMultiLinesFragment()}, + DOUBLE_EDIT_TEXT { override fun newInstance() = BottomSheetDoubleEditTextFragment()}, + SUM { override fun newInstance() = BottomSheetSumFragment()}; + abstract fun newInstance(): BottomSheetFragment } open class BottomSheetFragment : BottomSheetDialogFragment() { @@ -42,7 +43,7 @@ open class BottomSheetFragment : BottomSheetDialogFragment() { lateinit var delegate: RowRepresentableDelegate private var isClearable: Boolean = true - private var rowRepresentableEditDescriptors: ArrayList = ArrayList() + private var rowRepresentableEditDescriptors: ArrayList? = null companion object { @@ -52,24 +53,10 @@ open class BottomSheetFragment : BottomSheetDialogFragment() { fragmentManager: FragmentManager?, row: RowRepresentable, delegate: RowRepresentableDelegate, - rowRepresentableEditDescriptors: ArrayList, + rowRepresentableEditDescriptors: ArrayList?, isClearable: Boolean? = true ): BottomSheetFragment { - - val bottomSheetFragment = when (row.bottomSheetType) { - BottomSheetType.LIST -> BottomSheetListFragment() - BottomSheetType.LIST_GAME -> BottomSheetListGameFragment() - BottomSheetType.LIST_STATIC -> BottomSheetStaticListFragment() - BottomSheetType.MULTI_SELECTION -> BottomSheetMultiSelectionFragment() - BottomSheetType.GRID -> BottomSheetTableSizeGridFragment() - BottomSheetType.DOUBLE_LIST -> BottomSheetListGameFragment() - BottomSheetType.EDIT_TEXT -> BottomSheetEditTextFragment() - BottomSheetType.EDIT_TEXT_MULTI_LINES -> BottomSheetEditTextMultiLinesFragment() - BottomSheetType.DOUBLE_EDIT_TEXT -> BottomSheetDoubleEditTextFragment() - BottomSheetType.SUM -> BottomSheetSumFragment() - else -> BottomSheetFragment() - } - + val bottomSheetFragment = row.bottomSheetType.newInstance() bottomSheetFragment.show(fragmentManager, "bottomSheet") bottomSheetFragment.row = row bottomSheetFragment.delegate = delegate @@ -173,7 +160,7 @@ open class BottomSheetFragment : BottomSheetDialogFragment() { /** * Return the data list */ - fun getData(): ArrayList { + fun getData(): ArrayList? { return this.rowRepresentableEditDescriptors } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt index fa7145d1..409e5041 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt @@ -8,6 +8,7 @@ import io.realm.RealmResults import kotlinx.android.synthetic.main.bottom_sheet_list.* import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* import net.pokeranalytics.android.R +import net.pokeranalytics.android.exceptions.RowRepresentableEditDescriptorException import net.pokeranalytics.android.ui.adapter.LiveRowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate @@ -70,10 +71,14 @@ open class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentable * Init data */ open fun initData() { - val bottomSheetData = getData() - if (bottomSheetData.isNotEmpty() && bottomSheetData.first().data != null) { - this.realmData = bottomSheetData.first().data as RealmResults<*> + val bottomSheetData = getData()?:throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor not found") + if (bottomSheetData.size != 1) { + throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") } + if (bottomSheetData.first().data == null) { + throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") + } + this.realmData = bottomSheetData.first().data as RealmResults<*> } /** diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt index 4f4c12f3..acdeb87b 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt @@ -9,6 +9,7 @@ import io.realm.RealmResults import kotlinx.android.synthetic.main.bottom_sheet_game_list.* import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* import net.pokeranalytics.android.R +import net.pokeranalytics.android.exceptions.RowRepresentableEditDescriptorException import net.pokeranalytics.android.model.Limit import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.view.RowRepresentable @@ -47,11 +48,15 @@ class BottomSheetListGameFragment : BottomSheetListFragment() { * Init data */ override fun initData() { - val bottomSheetData = getData() - if (bottomSheetData.isNotEmpty() && bottomSheetData.size >= 2 && bottomSheetData[1].data != null) { - this.limit = bottomSheetData[0].defaultValue as Int? - this.realmData = bottomSheetData[1].data as RealmResults<*> + val bottomSheetData = getData()?:throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor not found") + if (bottomSheetData.size != 2) { + throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") } + if (bottomSheetData[1].data == null) { + throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") + } + this.limit = bottomSheetData[0].defaultValue as Int? + this.realmData = bottomSheetData[1].data as RealmResults<*> } /** diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetMultiSelectionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetMultiSelectionFragment.kt index 717a7654..b9e08e4c 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetMultiSelectionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetMultiSelectionFragment.kt @@ -6,6 +6,8 @@ import android.os.Bundle import android.view.View import io.realm.RealmList import io.realm.RealmObject +import io.realm.RealmResults +import net.pokeranalytics.android.exceptions.RowRepresentableEditDescriptorException import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.ui.activity.EditableDataActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity @@ -65,13 +67,14 @@ open class BottomSheetMultiSelectionFragment : BottomSheetListFragment() { } override fun initData() { - super.initData() - getData().first().defaultValue?.let { - + val bottomSheetData = getData()?:throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor not found") + if (bottomSheetData.size != 1) { + throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") + } + bottomSheetData.first().defaultValue?.let { (it as RealmList<*>).forEach{row -> - selectedRows.add(row as RowRepresentable) + this.selectedRows.add(row as RowRepresentable) } } } - } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStaticListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStaticListFragment.kt index 8164a19e..ca857d71 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStaticListFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStaticListFragment.kt @@ -7,6 +7,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import kotlinx.android.synthetic.main.bottom_sheet_list.* import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* import net.pokeranalytics.android.R +import net.pokeranalytics.android.exceptions.RowRepresentableEditDescriptorException import net.pokeranalytics.android.model.TournamentType import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate @@ -44,10 +45,14 @@ class BottomSheetStaticListFragment : BottomSheetFragment(), StaticRowRepresenta * Init data */ private fun initData() { - val bottomSheetData = this.getData() - if (bottomSheetData.isNotEmpty() && bottomSheetData.first().staticData != null) { - this.staticRows = bottomSheetData.first().staticData as List + val bottomSheetData = getData()?:throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor not found") + if (bottomSheetData.size != 1) { + throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") } + if (bottomSheetData.first().staticData == null) { + throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") + } + this.staticRows = bottomSheetData.first().staticData as List } /** diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetSumFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetSumFragment.kt index 3f81b1b2..e9ff13fd 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetSumFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetSumFragment.kt @@ -9,6 +9,7 @@ import androidx.core.widget.addTextChangedListener import kotlinx.android.synthetic.main.bottom_sheet_sum.* import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* import net.pokeranalytics.android.R +import net.pokeranalytics.android.exceptions.RowRepresentableEditDescriptorException import net.pokeranalytics.android.util.extensions.round import net.pokeranalytics.android.util.extensions.toCurrency @@ -47,8 +48,10 @@ class BottomSheetSumFragment : BottomSheetFragment() { * Init UI */ private fun initUI() { - - val data = getData() + val data = getData()?:throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor not found") + if (data.size != 5) { + throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") + } setAddButtonVisible(false) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt index 171390d8..f1b079d6 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt @@ -6,6 +6,7 @@ import android.view.View import androidx.recyclerview.widget.GridLayoutManager import kotlinx.android.synthetic.main.bottom_sheet_grid.* import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* +import net.pokeranalytics.android.exceptions.RowRepresentableEditDescriptorException import net.pokeranalytics.android.model.TableSize import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate @@ -38,11 +39,11 @@ class BottomSheetTableSizeGridFragment : BottomSheetFragment(), StaticRowReprese * Init data */ private fun initData() { - - val bottomSheetData = getData() - if (bottomSheetData.isNotEmpty() && bottomSheetData.first().defaultValue != null) { - defaultSize = bottomSheetData.first().defaultValue as Int? + val bottomSheetData = getData()?:throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor not found") + if (bottomSheetData.size != 1) { + throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") } + defaultSize = bottomSheetData.first().defaultValue as Int? } /** diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt index a8298de4..8437a1ed 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt @@ -1,6 +1,7 @@ package net.pokeranalytics.android.ui.view import android.content.Context +import io.realm.RealmResults import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType import net.pokeranalytics.android.util.NULL_TEXT @@ -14,14 +15,9 @@ interface RowRepresentable : Displayable { return NULL_TEXT } - var isSelected: Boolean - get() { - return false - } - set(value) { - - } - + fun editingDescriptors(map:Map): ArrayList? { + return null + } } /** diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SimpleRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SimpleRow.kt index 95c0c1df..6f8610d4 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SimpleRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SimpleRow.kt @@ -3,6 +3,7 @@ package net.pokeranalytics.android.ui.view.rowrepresentable import net.pokeranalytics.android.R 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.ui.view.RowViewType @@ -12,4 +13,9 @@ enum class SimpleRow : RowRepresentable { override val resId: Int? = R.string.name override val viewType: Int = RowViewType.TITLE_VALUE.ordinal override val bottomSheetType: BottomSheetType = BottomSheetType.EDIT_TEXT + + override fun editingDescriptors(map: Map): ArrayList? { + val defaultValue by map + return arrayListOf(RowRepresentableEditDescriptor(defaultValue, this.resId)) + } } \ No newline at end of file