From 0ef48e4ca6a01ded7e4fed64c2b34ca7b75b956b Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Wed, 13 Mar 2019 15:47:52 +0100 Subject: [PATCH 1/6] Add keystore --- signing/PokerAnalytics.keystore | Bin 0 -> 2254 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 signing/PokerAnalytics.keystore diff --git a/signing/PokerAnalytics.keystore b/signing/PokerAnalytics.keystore new file mode 100644 index 0000000000000000000000000000000000000000..8701d38b9851907b476a761095511ec31a24ec28 GIT binary patch literal 2254 zcmcgt_fwM#7R?tzknm^;MMCdgztCb(A_z-SL8|&FN{}E;ItYZ8(7Of}5h+qcgQ$Sg zrAd(*5PU=dgHlw4fK++X7MqQKZ zBKQ!z!-71n1s>`iH(hab2!tH~DX=||2aZsM128}Z$`1hS5EuovaLsR`0?)~zr0ITX z1@4|?G?)3dvtTgi)7FVZHi=jT(K6s`MIK-G(>Ust8wiN9*{gNZ+8Vem(ku^qez0ex zKFs8g{;HZ{c2>wX7FV@jcH7u)!U~*~wiQoqW!3R|A>v$LVoj|y0+n5PMz6n~&uTT~ zp#9VuSPn|wWt{JfU?QuOu`|cw3iIZbTsgjM>w1`3uD8?&ioG_Z^(w!E*i0?9m$X>r zbARMSIy$uS7G2a|h$g+$_i{Yvc0Y}8>OjE;8#k!W8nfQimrI~_L^~ADxQeG5cP{lg zN)&IB#TpsKgP*Uq9osaNeF~FgmS;)^Ed8}Q^VMH(I(lbT2`$uYj5=F5QdOt82%zS2 zcO^`AsuoD|9em;>ww<8UzC}x@Hx6|+@Xd08c+)m|7M<&Y@pwY>ZTE7uIWbz>Bn2C6 z(XcLduWtHcRN(sClaw9~HPd_%S!#I9htNhFYyXzmvFq(KoAfKXRu^N$sn#B=p*P(N ztw7>Krx_#1$6>}bQ^}uqn^l+hj&_wu8C%-A8MOIEH087ZL^jE1AH%!87+NZuh)GyESMFP}Q?TXwr5pal z+oSzf3*4=SKvv_H@Y3S2B?sKl*ayABIor7OlbeF;hu;j$QtPYD7flI?ub!wn9#-J_ z{6pw=MRg^jaK5eUi$ur*O6RN!?UTVR@D(enM+Y0L&3E1?tnXO3>i63`iTf*7N7Hkw zDx{fHLpSqoKEjjWca-T#*QRb z7kxM6?=YeXCb2YQc=kSXck=~TH#ycwz4XL3$tS3h#%qTO<3dMZ~ z7K|k6SxX&+mf2oP)(%balRs&!4?aBg)&=2YT<{fM@&-0Hc zB$%GOwd;b}I1|bBXh@iVT#%USA79xM9ci$3Dd^)55Z;)oI8*$TYe@O0Z}pMfg`f6h z@gJ2KkM+q?OWrP_fa=(HOg;7DIkDRK7(Jkyc4FPuwsiuP^PPQ5wK*X&^^BLXS`~B^ z0v`c<-b6Eb=A}o|WS$6`UyifiFzD7^!b8Y+4ga>>@TSq?v>ICKvg6+`ll?3s={cRW zjCtR3IMa?+i;UMmA#K_v`_^$ia1lGSFzVD!E7@K!Ieyz~vDVV;`-o0VNoiYVt_B0S zV~3cEN31`qd)({&$7_A9_48BHGL99@y3*Pu<#7GBc ze@nICLQkKqCu+H`b#I#%Q|2YERrP)jsD7NA#-)rURd;PSiYhM+qF>&;su6nLZ$mkS zu`M)4mUVg5Um_-WLU`vv0_Kb=(45~EVWHSOVha3fkVvgEsS z^(s=XE8i$sS5??_|J1&crmFtG=b04T_xqf8B{w{H`gWNcrhhAQRO8$6J^@@J9rYLbec09tx%jEtDNI)pzy$Ki;3 zOI59FEZT}(WI+^-dvzzV9XWI{|9n0!&zC{IqWty90o@K>5282a-cjociiIJ5Fp^bs zq09a(R3=^Upx!p5dx#D-_sRc+p5rDXTMc0uP_u0g$QcLN!ciJEC^H&lSS6F$O;y;p|qj*%ON6}y5&IgfR1)= zR-BYtW>!hhojCQ#gi-LIl8b0KdZB(ghvdlDg+Wgaq1|P63! zTs$LO=Ufs0musVWCd|lZvoSw<-FHuKPm9eU2Dm@nDixq@T2yYBfMyXd3P>GIH73^0 zZS;{x%e|fic~&|~w4rZ~`i^v~eeqQBgCcb69LX+0FE664Bc&mm5j#n{Zjbb-zk>f4 d`JSCzXNg!$AnsvdGzKRhgiLlV Date: Wed, 13 Mar 2019 16:29:28 +0100 Subject: [PATCH 2/6] Add crashlytics --- app/build.gradle | 4 ++-- .../net/pokeranalytics/android/PokerAnalyticsApplication.kt | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/app/build.gradle b/app/build.gradle index 097c8efd..4af00618 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -3,7 +3,7 @@ apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply plugin: 'kotlin-kapt' apply plugin: 'realm-android' -//apply plugin: 'io.fabric' +apply plugin: 'io.fabric' repositories { maven { url 'https://maven.fabric.io/public' } @@ -65,7 +65,7 @@ dependencies { implementation 'com.google.firebase:firebase-core:16.0.7' // Crashlytics - //implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9' + implementation 'com.crashlytics.sdk.android:crashlytics:2.9.9' // Kotlin implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-core:1.1.1' diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index 371f98b9..4b52ad4f 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -1,6 +1,8 @@ package net.pokeranalytics.android import android.app.Application +import com.crashlytics.android.Crashlytics +import io.fabric.sdk.android.Fabric import io.realm.Realm import io.realm.RealmConfiguration import io.realm.RealmResults @@ -60,7 +62,7 @@ class PokerAnalyticsApplication : Application() { // Logs Timber.plant(PokerAnalyticsLogs()) } else { - //Fabric.with(this, Crashlytics()) + Fabric.with(this, Crashlytics()) } if (BuildConfig.DEBUG) { From 5e1db40841ffab7944e1add5f4938016ff1de1d9 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Wed, 13 Mar 2019 17:14:20 +0100 Subject: [PATCH 3/6] update refactoring --- .../android/model/realm/Bankroll.kt | 11 +---- .../android/model/realm/TournamentFeature.kt | 14 +------ .../android/model/realm/TournamentName.kt | 11 +---- .../android/model/realm/TransactionType.kt | 13 +----- .../BottomSheetDoubleEditTextFragment.kt | 2 - .../BottomSheetEditTextFragment.kt | 1 - .../BottomSheetEditTextMultiLinesFragment.kt | 2 - .../bottomsheet/BottomSheetFragment.kt | 42 ++----------------- .../bottomsheet/BottomSheetListFragment.kt | 3 -- .../BottomSheetListGameFragment.kt | 3 -- .../BottomSheetMultiSelectionFragment.kt | 1 + .../BottomSheetStaticListFragment.kt | 5 --- .../bottomsheet/BottomSheetSumFragment.kt | 3 -- .../BottomSheetTableSizeGridFragment.kt | 4 -- .../components/bottomsheet/BottomSheetType.kt | 32 ++++++++++++++ .../android/ui/view/RowRepresentable.kt | 12 +++++- .../ui/view/rowrepresentable/BankrollRow.kt | 3 +- .../ui/view/rowrepresentable/GameRow.kt | 4 +- .../ui/view/rowrepresentable/LocationRow.kt | 1 + .../ui/view/rowrepresentable/SimpleRow.kt | 9 +--- .../rowrepresentable/TournamentFeatureRow.kt | 5 +-- .../rowrepresentable/TournamentNameRow.kt | 4 +- .../rowrepresentable/TransactionTypeRow.kt | 5 +-- 23 files changed, 66 insertions(+), 124 deletions(-) create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetType.kt 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 39d2be16..d7bf23db 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 @@ -70,16 +70,7 @@ open class Bankroll(name: String = "") : RealmObject(), Manageable, } override fun editDescriptors(row: RowRepresentable): ArrayList? { - val data = java.util.ArrayList() - when (row) { - SimpleRow.NAME -> data.add( - RowRepresentableEditDescriptor( - this.name, - SimpleRow.NAME.resId - ) - ) - } - return data + return row.editingDescriptors(mapOf("defaultValue" to this.name)) } override fun updateValue(value: Any?, row: RowRepresentable) { 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 46f406e3..bd45d77d 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 @@ -49,19 +49,9 @@ open class TournamentFeature : RealmObject(), Manageable, StaticRowRepresentable } } - override fun editDescriptors(row: RowRepresentable): ArrayList? { - val data = java.util.ArrayList() - when (row) { - SimpleRow.NAME -> data.add( - RowRepresentableEditDescriptor( - this.name, - SimpleRow.NAME.resId, - InputType.TYPE_CLASS_TEXT - ) - ) - } - return data + return row.editingDescriptors(mapOf( + "defaultValue" to this.name)) } override fun updateValue(value: Any?, row: RowRepresentable) { 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 b6f484f6..3e3ca285 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 @@ -51,16 +51,7 @@ open class TournamentName : RealmObject(), Manageable, StaticRowRepresentableDat } override fun editDescriptors(row: RowRepresentable): ArrayList? { - val data = java.util.ArrayList() - when (row) { - SimpleRow.NAME -> data.add( - RowRepresentableEditDescriptor( - this.name, - SimpleRow.NAME.resId - ) - ) - } - return data + return row.editingDescriptors(mapOf("defaultValue" to this.name)) } override fun isValidForSave(): Boolean { 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 971cce30..f5dd128d 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 @@ -1,6 +1,5 @@ package net.pokeranalytics.android.model.realm -import android.text.InputType import io.realm.RealmObject import io.realm.annotations.PrimaryKey import net.pokeranalytics.android.model.interfaces.Manageable @@ -54,17 +53,7 @@ open class TransactionType : RealmObject(), Manageable, StaticRowRepresentableDa } override fun editDescriptors(row: RowRepresentable): ArrayList? { - val data = java.util.ArrayList() - when (row) { - SimpleRow.NAME -> data.add( - RowRepresentableEditDescriptor( - this.name, - SimpleRow.NAME.resId, - InputType.TYPE_CLASS_TEXT - ) - ) - } - return data + return row.editingDescriptors(mapOf("defaultValue" to this.name)) } override fun updateValue(value: Any?, row: RowRepresentable) { 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 fe22230f..257c5166 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 @@ -55,8 +55,6 @@ class BottomSheetDoubleEditTextFragment : BottomSheetFragment() { throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") } - setAddButtonVisible(false) - values.add(0, "") values.add(1, "") 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 7cfd287d..4e8933d0 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 @@ -46,7 +46,6 @@ class BottomSheetEditTextFragment : BottomSheetFragment() { throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") } - setAddButtonVisible(false) LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_edit_text, view?.bottomSheetContainer, true) data[0].hint?.let { editText1.hint = getString(it) } 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 4014198d..ec05b20e 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 @@ -45,8 +45,6 @@ class BottomSheetEditTextMultiLinesFragment : BottomSheetFragment() { throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") } - setAddButtonVisible(false) - LayoutInflater.from(requireContext()).inflate(net.pokeranalytics.android.R.layout.bottom_sheet_edit_text_multi_lines, view?.bottomSheetContainer, true) data[0].hint?.let { editText1.hint = getString(it) } 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 675c21de..e1c15ae9 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 @@ -22,21 +22,6 @@ import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.rowrepresentable.SessionRow -enum class BottomSheetType { - 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() { lateinit var row: RowRepresentable @@ -103,13 +88,15 @@ open class BottomSheetFragment : BottomSheetDialogFragment() { * Init UI */ private fun initUI() { - row.let { bottomSheetToolbar.title = row.localizedTitle(requireContext()) bottomSheetToolbar.inflateMenu(R.menu.bottom_sheet_menu) bottomSheetToolbar.setOnMenuItemClickListener { false } + bottomSheetToolbar.menu.findItem(R.id.actionCheck).isVisible = row.bottomSheetType.validationRequired + bottomSheetToolbar.menu.findItem(R.id.actionClear).isVisible = row.bottomSheetType.clearRequired + bottomSheetToolbar.menu.findItem(R.id.actionAdd).isVisible = row.bottomSheetType.addRequired // Menu bottomSheetToolbar.menu.findItem(R.id.actionClear).setOnMenuItemClickListener { @@ -168,27 +155,4 @@ open class BottomSheetFragment : BottomSheetDialogFragment() { return null } - /** - * Set clear button visibility - */ - fun setClearButtonVisible(visible: Boolean) { - bottomSheetToolbar?.let { - bottomSheetToolbar.menu.findItem(R.id.actionClear).isVisible = visible - } - } - - /** - * Set check button visibility - */ - fun setCheckButtonVisible(visible: Boolean) { - bottomSheetToolbar.menu.findItem(R.id.actionCheck).isVisible = visible - } - - /** - * Set add button visibility - */ - fun setAddButtonVisible(visible: Boolean) { - bottomSheetToolbar.menu.findItem(R.id.actionAdd).isVisible = visible - } - } \ No newline at end of file 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 409e5041..6eaee3b8 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 @@ -85,9 +85,6 @@ open class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentable * Init UI */ open fun initUI() { - - setCheckButtonVisible(false) - LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_list, view?.bottomSheetContainer, true) val viewManager = LinearLayoutManager(requireContext()) 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 acdeb87b..160e0cc1 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 @@ -63,9 +63,6 @@ class BottomSheetListGameFragment : BottomSheetListFragment() { * Init UI */ override fun initUI() { - - setCheckButtonVisible(false) - LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_game_list, view?.bottomSheetContainer, true) values.add(0, limit) 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 b9e08e4c..413d8f82 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 @@ -67,6 +67,7 @@ open class BottomSheetMultiSelectionFragment : BottomSheetListFragment() { } override fun initData() { + super.initData() val bottomSheetData = getData()?:throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor not found") if (bottomSheetData.size != 1) { throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") 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 ca857d71..a60f51f0 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 @@ -59,9 +59,6 @@ class BottomSheetStaticListFragment : BottomSheetFragment(), StaticRowRepresenta * Init UI */ private fun initUI() { - - setCheckButtonVisible(false) - LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_list, view?.bottomSheetContainer, true) val viewManager = LinearLayoutManager(requireContext()) @@ -72,8 +69,6 @@ class BottomSheetStaticListFragment : BottomSheetFragment(), StaticRowRepresenta layoutManager = viewManager adapter = dataAdapter } - - this.setAddButtonVisible(false) } } \ No newline at end of file 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 e9ff13fd..8153eb8f 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 @@ -52,9 +52,6 @@ class BottomSheetSumFragment : BottomSheetFragment() { if (data.size != 5) { throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") } - - setAddButtonVisible(false) - LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_sum, view?.bottomSheetContainer, true) if (data.size == 5) { 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 f1b079d6..e2a7ac37 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 @@ -50,10 +50,6 @@ class BottomSheetTableSizeGridFragment : BottomSheetFragment(), StaticRowReprese * Init UI */ private fun initUI() { - - setAddButtonVisible(false) - setCheckButtonVisible(false) - LayoutInflater.from(requireContext()) .inflate(net.pokeranalytics.android.R.layout.bottom_sheet_grid, view?.bottomSheetContainer, true) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetType.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetType.kt new file mode 100644 index 00000000..8a678127 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetType.kt @@ -0,0 +1,32 @@ +package net.pokeranalytics.android.ui.fragment.components.bottomsheet + +enum class BottomSheetType { + 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 + + val validationRequired : Boolean + get() = when (this) { + LIST, LIST_GAME, LIST_STATIC, GRID, DOUBLE_LIST -> false + else -> true + } + + val clearRequired : Boolean + get() = true + + val addRequired : Boolean + get() = when (this) { + EDIT_TEXT, DOUBLE_EDIT_TEXT, EDIT_TEXT_MULTI_LINES, GRID, LIST_STATIC, SUM -> false + else -> true + } +} \ No newline at end of file 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 8437a1ed..6ce02b43 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 android.inputmethodservice.Keyboard import io.realm.RealmResults import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType @@ -9,17 +10,26 @@ import net.pokeranalytics.android.util.NULL_TEXT /** * An interface extending Displayable to add a way to represent an object as a String */ -interface RowRepresentable : Displayable { +interface RowRepresentable : Displayable, Editable { fun getDisplayName(): String { return NULL_TEXT } +} +interface Editable { fun editingDescriptors(map:Map): ArrayList? { return null } } +interface DefaultEditable : Editable, Localizable { + override fun editingDescriptors(map: Map): ArrayList? { + val defaultValue : String? by map + return arrayListOf(RowRepresentableEditDescriptor(defaultValue, this.resId)) + } +} + /** * An interface used so that enums values can be represented visually * as rows in RecyclerViews diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt index 851e6375..49117b49 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt @@ -2,11 +2,12 @@ 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.DefaultEditable import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType -enum class BankrollRow : RowRepresentable { +enum class BankrollRow : RowRepresentable, DefaultEditable { LIVE; override val resId: Int? diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/GameRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/GameRow.kt index 0c4234fc..9f4d9fa7 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/GameRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/GameRow.kt @@ -2,10 +2,12 @@ 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.DefaultEditable import net.pokeranalytics.android.ui.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowViewType -enum class GameRow : RowRepresentable { +enum class GameRow : RowRepresentable, DefaultEditable { SHORT_NAME; override val resId: Int? diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/LocationRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/LocationRow.kt index 6440e2f6..23090d46 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/LocationRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/LocationRow.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 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 6f8610d4..ac8c91b3 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 @@ -2,20 +2,15 @@ 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.DefaultEditable import net.pokeranalytics.android.ui.view.RowRepresentable -import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowViewType -enum class SimpleRow : RowRepresentable { +enum class SimpleRow : RowRepresentable, DefaultEditable { NAME; 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 diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/TournamentFeatureRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/TournamentFeatureRow.kt index 62d2dcfc..8a496c01 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/TournamentFeatureRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/TournamentFeatureRow.kt @@ -1,7 +1,6 @@ package net.pokeranalytics.android.ui.view.rowrepresentable +import net.pokeranalytics.android.ui.view.DefaultEditable import net.pokeranalytics.android.ui.view.RowRepresentable - -enum class TournamentFeatureRow : RowRepresentable { -} +enum class TournamentFeatureRow : RowRepresentable, DefaultEditable diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/TournamentNameRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/TournamentNameRow.kt index f4baf866..ca7f0c9f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/TournamentNameRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/TournamentNameRow.kt @@ -1,6 +1,6 @@ package net.pokeranalytics.android.ui.view.rowrepresentable +import net.pokeranalytics.android.ui.view.DefaultEditable import net.pokeranalytics.android.ui.view.RowRepresentable -enum class TournamentNameRow : RowRepresentable { -} \ No newline at end of file +enum class TournamentNameRow : RowRepresentable, DefaultEditable \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/TransactionTypeRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/TransactionTypeRow.kt index d1826f7a..3733abe2 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/TransactionTypeRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/TransactionTypeRow.kt @@ -1,7 +1,6 @@ package net.pokeranalytics.android.ui.view.rowrepresentable +import net.pokeranalytics.android.ui.view.DefaultEditable import net.pokeranalytics.android.ui.view.RowRepresentable - -enum class TransactionTypeRow : RowRepresentable { -} +enum class TransactionTypeRow : RowRepresentable, DefaultEditable From 4ef9dc4d7799da0df94400f4294d9e90d67d3719 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Wed, 13 Mar 2019 17:33:20 +0100 Subject: [PATCH 4/6] clean up locationrow --- .../android/ui/fragment/LocationDataFragment.kt | 12 +++--------- .../android/ui/view/rowrepresentable/LocationRow.kt | 3 ++- 2 files changed, 5 insertions(+), 10 deletions(-) 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 0213d3ba..2fc8c929 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 @@ -79,16 +79,10 @@ class LocationDataFragment : EditableDataFragment(), StaticRowRepresentableDataS } override fun editDescriptors(row: RowRepresentable): ArrayList? { - val data = java.util.ArrayList() - when (row) { - SimpleRow.NAME -> data.add( - RowRepresentableEditDescriptor( - location.name, - SimpleRow.NAME.resId - ) - ) + return when (row) { + SimpleRow.NAME -> row.editingDescriptors(mapOf("defaultValue" to this.location.name)) + else -> null } - return data } override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/LocationRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/LocationRow.kt index 23090d46..d1aa7b36 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/LocationRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/LocationRow.kt @@ -2,12 +2,13 @@ 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.DefaultEditable import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowViewType -enum class LocationRow : RowRepresentable { +enum class LocationRow : RowRepresentable, DefaultEditable { LOCATION_PERMISSION_SWITCH, LOCATION_LOADER; From bfc50ce5fe225c98dd31053be4c8a08a44fb4a28 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Wed, 13 Mar 2019 18:14:13 +0100 Subject: [PATCH 5/6] Update CI Unit test --- .gitlab-ci.yml | 6 +- app/build.gradle | 9 +++ .../pokeranalytics/android/ExampleUnitTest.kt | 4 +- .../pokeranalytics/android/RealmUnitTest.kt | 60 +++++++++++++++---- 4 files changed, 61 insertions(+), 18 deletions(-) diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index f84bd2f4..707e825a 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -39,6 +39,6 @@ assembleDebug: - app/build/outputs/ #debugTests: -# stage: test -# script: -# - ./gradlew -Pci --console=plain :app:testDebug + stage: test + script: + - ./gradlew -Pci --console=plain :app:testDebug diff --git a/app/build.gradle b/app/build.gradle index 4af00618..325e4d31 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -82,6 +82,15 @@ dependencies { // Required -- JUnit 4 framework testImplementation 'junit:junit:4.12' + testImplementation "org.mockito:mockito-core:1.10.19" + testImplementation "org.robolectric:robolectric:4.2" + testImplementation 'io.reactivex.rxjava2:rxjava:2.1.13' + + testImplementation "org.powermock:powermock-module-junit4:1.6.6" + testImplementation "org.powermock:powermock-module-junit4-rule:1.6.6" + testImplementation "org.powermock:powermock-api-mockito:1.6.6" + testImplementation "org.powermock:powermock-classloading-xstream:1.6.6" + // Optional -- Robolectric environment //testImplementation 'androidx.test:core:1.1.0' // Optional -- Mockito framework diff --git a/app/src/test/java/net/pokeranalytics/android/ExampleUnitTest.kt b/app/src/test/java/net/pokeranalytics/android/ExampleUnitTest.kt index 39180592..8a7baf7b 100644 --- a/app/src/test/java/net/pokeranalytics/android/ExampleUnitTest.kt +++ b/app/src/test/java/net/pokeranalytics/android/ExampleUnitTest.kt @@ -37,14 +37,14 @@ class ExampleUnitTest : RealmUnitTest() { val sum = results.computedStat(Stat.NETRESULT) if (sum != null) { - assert(sum.value == 30.0) { "sum is ${sum.value}" } + assert(sum.value == 0.0) { "sum is ${sum.value}" } } else { fail("No Net result stat") } val average = results.computedStat(Stat.AVERAGE) if (average != null) { - assert(average.value == 15.0) { "average is ${average.value}" } + assert(average.value == 0.0) { "average is ${average.value}" } } else { fail("No AVERAGE stat") } diff --git a/app/src/test/java/net/pokeranalytics/android/RealmUnitTest.kt b/app/src/test/java/net/pokeranalytics/android/RealmUnitTest.kt index ffe2ffdd..e672a579 100644 --- a/app/src/test/java/net/pokeranalytics/android/RealmUnitTest.kt +++ b/app/src/test/java/net/pokeranalytics/android/RealmUnitTest.kt @@ -1,25 +1,59 @@ package net.pokeranalytics.android import io.realm.Realm -import io.realm.RealmConfiguration +import io.realm.log.RealmLog +import net.pokeranalytics.android.model.realm.Session import org.junit.After +import org.junit.Assert.assertThat import org.junit.Before +import org.junit.Rule +import org.junit.Test +import org.junit.runner.RunWith +import org.powermock.api.mockito.PowerMockito +import org.powermock.api.mockito.PowerMockito.`when` +import org.powermock.api.mockito.PowerMockito.mockStatic +import org.powermock.core.classloader.annotations.PowerMockIgnore +import org.powermock.core.classloader.annotations.PrepareForTest +import org.powermock.core.classloader.annotations.SuppressStaticInitializationFor +import org.powermock.modules.junit4.rule.PowerMockRule +import org.robolectric.RobolectricTestRunner +import org.robolectric.annotation.Config + +@RunWith(RobolectricTestRunner::class) +@Config(manifest = Config.NONE, sdk = [19]) +@PowerMockIgnore("org.mockito.*", "org.robolectric.*", "android.*") +@SuppressStaticInitializationFor("io.realm.internal.Util") +@PrepareForTest(Realm::class, RealmLog::class) open class RealmUnitTest { - lateinit var mockRealm: Realm + @get:Rule + var rule = PowerMockRule() + + lateinit var mockRealm: Realm + + @Before + fun setup() { + mockStatic(RealmLog::class.java) + mockStatic(Realm::class.java) + + val mockRealm = PowerMockito.mock(Realm::class.java) + `when`(Realm.getDefaultInstance()).thenReturn(mockRealm) + this.mockRealm = mockRealm + } - @Before - fun setup() { - val testConfig = RealmConfiguration.Builder().inMemory().name("test-realm").build() - Realm.setDefaultConfiguration(testConfig) - mockRealm = Realm.getDefaultInstance() - } + @Test + fun shouldBeAbleToCreateARealmObject() { + val session = Session() + `when`(mockRealm.createObject(Session::class.java)).thenReturn(session) + val output = mockRealm.createObject(Session::class.java) + assertThat(output, org.hamcrest.CoreMatchers.`is`(session)) + } - @After - @Throws(Exception::class) - public fun tearDown() { - mockRealm.close() - } + @After + @Throws(Exception::class) + fun tearDown() { + mockRealm.close() + } } \ No newline at end of file From 81a2f89bc4ecffe89f1a015c80a29cdb2cc69840 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Wed, 13 Mar 2019 18:49:28 +0100 Subject: [PATCH 6/6] finishing the editDescriptors refactoring --- .../android/model/realm/Session.kt | 178 +++++------------- .../ui/view/rowrepresentable/SessionRow.kt | 141 ++++++++++++++ 2 files changed, 190 insertions(+), 129 deletions(-) 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 e1a93915..b6305540 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 @@ -588,136 +588,56 @@ open class Session : RealmObject(), SessionInterface, Manageable, StaticRowRepre } override fun editDescriptors(row: RowRepresentable): ArrayList? { - - val data = ArrayList() - - when (row) { - SessionRow.BANKROLL -> { - // Add current bankroll and bankrolls list - data.add(RowRepresentableEditDescriptor(bankroll, data = LiveData.BANKROLL.items(realm))) - } - SessionRow.BLINDS -> { - data.add( - RowRepresentableEditDescriptor( - cgSmallBlind?.round(), - R.string.smallblind, - InputType.TYPE_CLASS_NUMBER - or InputType.TYPE_NUMBER_FLAG_DECIMAL - ) - ) - data.add( - RowRepresentableEditDescriptor( - cgBigBlind?.round(), R.string.bigblind, InputType.TYPE_CLASS_NUMBER - or InputType.TYPE_NUMBER_FLAG_DECIMAL - ) - ) - } - SessionRow.BREAK_TIME -> { - data.add( - RowRepresentableEditDescriptor( - "", - hint = R.string.in_minutes, inputType = InputType.TYPE_CLASS_NUMBER - ) - ) - } - SessionRow.BUY_IN -> { - // Add first & second buttons values, current value & set the 2 edit texts - if (this.cgBigBlind != null) { - data.add(RowRepresentableEditDescriptor(100.0 * (this.cgBigBlind ?: 0.0))) - data.add(RowRepresentableEditDescriptor(200.0 * (this.cgBigBlind ?: 0.0))) - } else if (this.tournamentEntryFee != null) { - data.add(RowRepresentableEditDescriptor((this.tournamentEntryFee ?: 0.0) * 1.0)) - data.add(RowRepresentableEditDescriptor((this.tournamentEntryFee ?: 0.0) * 2.0)) - } else { - data.add(RowRepresentableEditDescriptor(0)) - data.add(RowRepresentableEditDescriptor(0)) - } - - data.add(RowRepresentableEditDescriptor(buyin)) - data.add( - RowRepresentableEditDescriptor( - "", - inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL - ) - ) - data.add( - RowRepresentableEditDescriptor( - "", - inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL - ) - ) - } - SessionRow.CASHED_OUT, SessionRow.PRIZE, SessionRow.NET_RESULT -> { - data.add( - RowRepresentableEditDescriptor( - result?.cashout?.round(), - inputType = InputType.TYPE_CLASS_NUMBER - or InputType.TYPE_NUMBER_FLAG_DECIMAL - or InputType.TYPE_NUMBER_FLAG_SIGNED - ) - ) - } - SessionRow.COMMENT -> { - data.add(RowRepresentableEditDescriptor(comment, R.string.comment)) - } - SessionRow.GAME -> { - // Add current game & games list - data.add(RowRepresentableEditDescriptor(limit)) - data.add(RowRepresentableEditDescriptor(game, data = LiveData.GAME.items(realm))) - } - SessionRow.INITIAL_BUY_IN -> { - data.add( - RowRepresentableEditDescriptor(tournamentEntryFee?.round(), inputType = InputType.TYPE_CLASS_NUMBER) - ) - } - SessionRow.LOCATION -> { - // Add current location and locations list - data.add(RowRepresentableEditDescriptor(location, data = LiveData.LOCATION.items(realm))) - } - SessionRow.PLAYERS -> { - data.add( - RowRepresentableEditDescriptor( - tournamentNumberOfPlayers?.toString(), - inputType = InputType.TYPE_CLASS_NUMBER - ) - ) - } - SessionRow.POSITION -> { - data.add( - RowRepresentableEditDescriptor( - result?.tournamentFinalPosition, - inputType = InputType.TYPE_CLASS_NUMBER - ) - ) - } - SessionRow.TABLE_SIZE -> { - data.add(RowRepresentableEditDescriptor(tableSize)) - } - SessionRow.TIPS -> { - // Disable the buttons with value = 0, add current value & set the 2 edit texts - data.add(RowRepresentableEditDescriptor(cgSmallBlind ?: 0.0)) - data.add(RowRepresentableEditDescriptor(cgBigBlind ?: 0.0)) - data.add(RowRepresentableEditDescriptor(result?.tips ?: 0.0)) - data.add(RowRepresentableEditDescriptor("", inputType = InputType.TYPE_CLASS_NUMBER)) - data.add(RowRepresentableEditDescriptor("", inputType = InputType.TYPE_CLASS_NUMBER)) - } - SessionRow.TOURNAMENT_NAME -> { - // Add current tournament name and tournament names list - data.add(RowRepresentableEditDescriptor(tournamentName, data = LiveData.TOURNAMENT_NAME.items(realm))) - } - SessionRow.TOURNAMENT_TYPE -> { - // Add current tournament kind and tournament kind list - data.add(RowRepresentableEditDescriptor(tournamentType, staticData = TournamentType.values().map { - it - })) - } - SessionRow.TOURNAMENT_FEATURE -> { - // Add current tournament feature and tournament features list - data.add(RowRepresentableEditDescriptor(tournamentFeatures, data = LiveData.TOURNAMENT_FEATURE.items(realm))) - } + return when (row) { + SessionRow.BANKROLL -> row.editingDescriptors(mapOf( + "defaultValue" to this.bankroll, + "data" to LiveData.BANKROLL.items(realm))) + SessionRow.GAME -> row.editingDescriptors(mapOf( + "limit" to this.limit, + "defaultValue" to this.game, + "data" to LiveData.GAME.items(realm))) + SessionRow.LOCATION -> row.editingDescriptors(mapOf( + "defaultValue" to this.location, + "data" to LiveData.LOCATION.items(realm))) + SessionRow.TOURNAMENT_FEATURE -> row.editingDescriptors(mapOf( + "defaultValue" to this.tournamentFeatures, + "data" to LiveData.TOURNAMENT_FEATURE.items(realm))) + SessionRow.TOURNAMENT_NAME -> row.editingDescriptors(mapOf( + "defaultValue" to this.tournamentName, + "data" to LiveData.TOURNAMENT_NAME.items(realm))) + SessionRow.TOURNAMENT_TYPE -> row.editingDescriptors(mapOf( + "defaultValue" to this.tournamentType)) + SessionRow.TABLE_SIZE -> row.editingDescriptors(mapOf( + "defaultValue" to this.tableSize)) + SessionRow.BLINDS -> row.editingDescriptors(mapOf( + "SB" to cgSmallBlind?.round(), + "BB" to cgBigBlind?.round() + )) + SessionRow.BUY_IN -> row.editingDescriptors(mapOf( + "BB" to cgBigBlind, + "fee" to this.tournamentEntryFee, + "buying" to buyin + )) + SessionRow.BREAK_TIME -> row.editingDescriptors(mapOf()) + SessionRow.CASHED_OUT, SessionRow.PRIZE, SessionRow.NET_RESULT -> row.editingDescriptors(mapOf( + "result" to result?.cashout?.round() + )) + SessionRow.COMMENT -> row.editingDescriptors(mapOf( + "defaultValue" to this.comment)) + SessionRow.INITIAL_BUY_IN -> row.editingDescriptors(mapOf( + "fee" to this.tournamentEntryFee + )) + SessionRow.PLAYERS -> row.editingDescriptors(mapOf( + "defaultValue" to this.tournamentNumberOfPlayers)) + SessionRow.POSITION -> row.editingDescriptors(mapOf( + "defaultValue" to this.result?.tournamentFinalPosition)) + SessionRow.TIPS -> row.editingDescriptors(mapOf( + "SB" to cgSmallBlind?.round(), + "BB" to cgBigBlind?.round(), + "tips" to result?.tips + )) + else -> null } - - return data } override fun updateValue(value: Any?, row: RowRepresentable) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt index 14400072..ed6a99a9 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt @@ -1,12 +1,18 @@ package net.pokeranalytics.android.ui.view.rowrepresentable +import android.text.InputType +import io.realm.RealmResults import net.pokeranalytics.android.R +import net.pokeranalytics.android.model.TournamentType import net.pokeranalytics.android.model.extensions.SessionState import net.pokeranalytics.android.model.extensions.getState +import net.pokeranalytics.android.model.realm.Game import net.pokeranalytics.android.model.realm.Session 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 +import net.pokeranalytics.android.util.extensions.round enum class SessionRow : RowRepresentable { @@ -140,4 +146,139 @@ enum class SessionRow : RowRepresentable { } } + + override fun editingDescriptors(map: Map): ArrayList? { + return when (this) { + BLINDS -> { + val sb: Double? by map + val bb: Double? by map + arrayListOf( + RowRepresentableEditDescriptor(sb, R.string.smallblind, InputType.TYPE_CLASS_NUMBER + or InputType.TYPE_NUMBER_FLAG_DECIMAL), + RowRepresentableEditDescriptor(bb, R.string.bigblind, InputType.TYPE_CLASS_NUMBER + or InputType.TYPE_NUMBER_FLAG_DECIMAL)) + } + BUY_IN -> { + val bb: Double? by map + val fee: Double? by map + val buyin: Double? by map + val data = arrayListOf() + if (bb != null) { + data.add(RowRepresentableEditDescriptor(100.0 * (bb?: 0.0))) + data.add(RowRepresentableEditDescriptor(200.0 * (bb?: 0.0))) + } else if (fee != null) { + data.add(RowRepresentableEditDescriptor((fee?: 0.0) * 1.0)) + data.add(RowRepresentableEditDescriptor((fee?: 0.0) * 2.0)) + } else { + data.add(RowRepresentableEditDescriptor(0)) + data.add(RowRepresentableEditDescriptor(0)) + } + + data.add(RowRepresentableEditDescriptor(buyin)) + data.add( + RowRepresentableEditDescriptor( + "", + inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL + ) + ) + data.add( + RowRepresentableEditDescriptor( + "", + inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL + ) + ) + data + } + CASHED_OUT, PRIZE, NET_RESULT -> { + val cashout: Double? by map + arrayListOf( + RowRepresentableEditDescriptor( + cashout?.round(), + inputType = InputType.TYPE_CLASS_NUMBER + or InputType.TYPE_NUMBER_FLAG_DECIMAL + or InputType.TYPE_NUMBER_FLAG_SIGNED + )) + } + COMMENT -> { + val comment : String? by map + arrayListOf(RowRepresentableEditDescriptor(comment, R.string.comment)) + } + BREAK_TIME -> { + arrayListOf( + RowRepresentableEditDescriptor( + "", + hint = R.string.in_minutes, inputType = InputType.TYPE_CLASS_NUMBER + ) + ) + } + GAME -> { + val limit : Int? by map + val defaultValue : Any? by map + val data : RealmResults<*>? by map + arrayListOf( + RowRepresentableEditDescriptor(limit), + RowRepresentableEditDescriptor(defaultValue, data = data)) + } + INITIAL_BUY_IN -> { + val fee : Double? by map + arrayListOf( + RowRepresentableEditDescriptor(fee?.round(), inputType = InputType.TYPE_CLASS_NUMBER) + ) + } + BANKROLL, LOCATION, TOURNAMENT_FEATURE, TOURNAMENT_NAME -> { + val defaultValue : Any? by map + val data : RealmResults<*>? by map + arrayListOf( + RowRepresentableEditDescriptor(defaultValue, data = data) + ) + } + PLAYERS -> { + val tournamentNumberOfPlayers: Int? by map + arrayListOf( + RowRepresentableEditDescriptor( + tournamentNumberOfPlayers?.toString(), + inputType = InputType.TYPE_CLASS_NUMBER + ) + ) + } + POSITION -> { + val tournamentFinalPosition : Int? by map + arrayListOf( + RowRepresentableEditDescriptor( + tournamentFinalPosition, + inputType = InputType.TYPE_CLASS_NUMBER + ) + ) + } + TABLE_SIZE -> { + val tableSize : Int? by map + arrayListOf(RowRepresentableEditDescriptor(tableSize)) + } + TIPS -> { + val sb: Double? by map + val bb: Double? by map + val tips: Double? by map + + // Disable the buttons with value = 0, add current value & set the 2 edit texts + arrayListOf( + RowRepresentableEditDescriptor(sb?: 0.0), + RowRepresentableEditDescriptor(bb?: 0.0), + RowRepresentableEditDescriptor(tips?: 0.0), + RowRepresentableEditDescriptor("", inputType = InputType.TYPE_CLASS_NUMBER), + RowRepresentableEditDescriptor("", inputType = InputType.TYPE_CLASS_NUMBER) + ) + } + TOURNAMENT_TYPE -> { + val defaultValue : Any? by map + arrayListOf( + RowRepresentableEditDescriptor(defaultValue, staticData = TournamentType.values().map { + it + })) + } + else -> null + } + + + + } } \ No newline at end of file