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 d37ac4b4..09d24426 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 @@ -66,12 +66,13 @@ open class Game : RealmObject(), NameManageable, StaticRowRepresentableDataSourc override fun stringForRow( row: RowRepresentable, + context: Context, tag: Int ): String { return when (row) { SimpleRow.NAME -> if (this.name.isNotEmpty()) this.name else NULL_TEXT GameRow.SHORT_NAME -> this.shortName ?: NULL_TEXT - else -> return super.stringForRow(row, 0) + else -> return super.stringForRow(row, context, 0) } } diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Player.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Player.kt index bcd3b68a..42e46d41 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Player.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Player.kt @@ -76,12 +76,13 @@ open class Player : RealmObject(), NameManageable, Deletable, StaticRowRepresent } override fun stringForRow( - row: RowRepresentable, - tag: Int + row: RowRepresentable, + context: Context, + tag: Int ): String { return when (row) { PlayerRow.NAME -> if (this.name.isNotEmpty()) this.name else NULL_TEXT - else -> return super.stringForRow(row, 0) + else -> return super.stringForRow(row, context, 0) } } 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 cc306f06..f6d4b4f6 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 @@ -57,12 +57,13 @@ open class TournamentFeature : RealmObject(), NameManageable, StaticRowRepresent } override fun stringForRow( - row: RowRepresentable, - tag: Int + row: RowRepresentable, + context: Context, + tag: Int ): String { return when (row) { SimpleRow.NAME -> if (this.name.isNotEmpty()) this.name else NULL_TEXT - else -> return super.stringForRow(row, 0) + else -> return super.stringForRow(row, context, 0) } } 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 bef93e3d..bc0aca84 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 @@ -55,11 +55,12 @@ open class TournamentName : RealmObject(), NameManageable, StaticRowRepresentabl override fun stringForRow( row: RowRepresentable, + context: Context, tag: Int ): String { return when (row) { SimpleRow.NAME -> if (this.name.isNotEmpty()) this.name else NULL_TEXT - else -> return super.stringForRow(row, 0) + else -> return super.stringForRow(row, context, 0) } } 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 83dc96cf..0655d634 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 @@ -108,11 +108,12 @@ open class TransactionType : RealmObject(), NameManageable, StaticRowRepresentab override fun stringForRow( row: RowRepresentable, + context: Context, tag: Int ): String { return when (row) { SimpleRow.NAME -> this.name - else -> return super.stringForRow(row, 0) + else -> return super.stringForRow(row, context, 0) } } diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/HandHistory.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/HandHistory.kt index b9f348ea..d833dd8c 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/HandHistory.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/handhistory/HandHistory.kt @@ -159,4 +159,13 @@ open class HandHistory : RealmObject(), RowRepresentable, Identifiable, Filterab override val cards: RealmList get() { return this.board } + val anteSum: Double + get() { + return if (bigBlindAnte) { + this.bigBlind ?: 0.0 + } else { + this.ante * this.numberOfPlayers + } + } + } \ No newline at end of file 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 1da55a52..6bb3ddfd 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 @@ -122,13 +122,13 @@ interface DisplayableDataSource { * Returns a localized string for a specific row */ fun stringForRow(row: RowRepresentable, context: Context): String { - return stringForRow(row, 0) + return stringForRow(row, context, 0) } /** * Returns a string for a specific row */ - fun stringForRow(row: RowRepresentable, tag: Int = 0): String { + fun stringForRow(row: RowRepresentable, context: Context, tag: Int = 0): String { return "" } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt index b5d46b69..ab7554cf 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/CurrenciesFragment.kt @@ -92,6 +92,7 @@ class CurrenciesFragment : BaseFragment(), StaticRowRepresentableDataSource, Row override fun stringForRow( row: RowRepresentable, + context: Context, tag: Int ): String { return (row as CurrencyRow).currencyCodeAndSymbol diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt index 34b330ac..b289f2ba 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FilterDetailsFragment.kt @@ -99,7 +99,7 @@ open class FilterDetailsFragment : RealmFragment(), StaticRowRepresentableDataSo override fun stringForRow(row: RowRepresentable, context: Context): String { return when (row) { is QueryCondition.ListOfValues<*> -> row.firstValue(context) - else -> super.stringForRow(row, 0) + else -> super.stringForRow(row, context, 0) } ?: NULL_TEXT } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt index 40513b13..8127ba54 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/FiltersFragment.kt @@ -1,6 +1,7 @@ package net.pokeranalytics.android.ui.fragment import android.app.Activity.RESULT_OK +import android.content.Context import android.content.Intent import android.os.Bundle import android.view.* @@ -133,6 +134,7 @@ open class FiltersFragment : RealmFragment(), StaticRowRepresentableDataSource, override fun stringForRow( row: RowRepresentable, + context: Context, tag: Int ): String { // Return the number of selected filters for this category diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt index d0296614..ba9bd525 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt @@ -2,6 +2,7 @@ package net.pokeranalytics.android.ui.fragment import android.app.Activity import android.content.ActivityNotFoundException +import android.content.Context import android.content.Intent import android.net.Uri import android.os.Bundle @@ -105,6 +106,7 @@ class SettingsFragment : BaseFragment(), RowRepresentableDelegate, StaticRowRepr override fun stringForRow( row: RowRepresentable, + context: Context, tag: Int ): String { return when (row) { 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 b3410d24..124d7347 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 @@ -26,7 +26,7 @@ class BottomSheetEditTextMultiLinesFragment : BottomSheetFragment() { * Init UI */ private fun initUI() { - val data = getDescriptors()?:throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor not found") + val data = getDescriptors() ?: throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor not found") if (data.size != 1) { throw RowRepresentableEditDescriptorException("RowRepresentableEditDescriptor inconsistency") } @@ -34,7 +34,7 @@ class BottomSheetEditTextMultiLinesFragment : BottomSheetFragment() { LayoutInflater.from(requireContext()).inflate(net.pokeranalytics.android.R.layout.bottom_sheet_edit_text_multi_lines, view?.bottomSheetContainer, true) data[0].hint?.let { editText.hint = getString(it) } - editText.inputType = data[0].inputType ?: InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES + editText.inputType = data[0].inputType ?: InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_MULTI_LINE or InputType.TYPE_TEXT_FLAG_CAP_SENTENCES editText.addTextChangedListener { this.viewModel.stringValue = it?.toString() } data[0].defaultValue?.let { editText.setText(it.toString()) 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 5eaf2b6f..075e1a60 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 @@ -29,7 +29,7 @@ import java.util.* class BottomSheetConfig(var row: RowRepresentable, var delegate: RowRepresentableDelegate, - var rowRepresentableEditDescriptors: ArrayList?, + var rowRepresentableEditDescriptors: List?, var isClearable: Boolean? = true, var currentCurrency: Currency? = null, var isDeletable: Boolean? = false, @@ -56,7 +56,7 @@ open class BottomSheetFragment : BottomSheetDialogFragment() { fragmentManager: FragmentManager?, row: RowRepresentable, delegate: RowRepresentableDelegate, - rowRepresentableEditDescriptors: ArrayList?, + rowRepresentableEditDescriptors: List?, isClearable: Boolean? = true, currentCurrency: Currency? = null, isDeletable: Boolean? = false, @@ -204,7 +204,7 @@ open class BottomSheetFragment : BottomSheetDialogFragment() { /** * Return the data list */ - fun getDescriptors(): ArrayList? { + fun getDescriptors(): List? { return this.viewModel.rowRepresentableEditDescriptors } 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 9892142e..8f67cf2f 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 @@ -1,5 +1,6 @@ package net.pokeranalytics.android.ui.fragment.components.bottomsheet +import android.content.Context import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -65,6 +66,7 @@ class BottomSheetTableSizeGridFragment : BottomSheetFragment(), StaticRowReprese override fun stringForRow( row: RowRepresentable, + context: Context, tag: Int ): String { this.context?.let { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/BankrollDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/BankrollDataFragment.kt index 7241ff68..083fefb1 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/BankrollDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/BankrollDataFragment.kt @@ -1,6 +1,7 @@ package net.pokeranalytics.android.ui.fragment.data import android.app.Activity.RESULT_OK +import android.content.Context import android.content.Intent import android.os.Bundle import android.view.View @@ -85,6 +86,7 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS override fun stringForRow( row: RowRepresentable, + context: Context, tag: Int ): String { return when (row) { @@ -107,7 +109,7 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS val rate = this.bankroll.currency?.rate ?: 1.0 rate.toRate() } - else -> super.stringForRow(row, 0) + else -> super.stringForRow(row, context, 0) } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/CustomFieldDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/CustomFieldDataFragment.kt index 15e857e2..5d68a729 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/CustomFieldDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/CustomFieldDataFragment.kt @@ -1,5 +1,6 @@ package net.pokeranalytics.android.ui.fragment.data +import android.content.Context import android.os.Bundle import android.view.LayoutInflater import android.view.View @@ -122,11 +123,12 @@ class CustomFieldDataFragment : EditableDataFragment(), StaticRowRepresentableDa override fun stringForRow( row: RowRepresentable, + context: Context, tag: Int ): String { return when (row) { SimpleRow.NAME -> if (customField.name.isNotEmpty()) customField.name else NULL_TEXT - else -> super.stringForRow(row, 0) + else -> super.stringForRow(row, context, 0) } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/LocationDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/LocationDataFragment.kt index 4df67351..ff469f29 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/LocationDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/LocationDataFragment.kt @@ -1,5 +1,6 @@ package net.pokeranalytics.android.ui.fragment.data +import android.content.Context import android.os.Bundle import android.view.View import com.google.android.libraries.places.api.model.PlaceLikelihood @@ -66,11 +67,12 @@ class LocationDataFragment : EditableDataFragment(), StaticRowRepresentableDataS override fun stringForRow( row: RowRepresentable, + context: Context, tag: Int ): String { return when (row) { SimpleRow.NAME -> if (location.name.isNotEmpty())location.name else NULL_TEXT - else -> return super.stringForRow(row, 0) + else -> return super.stringForRow(row, context, 0) } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt index 37bc4317..a0f832f9 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt @@ -1,6 +1,7 @@ package net.pokeranalytics.android.ui.fragment.data import android.app.Activity.RESULT_OK +import android.content.Context import android.content.Intent import android.graphics.Color import android.os.Bundle @@ -118,12 +119,13 @@ class PlayerDataFragment : EditableDataFragment(), StaticRowRepresentableDataSou override fun stringForRow( row: RowRepresentable, + context: Context, tag: Int ): String { return when (row) { PlayerRow.NAME -> if (player.name.isNotEmpty()) player.name else NULL_TEXT PlayerRow.SUMMARY -> if (player.summary.isNotEmpty()) player.summary else NULL_TEXT - else -> super.stringForRow(row, 0) + else -> super.stringForRow(row, context, 0) } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionDataFragment.kt index 44d959bf..4f64ca9f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionDataFragment.kt @@ -1,5 +1,6 @@ package net.pokeranalytics.android.ui.fragment.data +import android.content.Context import android.os.Bundle import android.view.View import kotlinx.coroutines.Dispatchers @@ -48,6 +49,7 @@ class TransactionDataFragment : EditableDataFragment(), StaticRowRepresentableDa override fun stringForRow( row: RowRepresentable, + context: Context, tag: Int ): String { return when (row) { @@ -56,7 +58,7 @@ class TransactionDataFragment : EditableDataFragment(), StaticRowRepresentableDa TransactionRow.AMOUNT -> if (this.transaction.amount != 0.0) this.transaction.amount.round() else NULL_TEXT TransactionRow.COMMENT -> if (this.transaction.comment.isNotEmpty()) this.transaction.comment else NULL_TEXT TransactionRow.DATE -> this.transaction.date.shortDate() - else -> super.stringForRow(row, 0) + else -> super.stringForRow(row, context, 0) } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionTypeDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionTypeDataFragment.kt index 740fffb2..0e08c8ad 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionTypeDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/TransactionTypeDataFragment.kt @@ -1,5 +1,6 @@ package net.pokeranalytics.android.ui.fragment.data +import android.content.Context import net.pokeranalytics.android.model.realm.Transaction import net.pokeranalytics.android.model.realm.TransactionType import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource @@ -35,11 +36,12 @@ class TransactionTypeDataFragment : EditableDataFragment(), RowRepresentableData override fun stringForRow( row: RowRepresentable, + context: Context, tag: Int ): String { return when (row) { SimpleRow.NAME -> this.transactionType.name - else -> return super.stringForRow(row, 0) + else -> return super.stringForRow(row, context, 0) } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryAdapter.kt index 817be388..29a22d3d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryAdapter.kt @@ -24,6 +24,7 @@ import net.pokeranalytics.android.ui.adapter.RecyclerAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.extensions.px +import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType import net.pokeranalytics.android.ui.modules.handhistory.model.ComputedAction import net.pokeranalytics.android.ui.modules.handhistory.model.HHKeyboard import net.pokeranalytics.android.ui.modules.handhistory.model.HandHistoryRow @@ -43,7 +44,7 @@ enum class HandRowType(var layoutRes: Int) : ViewIdentifier, RowRepresentable, H STREET(R.layout.row_hand_cards), BLINDS(R.layout.row_hhsettings_blinds), STRADDLE(R.layout.row_hhsettings_straddle), -// COMMENT(R.layout.row_hhsettings_comment), + COMMENT(R.layout.row_hhsettings_comments), PLAYER_SETUP(R.layout.row_hhsettings_player_setup) ; @@ -85,6 +86,33 @@ enum class HandRowType(var layoutRes: Int) : ViewIdentifier, RowRepresentable, H } } + override val bottomSheetType: BottomSheetType + get() { + return when(this) { + COMMENT -> BottomSheetType.EDIT_TEXT_MULTI_LINES + else -> BottomSheetType.NONE + } + } + + override val resId: Int? + get() { + return when(this) { + COMMENT -> R.string.comment + else -> null + } + } + + override val imageRes: Int? + get() { + return when(this) { + COMMENT -> R.drawable.picto_comment + else -> null + } + } + + override val imageClickable: Boolean? + get() { return true } + } class HandHistoryAdapter( @@ -108,6 +136,7 @@ class HandHistoryAdapter( HandRowType.BLINDS -> RowHandBlinds(layout) HandRowType.STRADDLE -> RowHandStraddle(layout) HandRowType.PLAYER_SETUP -> RowHandPlayerSetup(layout) + HandRowType.COMMENT -> RowViewHolder(layout) } } @@ -177,9 +206,9 @@ class HandHistoryAdapter( override fun onBind(position: Int, row: RowRepresentable, adapter: RecyclerAdapter) { super.onBind(position, row, adapter) - itemView.smallBlindEditText.setText(adapter.dataSource.stringForRow(row, 0)) - itemView.bigBlindEditText.setText(adapter.dataSource.stringForRow(row, 1)) - itemView.anteEditText.setText(adapter.dataSource.stringForRow(row, 2)) + itemView.smallBlindEditText.setText(adapter.dataSource.stringForRow(row, itemView.context, 0)) + itemView.bigBlindEditText.setText(adapter.dataSource.stringForRow(row, itemView.context, 1)) + itemView.anteEditText.setText(adapter.dataSource.stringForRow(row, itemView.context, 2)) itemView.bbAnteSwitch.isChecked = adapter.dataSource.isSelected(position, row, 0) val sbSelected = adapter.dataSource.isSelected(position, row, 0) @@ -490,8 +519,8 @@ class HandHistoryAdapter( // itemView.positionsChipGroup - itemView.handEditText.setText(adapter.dataSource.stringForRow(row, 0)) - itemView.stackEditText.setText(adapter.dataSource.stringForRow(row, 1)) + itemView.handEditText.setText(adapter.dataSource.stringForRow(row, itemView.context, 0)) + itemView.stackEditText.setText(adapter.dataSource.stringForRow(row, itemView.context, 1)) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryFragment.kt index 6fd8c222..0bbdfe1f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryFragment.kt @@ -17,9 +17,12 @@ import net.pokeranalytics.android.model.realm.handhistory.Card import net.pokeranalytics.android.model.realm.handhistory.HandHistory import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.fragment.components.RealmFragment +import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetFragment +import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType import net.pokeranalytics.android.ui.modules.handhistory.model.* import net.pokeranalytics.android.ui.modules.handhistory.views.KeyboardListener import net.pokeranalytics.android.ui.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.SmoothScrollLinearLayoutManager import net.pokeranalytics.android.util.extensions.findById import timber.log.Timber @@ -211,10 +214,21 @@ class HandHistoryFragment : RealmFragment(), RowRepresentableDelegate, KeyboardL override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { super.onRowSelected(position, row, tag) + Timber.d("onRowSelected: $position, tag = $tag, row = $row") + if (!this.model.isEdited) { return } + when (row.bottomSheetType) { + BottomSheetType.NONE -> {} + else -> { + val editDescriptors = listOf(RowRepresentableEditDescriptor(this.model.handHistory.comment, R.string.comment)) + BottomSheetFragment.create(this.fragmentManager, row, this, editDescriptors) + return + } + } + this.model.selectionLiveData.value?.index?.let { oldIndex -> refreshCells(oldIndex) } @@ -223,21 +237,6 @@ class HandHistoryFragment : RealmFragment(), RowRepresentableDelegate, KeyboardL this.model.selectionLiveData.value = HHSelection(position, tag) -// val keyboard = (row as HandHistoryRow).keyboardForTag(tag) -// if (keyboard == HHKeyboard.ACTION) { -// configureActionKeyboard() -// } -// this.keyboard.show(keyboard) - -// Timber.d("row $position selected, show keyboard = $keyboard") - - } - - private fun configureActionKeyboard() { - val availableActions = this.model.availableActions() - this.keyboard.setAvailableAction(availableActions) - val positions = this.model.positionsToAct() - this.keyboard.setPositions(positions) } override fun onRowDeselected(position: Int, row: RowRepresentable) { @@ -247,6 +246,10 @@ class HandHistoryFragment : RealmFragment(), RowRepresentableDelegate, KeyboardL override fun onRowValueChanged(value: Any?, row: RowRepresentable) { when (row) { + HandRowType.COMMENT -> { + this.model.handHistory.comment = value as? String + refreshCells(this.model.indexOfRowRepresentable(row)) + } is ComputedAction -> { this.model.currentAmount = value as String } @@ -307,6 +310,13 @@ class HandHistoryFragment : RealmFragment(), RowRepresentableDelegate, KeyboardL this.model.clearAmount() } + private fun configureActionKeyboard() { + val availableActions = this.model.availableActions() + this.keyboard.setAvailableAction(availableActions) + val positions = this.model.positionsToAct() + this.keyboard.setPositions(positions) + } + override fun closeKeyboard() { this.model.selectionLiveData.value?.index?.let { this.handHistoryAdapter.notifyItemChanged(it) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/HandHistoryViewModel.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/HandHistoryViewModel.kt index 001d904c..bb83149a 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/HandHistoryViewModel.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/HandHistoryViewModel.kt @@ -1,5 +1,6 @@ package net.pokeranalytics.android.ui.modules.handhistory.model +import android.content.Context import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import net.pokeranalytics.android.R @@ -171,6 +172,9 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra private fun createRowRepresentation() { val rows: MutableList = mutableListOf() + rows.add(HandRowType.COMMENT) + + rows.add(CustomizableRowRepresentable(customViewType = HandRowType.HEADER, resId = R.string.settings, value = "")) rows.add(HandRowType.BLINDS) @@ -221,7 +225,7 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra val firstIndexOfStreet = this.sortedActions.firstOrNull { it.street == street }?.action?.index ?: this.sortedActions.size - val potSize = this.sortedActions.take(firstIndexOfStreet).sumByDouble { it.action.effectiveAmount } + val potSize = this.handHistory.anteSum + this.sortedActions.take(firstIndexOfStreet).sumByDouble { it.action.effectiveAmount } val potString = if (potSize > 0) potSize.formatted() else "" // "" required otherwise random values come up val headerView = CustomizableRowRepresentable(customViewType = HandRowType.HEADER, resId = street.resId, value = potString) @@ -500,6 +504,10 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra return this.rowRepresentables[position].viewType } + fun indexOfRowRepresentable(row: RowRepresentable): Int { + return this.rowRepresentables.indexOf(row) + } + override fun isSelected(position: Int, row: RowRepresentable, tag: Int): Boolean { val currentSelection = this.selectionLiveData @@ -525,13 +533,10 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra this.cardSelectionEnded(this.currentSelection.index) } -// fun setBuilderListener(builderListener: BuilderListener) { -// this.builder.setBuilderListener(builderListener) -// } - - override fun stringForRow(row: RowRepresentable, tag: Int): String { + override fun stringForRow(row: RowRepresentable, context: Context, tag: Int): String { return when (row) { + HandRowType.COMMENT -> this.handHistory.comment ?: context.getString(R.string.comment) HandRowType.BLINDS -> { when (tag) { 0 -> this.handHistory.smallBlind?.formatted() ?: "" diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/holder/RowViewHolder.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/holder/RowViewHolder.kt index 033a4d1a..43957e2d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/holder/RowViewHolder.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/holder/RowViewHolder.kt @@ -90,23 +90,27 @@ class RowViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), Bindabl // View background itemView.findViewById(R.id.container)?.let { - val enabled = adapter.dataSource.isEnabled(row, 0) - val color = if (enabled) { - R.color.kaki_light - } else { - R.color.kaki - } - it.setBackgroundColor(itemView.context.getColor(color)) - it.isEnabled = enabled +// it.setBackgroundColor(itemView.context.getColor(R.color.kaki)) +// +// val enabled = adapter.dataSource.isEnabled(row, 0) +// val color = if (enabled) { +// R.color.kaki_light +// } else { +// R.color.kaki +// } +// it.setBackgroundColor(itemView.context.getColor(color)) +// it.isEnabled = enabled } // Title itemView.findViewById(R.id.title)?.let { - if (row.resId != null) { - it.text = row.localizedTitle(itemView.context) - } else { - it.text = row.getDisplayName(itemView.context) + val title = row.resId?.let { resId -> + itemView.context.getString(resId) + } ?: run { + row.getDisplayName(itemView.context) } + it.text = title + val color = if (adapter.dataSource.isEnabled(row, 0)) { R.color.white } else { @@ -185,6 +189,5 @@ class RowViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), Bindabl it.isSelected = adapter.dataSource.isSelected(position, row, 0) } - } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/BottomSheetViewModel.kt b/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/BottomSheetViewModel.kt index a696318e..b56256c9 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/BottomSheetViewModel.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/BottomSheetViewModel.kt @@ -22,7 +22,7 @@ class BottomSheetViewModel : ViewModel() { var valueAsPlaceholder: Boolean = false var isClearable: Boolean = true var isDeletable: Boolean = false - var rowRepresentableEditDescriptors: ArrayList? = null + var rowRepresentableEditDescriptors: List? = null /** * Storage for a data that has been newly created diff --git a/app/src/main/res/layout/row_hhsettings_comments.xml b/app/src/main/res/layout/row_hhsettings_comments.xml new file mode 100644 index 00000000..e908f9ed --- /dev/null +++ b/app/src/main/res/layout/row_hhsettings_comments.xml @@ -0,0 +1,33 @@ + + + + + + + + \ No newline at end of file