From a41933d2f767cdb8e5e33d8f862fdaa61a48cfa6 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Mon, 11 Mar 2019 10:02:01 +0100 Subject: [PATCH 1/7] Add test to avoid crash for limit --- .../java/net/pokeranalytics/android/model/realm/Session.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 42db95e4..ee1d17c1 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 @@ -416,7 +416,9 @@ open class Session : RealmObject(), SessionInterface, Manageable, StaticRowRepre fun getGameTitle(): String { var gameTitle = "" limit?.let { - gameTitle += Limit.values()[it].shortName + " " + if (it >= 0 && it < Limit.values().size) { + gameTitle += Limit.values()[it].shortName + " " + } } if (game != null) { gameTitle += game?.name From 6b34d36502dd578dcd9af7cf7cb89aab008b433f Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Mon, 11 Mar 2019 10:02:51 +0100 Subject: [PATCH 2/7] Refactor BottomSheet ListFragment & ListGameFragment --- .../bottomsheet/BottomSheetListFragment.kt | 13 +++-- .../BottomSheetListGameFragment.kt | 49 +++---------------- 2 files changed, 13 insertions(+), 49 deletions(-) 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 cb57771d..4ab59201 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 @@ -14,11 +14,10 @@ import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType -class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentableDataSource, - RowRepresentableDelegate { +open class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentableDataSource, RowRepresentableDelegate { - private var realmData: RealmResults<*>? = null - private lateinit var dataAdapter: RowRepresentableAdapter + lateinit var dataAdapter: RowRepresentableAdapter + var realmData: RealmResults<*>? = null override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -35,7 +34,7 @@ class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentableDataS realmData?.let { return it[position] as RowRepresentable } - return null + throw IllegalStateException("Need to implement Data Source") } override fun numberOfRows(): Int { @@ -70,7 +69,7 @@ class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentableDataS /** * Init data */ - private fun initData() { + open fun initData() { val bottomSheetData = getData() if (bottomSheetData.isNotEmpty() && bottomSheetData.first().data != null) { this.realmData = bottomSheetData.first().data as RealmResults<*> @@ -80,7 +79,7 @@ class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentableDataS /** * Init UI */ - private fun initUI() { + open fun initUI() { LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_list, view?.bottomSheetContainer, true) 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 01ba66a4..cf44877d 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 @@ -10,18 +10,13 @@ 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.model.Limit -import net.pokeranalytics.android.ui.adapter.LiveRowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter -import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.view.RowRepresentable -import net.pokeranalytics.android.ui.view.RowViewType -class BottomSheetListGameFragment : BottomSheetFragment(), LiveRowRepresentableDataSource, RowRepresentableDelegate { +class BottomSheetListGameFragment : BottomSheetListFragment() { - private var limit: Int = -1 - private var realmData: RealmResults<*>? = null - private lateinit var dataAdapter: RowRepresentableAdapter + private var limit: Int? = 0 private val values = ArrayList() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -30,40 +25,10 @@ class BottomSheetListGameFragment : BottomSheetFragment(), LiveRowRepresentableD initUI() } - override fun onResume() { - super.onResume() - dataAdapter.notifyDataSetChanged() - } - override fun getValue(): Any? { return values } - override fun rowRepresentableForPosition(position: Int): RowRepresentable? { - realmData?.let { - return it[position] as RowRepresentable - } - throw IllegalStateException("Need to implement Data Source") - } - - override fun numberOfRows(): Int { - realmData?.let { - return it.size - } - return 0 - } - - override fun viewTypeForPosition(position: Int): Int { - return RowViewType.BOTTOM_SHEET_DATA.ordinal - } - - override fun indexForRow(row: RowRepresentable): Int { - realmData?.let { - return it.indexOf(row) - } - throw IllegalStateException("Need to implement Data Source") - } - override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { realmData?.let { val selectedData = it[position] @@ -79,10 +44,10 @@ class BottomSheetListGameFragment : BottomSheetFragment(), LiveRowRepresentableD /** * Init data */ - private fun initData() { + override fun initData() { val bottomSheetData = getData() if (bottomSheetData.isNotEmpty() && bottomSheetData.size >= 2 && bottomSheetData[1].data != null) { - this.limit = bottomSheetData[0].defaultValue as Int? ?: -1 + this.limit = bottomSheetData[0].defaultValue as Int? this.realmData = bottomSheetData[1].data as RealmResults<*> } } @@ -90,18 +55,18 @@ class BottomSheetListGameFragment : BottomSheetFragment(), LiveRowRepresentableD /** * Init UI */ - private fun initUI() { + override fun initUI() { LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_game_list, view?.bottomSheetContainer, true) - values.add(0, if (limit == -1) null else limit) + values.add(0, limit) values.add(1, null) chipGroup.removeAllViews() Limit.values().forEach { val chip = Chip(requireContext()) - chip.text = it.shortName chip.id = it.ordinal + chip.text = it.shortName chip.isChecked = it.ordinal == limit chipGroup.addView(chip) } From ec4892f6e21fc8a52d1104454eed62dae0fff050 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Mon, 11 Mar 2019 10:19:44 +0100 Subject: [PATCH 3/7] Improve Session game update --- .../java/net/pokeranalytics/android/model/realm/Session.kt | 3 +++ .../components/bottomsheet/BottomSheetListGameFragment.kt | 1 - 2 files changed, 3 insertions(+), 1 deletion(-) 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 c4402be2..f7710373 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 @@ -774,9 +774,12 @@ open class Session : RealmObject(), SessionInterface, Manageable, StaticRowRepre } catch (e: Exception) { null } + } else if (value is Game?) { + game = value } else if (value == null) { limit = null game = null + } } SessionRow.INITIAL_BUY_IN -> tournamentEntryFee = if (value == null) null else (value as String).toDouble() 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 cf44877d..5b69820c 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 @@ -38,7 +38,6 @@ class BottomSheetListGameFragment : BottomSheetListFragment() { dismiss() } } - super.onRowSelected(position, row, fromAction) } /** From 663cf2ec054af6cf8ba78423e0f225d28f69ef3a Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Mon, 11 Mar 2019 10:20:39 +0100 Subject: [PATCH 4/7] Add comment --- .../components/bottomsheet/BottomSheetListGameFragment.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) 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 5b69820c..52707e9d 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 @@ -13,7 +13,10 @@ import net.pokeranalytics.android.model.Limit import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.view.RowRepresentable - +/** + * Bottom Sheet List Game Fragment + * Display a list of game + chips to choose the game limit + */ class BottomSheetListGameFragment : BottomSheetListFragment() { private var limit: Int? = 0 From 5bcf78dc2980faee710470ff0457888d22085fa6 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Mon, 11 Mar 2019 10:28:14 +0100 Subject: [PATCH 5/7] Fix game update value --- .../java/net/pokeranalytics/android/model/realm/Session.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 f7710373..c978f586 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 @@ -31,6 +31,7 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.HeaderRowRepresentabl import net.pokeranalytics.android.ui.view.rowrepresentable.SeparatorRowRepresentable import net.pokeranalytics.android.ui.view.rowrepresentable.SessionRow import net.pokeranalytics.android.util.* +import timber.log.Timber import java.util.* import java.util.Currency import kotlin.collections.ArrayList @@ -763,6 +764,7 @@ open class Session : RealmObject(), SessionInterface, Manageable, StaticRowRepre } SessionRow.GAME -> { + Timber.d("Game: $value") if (value is ArrayList<*>) { limit = try { (value[0] as Int?) @@ -774,7 +776,7 @@ open class Session : RealmObject(), SessionInterface, Manageable, StaticRowRepre } catch (e: Exception) { null } - } else if (value is Game?) { + } else if (value is Game) { game = value } else if (value == null) { limit = null From a7e0ba7a8a2acb74932e7fb9ca94d1bf15078bc6 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Mon, 11 Mar 2019 10:28:24 +0100 Subject: [PATCH 6/7] Remove logs --- .../main/java/net/pokeranalytics/android/model/realm/Session.kt | 1 - 1 file changed, 1 deletion(-) 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 c978f586..fde2fa71 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 @@ -764,7 +764,6 @@ open class Session : RealmObject(), SessionInterface, Manageable, StaticRowRepre } SessionRow.GAME -> { - Timber.d("Game: $value") if (value is ArrayList<*>) { limit = try { (value[0] as Int?) From d0cd56318916bd8f08c581306275343e0f0796ae Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Mon, 11 Mar 2019 10:31:35 +0100 Subject: [PATCH 7/7] Remove unnecessary BottomSheetDelegate --- .../android/ui/fragment/EditableDataFragment.kt | 7 +------ .../android/ui/fragment/SessionFragment.kt | 3 +-- .../components/bottomsheet/BottomSheetFragment.kt | 13 +++---------- 3 files changed, 5 insertions(+), 18 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt index bc59059e..992b817a 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt @@ -21,12 +21,11 @@ import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment -import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetDelegate import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetFragment import net.pokeranalytics.android.ui.view.RowRepresentable -open class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, BottomSheetDelegate { +open class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate { lateinit var parentActivity: PokerAnalyticsActivity lateinit var item: RealmObject @@ -68,10 +67,6 @@ open class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDele BottomSheetFragment.create(fragmentManager, row, this, (this.item as RowRepresentableDataSource).editDescriptors(row)) } - override fun clickOnAdd(row: RowRepresentable) { - Toast.makeText(requireContext(), "Add new element: $row", Toast.LENGTH_SHORT).show() - } - override fun onRowValueChanged(value: Any?, row: RowRepresentable) { this.getRealm().executeTransaction { (this.item as Savable).updateValue(value, row) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt index 906cb013..a8f0e4c5 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt @@ -20,7 +20,6 @@ import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment -import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetDelegate import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetFragment import net.pokeranalytics.android.ui.helpers.DateTimePickerManager import net.pokeranalytics.android.ui.view.RowRepresentable @@ -30,7 +29,7 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.SessionRow import java.util.* -class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, BottomSheetDelegate { +class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate { private lateinit var parentActivity: PokerAnalyticsActivity private lateinit var currentSession: Session 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 d179e7ad..712fcf89 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 @@ -35,17 +35,10 @@ enum class BottomSheetType { SUM } -interface BottomSheetDelegate : RowRepresentableDelegate { - fun clickOnAdd(row: RowRepresentable) {} - fun clickOnClear(row: RowRepresentable) { - this.onRowValueChanged(null, row) - } -} - open class BottomSheetFragment : BottomSheetDialogFragment() { lateinit var row: RowRepresentable - lateinit var delegate: BottomSheetDelegate + lateinit var delegate: RowRepresentableDelegate private var isClearable: Boolean = true private var rowRepresentableEditDescriptors: ArrayList = ArrayList() @@ -57,7 +50,7 @@ open class BottomSheetFragment : BottomSheetDialogFragment() { fun create( fragmentManager: FragmentManager?, row: RowRepresentable, - delegate: BottomSheetDelegate, + delegate: RowRepresentableDelegate, rowRepresentableEditDescriptors: ArrayList, isClearable: Boolean? = true ): BottomSheetFragment { @@ -131,7 +124,7 @@ open class BottomSheetFragment : BottomSheetDialogFragment() { // Menu bottomSheetToolbar.menu.findItem(R.id.actionClear).setOnMenuItemClickListener { - this.delegate.clickOnClear(row) + delegate.onRowValueChanged(null, row) dismiss() true }