diff --git a/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt b/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt index 48a1065d..1d79a807 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt @@ -66,8 +66,8 @@ enum class LiveData : Localizable { } } - fun deleteData(realm:Realm, data:LiveDataDataSource) { - realm.where(this.relatedEntity).equalTo("id", data.primaryKey).findAll().deleteAllFromRealm() + fun deleteData(realm:Realm, data:ObjectSavable) { + realm.where(this.relatedEntity).equalTo("id", data.uniqueIdentifier()).findAll().deleteAllFromRealm() } fun updateOrCreate(realm:Realm, primaryKey:String?): RealmObject { 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 6ef2e2d3..be0cc9d9 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 @@ -12,7 +12,7 @@ import net.pokeranalytics.android.ui.view.* import java.util.* import kotlin.collections.ArrayList -open class Bankroll(name: String = "") : RealmObject(), RowRepresentableDataSource, LiveDataDataSource, +open class Bankroll(name: String = "") : RealmObject(), RowRepresentableDataSource, RowEditable, ObjectSavable, RowRepresentable { companion object { @@ -47,9 +47,6 @@ open class Bankroll(name: String = "") : RealmObject(), RowRepresentableDataSour return this.id } - override val title: String get() = this.name - override val primaryKey: String get() = this.id - override fun adapterRows(): ArrayList { val rows = ArrayList() rows.add(SimpleRow.NAME) 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 186a9579..2ff50761 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 @@ -11,7 +11,7 @@ import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheet import net.pokeranalytics.android.ui.view.* import java.util.* -open class Game : RealmObject(), RowRepresentableDataSource, LiveDataDataSource, RowEditable, ObjectSavable, +open class Game : RealmObject(), RowRepresentableDataSource, RowEditable, ObjectSavable, RowRepresentable { @PrimaryKey @@ -23,8 +23,6 @@ open class Game : RealmObject(), RowRepresentableDataSource, LiveDataDataSource, // A shorter name for the game var shortName: String? = null - override val title: String get() = this.name - override val primaryKey: String get() = this.id override fun getDisplayName(): String { return this.name } diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt index b6fa2e76..733d6de6 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt @@ -13,7 +13,7 @@ import net.pokeranalytics.android.ui.view.SimpleRow import java.util.* -open class Location : RealmObject(), RowRepresentableDataSource, LiveDataDataSource, RowEditable, ObjectSavable, RowRepresentable { +open class Location : RealmObject(), RowRepresentableDataSource, RowEditable, ObjectSavable, RowRepresentable { @PrimaryKey var id = UUID.randomUUID().toString() @@ -27,8 +27,6 @@ open class Location : RealmObject(), RowRepresentableDataSource, LiveDataDataSou // the latitude of the location var latitude: Double? = null - override val title: String get() = this.name - override val primaryKey: String get() = this.id override fun getDisplayName(): String { return this.name } 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 e023d1e5..9da0cf4b 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 @@ -23,7 +23,7 @@ import net.pokeranalytics.android.util.toCurrency import java.util.* import kotlin.collections.ArrayList -open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource, LiveDataDataSource, +open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource, RowEditable { @PrimaryKey @@ -194,7 +194,7 @@ open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource gameTitle += limit } if (game != null) { - gameTitle += game?.title + gameTitle += game?.name } return gameTitle } @@ -256,9 +256,9 @@ open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource return when (row) { SessionRow.BUY_IN -> buyin.toCurrency() SessionRow.BLINDS -> if (cgSmallBlind != null && cgBigBlind != null) "$cgSmallBlind / $cgBigBlind" else "--" - SessionRow.GAME -> game?.title ?: "--" - SessionRow.LOCATION -> location?.title ?: "--" - SessionRow.BANKROLL -> bankroll?.title ?: "--" + SessionRow.GAME -> game?.name ?: "--" + SessionRow.LOCATION -> location?.name ?: "--" + SessionRow.BANKROLL -> bankroll?.name ?: "--" SessionRow.TABLE_SIZE -> tableSize?.toString() ?: "--" SessionRow.START_DATE -> if (timeFrame != null) timeFrame?.startDate?.short() ?: "--" else "--" SessionRow.END_DATE -> if (timeFrame != null) timeFrame?.endDate?.short() ?: "--" else "--" @@ -276,11 +276,6 @@ open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource } } - - override var title: String = "Change that: $creationDate" - override val primaryKey: String get() = this.id - - override fun getBottomSheetData(row: RowRepresentable): ArrayList { val data = ArrayList() diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt index edd3e5a8..a765249b 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 @@ -12,7 +12,7 @@ import net.pokeranalytics.android.ui.view.SimpleRow import net.pokeranalytics.android.ui.view.TournamentFeatureRow import java.util.* -open class TournamentFeature : RealmObject(), RowRepresentableDataSource, LiveDataDataSource, RowEditable, ObjectSavable, RowRepresentable { +open class TournamentFeature : RealmObject(), RowRepresentableDataSource, RowEditable, ObjectSavable, RowRepresentable { @PrimaryKey var id = UUID.randomUUID().toString() @@ -20,8 +20,6 @@ open class TournamentFeature : RealmObject(), RowRepresentableDataSource, LiveDa // The name of the feature var name: String = "" - override val title: String get() = this.name - override val primaryKey: String get() = this.id override fun getDisplayName(): String { return this.name } 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 1f4dc94f..8e526eab 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 @@ -13,7 +13,7 @@ import net.pokeranalytics.android.ui.view.TransactionTypeRow import java.util.* -open class TransactionType : RealmObject(), RowRepresentableDataSource, LiveDataDataSource, RowEditable, ObjectSavable, RowRepresentable { +open class TransactionType : RealmObject(), RowRepresentableDataSource, RowEditable, ObjectSavable, RowRepresentable { @PrimaryKey var id = UUID.randomUUID().toString() @@ -30,8 +30,6 @@ open class TransactionType : RealmObject(), RowRepresentableDataSource, LiveData // The predefined kind, if necessary, like: Withdrawal, deposit, or tips var kind: Int? = null - override val title: String get() = this.name - override val primaryKey: String get() = this.id override fun getDisplayName(): String { return this.name } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/LiveDataAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/LiveDataAdapter.kt index 5cb5cbfe..f2e3b683 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/LiveDataAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/LiveDataAdapter.kt @@ -16,7 +16,6 @@ enum class LiveDataViewType { interface LiveDataDataSource { val title: String - val primaryKey: String } interface LiveDataDelegate { 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 bde542bb..9b9de841 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 @@ -138,7 +138,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Toast.makeText(requireContext(), "isManaged", Toast.LENGTH_SHORT).show() Timber.d("is managed") this.getRealm().executeTransaction { - this.liveDataType.deleteData(it, (this.item as LiveDataDataSource)) + this.liveDataType.deleteData(it, (this.item as ObjectSavable)) } } else { Toast.makeText(requireContext(), "isNotManaged", Toast.LENGTH_SHORT).show() 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 2131c53e..abca4c07 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt @@ -8,16 +8,14 @@ import io.realm.RealmResults import kotlinx.android.synthetic.main.bottom_sheet_list.* import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* import net.pokeranalytics.android.R -import net.pokeranalytics.android.model.realm.Game -import net.pokeranalytics.android.ui.adapter.components.LiveDataAdapter -import net.pokeranalytics.android.ui.adapter.components.LiveDataDataSource -import net.pokeranalytics.android.ui.adapter.components.LiveDataDelegate -import net.pokeranalytics.android.ui.adapter.components.LiveDataViewType +import net.pokeranalytics.android.ui.adapter.components.* +import net.pokeranalytics.android.ui.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowViewType -class BottomSheetListFragment : BottomSheetFragment(), LiveDataDelegate { +class BottomSheetListFragment : BottomSheetFragment(), RowRepresentableDataSource, RowRepresentableDelegate { private var realmData: RealmResults<*>? = null - private lateinit var dataAdapter: LiveDataAdapter + private lateinit var dataAdapter: RowRepresentableAdapter override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -30,15 +28,32 @@ class BottomSheetListFragment : BottomSheetFragment(), LiveDataDelegate { dataAdapter.notifyDataSetChanged() } - override fun data(position: Int): LiveDataDataSource { + override fun rowRepresentableForPosition(position: Int): RowRepresentable { realmData?.let { - return it[position] as LiveDataDataSource + return it[position] as RowRepresentable } - //TODO: Change that - return Game() + return super.rowRepresentableForPosition(position) } - override fun onRowSelected(position: Int) { + override fun numberOfRows(): Int { + realmData?.let { + return it.size + } + return super.numberOfRows() + } + + override fun viewTypeForPosition(position: Int): Int { + return RowViewType.BOTTOM_SHEET_DATA.ordinal + } + + override fun indexForRow(row: RowRepresentable): Int { + realmData?.let { + return it.indexOf(row) + } + return super.indexForRow(row) + } + + override fun onIndexSelected(position: Int) { realmData?.let { val selectedData = it[position] selectedData?.let {data -> @@ -46,10 +61,7 @@ class BottomSheetListFragment : BottomSheetFragment(), LiveDataDelegate { dismiss() } } - } - - override fun size(): Int { - return realmData?.size ?: 0 + super.onIndexSelected(position) } /** @@ -70,7 +82,7 @@ class BottomSheetListFragment : BottomSheetFragment(), LiveDataDelegate { LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_list, view?.bottomSheetContainer, true) val viewManager = LinearLayoutManager(requireContext()) - dataAdapter = LiveDataAdapter(this, LiveDataViewType.BOTTOM_SHEET_DATA) + dataAdapter = RowRepresentableAdapter(this, this) reyclerView.apply { setHasFixedSize(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 f97672fd..e566a340 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,17 +10,16 @@ import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* import net.pokeranalytics.android.R import net.pokeranalytics.android.model.realm.Game import net.pokeranalytics.android.ui.adapter.LimitTypesAdapter -import net.pokeranalytics.android.ui.adapter.components.LiveDataAdapter -import net.pokeranalytics.android.ui.adapter.components.LiveDataDataSource -import net.pokeranalytics.android.ui.adapter.components.LiveDataDelegate -import net.pokeranalytics.android.ui.adapter.components.LiveDataViewType +import net.pokeranalytics.android.ui.adapter.components.* +import net.pokeranalytics.android.ui.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowViewType import timber.log.Timber -class BottomSheetListGameFragment : BottomSheetFragment(), LiveDataDelegate { +class BottomSheetListGameFragment : BottomSheetFragment(), RowRepresentableDataSource, RowRepresentableDelegate { private var realmData: RealmResults<*>? = null - private lateinit var dataAdapter: LiveDataAdapter + private lateinit var dataAdapter: RowRepresentableAdapter override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -33,15 +32,33 @@ class BottomSheetListGameFragment : BottomSheetFragment(), LiveDataDelegate { dataAdapter.notifyDataSetChanged() } - override fun data(position: Int): LiveDataDataSource { + + override fun rowRepresentableForPosition(position: Int): RowRepresentable { + realmData?.let { + return it[position] as RowRepresentable + } + return super.rowRepresentableForPosition(position) + } + + override fun numberOfRows(): Int { realmData?.let { - return it[position] as LiveDataDataSource + return it.size } - //TODO: Change that - return Game() + return super.numberOfRows() + } + + override fun viewTypeForPosition(position: Int): Int { + return RowViewType.BOTTOM_SHEET_DATA.ordinal } - override fun onRowSelected(position: Int) { + override fun indexForRow(row: RowRepresentable): Int { + realmData?.let { + return it.indexOf(row) + } + return super.indexForRow(row) + } + + override fun onIndexSelected(position: Int) { realmData?.let { val selectedData = it[position] selectedData?.let {data -> @@ -49,13 +66,7 @@ class BottomSheetListGameFragment : BottomSheetFragment(), LiveDataDelegate { dismiss() } } - } - - override fun size(): Int { - - Timber.d("Games: ${realmData?.size}") - - return realmData?.size ?: 0 + super.onIndexSelected(position) } /** @@ -91,7 +102,7 @@ class BottomSheetListGameFragment : BottomSheetFragment(), LiveDataDelegate { val viewManager2 = LinearLayoutManager(requireContext()) - dataAdapter = LiveDataAdapter(this, LiveDataViewType.BOTTOM_SHEET_DATA) + dataAdapter = RowRepresentableAdapter(this, this) recyclerView2.apply { setHasFixedSize(true)