editable data implementation

dev_raz_wip
Razmig Sarkissian 7 years ago
parent 58e90cb222
commit a6119f79b6
  1. 19
      app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt
  2. 16
      app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt
  3. 25
      app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt

@ -4,11 +4,22 @@ import android.content.Context
import io.realm.RealmList import io.realm.RealmList
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.annotations.PrimaryKey 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.DisplayableDataSource
import net.pokeranalytics.android.ui.adapter.components.DynamicRowDelegate
import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
import java.util.* 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 @PrimaryKey
var id = UUID.randomUUID().toString() var id = UUID.randomUUID().toString()
@ -28,4 +39,10 @@ open class Bankroll(name: String = "") : RealmObject(), DisplayableDataSource {
// @todo rate management // @todo rate management
override var title: String = this.name override var title: String = this.name
override fun adapterRows(): ArrayList<DynamicRowInterface> {
val rows = ArrayList<DynamicRowInterface>()
rows.addAll(BankrollRow.values())
return rows
}
} }

@ -1,10 +1,7 @@
package net.pokeranalytics.android.ui.adapter.components package net.pokeranalytics.android.ui.adapter.components
import android.content.Context import android.content.Context
import io.realm.Realm import io.realm.*
import io.realm.RealmModel
import io.realm.RealmResults
import io.realm.Sort
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.realm.* import net.pokeranalytics.android.model.realm.*
import net.pokeranalytics.android.ui.fragment.components.BottomSheetType import net.pokeranalytics.android.ui.fragment.components.BottomSheetType
@ -20,6 +17,7 @@ interface DynamicValues {
fun items(realm: Realm): RealmResults<*> fun items(realm: Realm): RealmResults<*>
var sortingFieldName: String var sortingFieldName: String
var sorting: Sort var sorting: Sort
fun <RealmObject> clazz(): Class<*>
} }
class SectionRow(stringRes: Int) : DynamicRowInterface { class SectionRow(stringRes: Int) : DynamicRowInterface {
@ -99,4 +97,14 @@ enum class SettingRow(val resId: Int) : DynamicRowInterface, DynamicValues {
override var sortingFieldName: String = "name" override var sortingFieldName: String = "name"
override var sorting: Sort = Sort.DESCENDING override var sorting: Sort = Sort.DESCENDING
override fun <RealmObject> 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
}
}
} }

@ -7,15 +7,16 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.Realm import io.realm.Realm
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.kotlin.createObject
import kotlinx.android.synthetic.main.fragment_new_session.* import kotlinx.android.synthetic.main.fragment_new_session.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.realm.* import net.pokeranalytics.android.model.realm.*
import net.pokeranalytics.android.ui.adapter.components.* import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.util.PokerAnalyticsFragment 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 private var dataType: SettingRow = SettingRow.BANKROLL
@ -29,6 +30,10 @@ class EditableDataFragment : PokerAnalyticsFragment() {
initUI() initUI()
} }
override fun onRowSelected(row: DynamicRowInterface) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
private fun initData() { private fun initData() {
} }
@ -38,12 +43,12 @@ class EditableDataFragment : PokerAnalyticsFragment() {
private fun initUI() { private fun initUI() {
val viewManager = LinearLayoutManager(requireContext()) val viewManager = LinearLayoutManager(requireContext())
// val dynamicListAdapter = DynamicListAdapter(this, this) val dynamicListAdapter = DynamicListAdapter((this.item as DynamicRowDelegate), this)
recyclerView.apply { recyclerView.apply {
setHasFixedSize(true) setHasFixedSize(true)
layoutManager = viewManager layoutManager = viewManager
// adapter = dynamicListAdapter adapter = dynamicListAdapter
} }
} }
@ -52,15 +57,21 @@ class EditableDataFragment : PokerAnalyticsFragment() {
*/ */
fun setData(dataType: Int, primaryKey: String?) { fun setData(dataType: Int, primaryKey: String?) {
this.dataType = SettingRow.values()[dataType] this.dataType = SettingRow.values()[dataType]
primaryKey?.let {
val realm = Realm.getDefaultInstance() val realm = Realm.getDefaultInstance()
this.item = realm.copyFromRealm( when (this.dataType) { primaryKey?.let {
when (this.dataType) {
SettingRow.BANKROLL -> realm.where(Bankroll::class.java).equalTo("id", it).findFirst() SettingRow.BANKROLL -> realm.where(Bankroll::class.java).equalTo("id", it).findFirst()
SettingRow.GAME -> realm.where(Game::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.LOCATION -> realm.where(Location::class.java).equalTo("id", it).findFirst()
SettingRow.TOURNAMENT_TYPE -> realm.where(TournamentFeature::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() 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)
} }
} }
} }
Loading…
Cancel
Save