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 6c1fb8f7..54afae8b 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 @@ -416,7 +417,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 @@ -776,9 +779,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/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 } 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..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 @@ -10,18 +10,16 @@ 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 +/** + * Bottom Sheet List Game Fragment + * Display a list of game + chips to choose the game limit + */ +class BottomSheetListGameFragment : BottomSheetListFragment() { -class BottomSheetListGameFragment : BottomSheetFragment(), LiveRowRepresentableDataSource, RowRepresentableDelegate { - - 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 +28,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] @@ -73,16 +41,15 @@ class BottomSheetListGameFragment : BottomSheetFragment(), LiveRowRepresentableD dismiss() } } - super.onRowSelected(position, row, fromAction) } /** * 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 +57,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) }