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 11c535dc..921206c9 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 @@ -4,11 +4,22 @@ import android.content.Context import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.PrimaryKey +import net.pokeranalytics.android.ui.adapter.components.BankrollRow import net.pokeranalytics.android.ui.adapter.components.DisplayableDataSource +import net.pokeranalytics.android.ui.adapter.components.DynamicRowDelegate +import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface import java.util.* +import kotlin.collections.ArrayList -open class Bankroll(name: String = "") : RealmObject(), DisplayableDataSource { +open class Bankroll(name: String = "") : RealmObject(), DynamicRowDelegate, DisplayableDataSource { + + companion object { + fun newInstance() : Bankroll { + var bankroll: Bankroll = Bankroll() + return bankroll + } + } @PrimaryKey var id = UUID.randomUUID().toString() @@ -28,4 +39,10 @@ open class Bankroll(name: String = "") : RealmObject(), DisplayableDataSource { // @todo rate management override var title: String = this.name + + override fun adapterRows(): ArrayList { + val rows = ArrayList() + rows.addAll(BankrollRow.values()) + return rows + } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt index e07964e0..0105dc02 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt @@ -1,10 +1,7 @@ package net.pokeranalytics.android.ui.adapter.components import android.content.Context -import io.realm.Realm -import io.realm.RealmModel -import io.realm.RealmResults -import io.realm.Sort +import io.realm.* import net.pokeranalytics.android.R import net.pokeranalytics.android.model.realm.* import net.pokeranalytics.android.ui.fragment.components.BottomSheetType @@ -20,6 +17,7 @@ interface DynamicValues { fun items(realm: Realm): RealmResults<*> var sortingFieldName: String var sorting: Sort + fun clazz(): Class<*> } class SectionRow(stringRes: Int) : DynamicRowInterface { @@ -99,4 +97,14 @@ enum class SettingRow(val resId: Int) : DynamicRowInterface, DynamicValues { override var sortingFieldName: String = "name" override var sorting: Sort = Sort.DESCENDING + + override fun clazz(): Class<*> { + return when (this) { + BANKROLL -> Bankroll::class.java + GAME -> Game::class.java + LOCATION -> Location::class.java + TOURNAMENT_TYPE -> TournamentFeature::class.java + TRANSACTION_TYPE -> TransactionType::class.java + } + } } \ No newline at end of file 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 f67d0346..a60055ac 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 @@ -7,15 +7,16 @@ import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import io.realm.Realm import io.realm.RealmObject +import io.realm.kotlin.createObject import kotlinx.android.synthetic.main.fragment_new_session.* import net.pokeranalytics.android.R import net.pokeranalytics.android.model.realm.* import net.pokeranalytics.android.ui.adapter.components.* import net.pokeranalytics.android.util.PokerAnalyticsFragment -class EditableDataFragment : PokerAnalyticsFragment() { +class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback { - private var item: RealmObject? = null + private lateinit var item: RealmObject private var dataType: SettingRow = SettingRow.BANKROLL @@ -29,7 +30,11 @@ class EditableDataFragment : PokerAnalyticsFragment() { initUI() } - private fun initData() { + override fun onRowSelected(row: DynamicRowInterface) { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + private fun initData() { } /** @@ -38,12 +43,12 @@ class EditableDataFragment : PokerAnalyticsFragment() { private fun initUI() { val viewManager = LinearLayoutManager(requireContext()) -// val dynamicListAdapter = DynamicListAdapter(this, this) + val dynamicListAdapter = DynamicListAdapter((this.item as DynamicRowDelegate), this) recyclerView.apply { setHasFixedSize(true) layoutManager = viewManager -// adapter = dynamicListAdapter + adapter = dynamicListAdapter } } @@ -52,15 +57,21 @@ class EditableDataFragment : PokerAnalyticsFragment() { */ fun setData(dataType: Int, primaryKey: String?) { this.dataType = SettingRow.values()[dataType] + val realm = Realm.getDefaultInstance() primaryKey?.let { - val realm = Realm.getDefaultInstance() - this.item = realm.copyFromRealm( when (this.dataType) { + when (this.dataType) { SettingRow.BANKROLL -> realm.where(Bankroll::class.java).equalTo("id", it).findFirst() SettingRow.GAME -> realm.where(Game::class.java).equalTo("id", it).findFirst() SettingRow.LOCATION -> realm.where(Location::class.java).equalTo("id", it).findFirst() SettingRow.TOURNAMENT_TYPE -> realm.where(TournamentFeature::class.java).equalTo("id", it).findFirst() SettingRow.TRANSACTION_TYPE-> realm.where(TransactionType::class.java).equalTo("id", it).findFirst() - }) + }?.let { + this.item = realm.copyFromRealm(it) + } } + + if (this.item == null) { + this.item = realm.createObject(Bankroll) + } } } \ No newline at end of file