clean up EditableDataSource

dev_raz_wip
Razmig Sarkissian 7 years ago
parent 0e8e564981
commit 9e71e14659
  1. 9
      app/src/main/java/net/pokeranalytics/android/model/DataList.kt
  2. 28
      app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt
  3. 28
      app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt
  4. 29
      app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt
  5. 6
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  6. 30
      app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt
  7. 30
      app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt
  8. 3
      app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DataListAdapter.kt
  9. 89
      app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt
  10. 15
      app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt
  11. 2
      app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt

@ -1,11 +1,19 @@
package net.pokeranalytics.android.model
import android.text.InputType
import io.realm.Realm
import io.realm.RealmObject
import io.realm.RealmResults
import io.realm.Sort
import net.pokeranalytics.android.model.realm.*
import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
import net.pokeranalytics.android.ui.adapter.components.EditableDataSource
import net.pokeranalytics.android.ui.adapter.components.SimpleRow
import net.pokeranalytics.android.ui.fragment.components.BottomSheetData
import net.pokeranalytics.android.ui.fragment.components.BottomSheetDelegate
import net.pokeranalytics.android.ui.fragment.components.BottomSheetFragment
import java.util.*
import kotlin.collections.ArrayList
enum class DataList {
BANKROLL,
@ -55,7 +63,6 @@ enum class DataList {
return realm.copyFromRealm(t)
}
}
}
/*

@ -1,15 +1,14 @@
package net.pokeranalytics.android.model.realm
import android.text.InputType
import io.realm.*
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 net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.ui.fragment.components.BottomSheetData
import java.util.*
import kotlin.collections.ArrayList
open class Bankroll(name: String = "") : RealmObject(), DynamicRowDelegate, DisplayableDataSource {
open class Bankroll(name: String = "") : RealmObject(), DynamicRowDelegate, DisplayableDataSource, EditableDataSource {
companion object {
fun newInstance() : Bankroll {
@ -35,18 +34,19 @@ open class Bankroll(name: String = "") : RealmObject(), DynamicRowDelegate, Disp
// @todo rate management
override val title: String get() = this.id
override val title: String get() = this.name
override val primaryKey: String get() = this.id
override fun adapterRows(): ArrayList<DynamicRowInterface> {
val rows = ArrayList<DynamicRowInterface>()
rows.add(SimpleRow.NAME)
rows.addAll(BankrollRow.values())
return rows
}
override fun stringForRow(row: DynamicRowInterface): String {
return when (row) {
BankrollRow.NAME -> this.id
SimpleRow.NAME -> this.name
BankrollRow.LIVE -> if (this.live) "live" else "online"
BankrollRow.CURRENCY -> this.currency?.code?: ""
else -> return super.stringForRow(row)
@ -59,4 +59,18 @@ open class Bankroll(name: String = "") : RealmObject(), DynamicRowDelegate, Disp
else -> return super.boolForRow(row)
}
}
override fun getBottomSheetData(row: DynamicRowInterface): ArrayList<BottomSheetData> {
val data = java.util.ArrayList<BottomSheetData>()
when (row) {
SimpleRow.NAME -> data.add(BottomSheetData(this.name, "Name", InputType.TYPE_CLASS_TEXT))
}
return data
}
override fun setBottomSheetValue(value: Any, row: DynamicRowInterface) {
when (row) {
SimpleRow.NAME -> this.name = value as String
}
}
}

@ -1,14 +1,14 @@
package net.pokeranalytics.android.model.realm
import android.text.InputType
import io.realm.Realm
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey
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 net.pokeranalytics.android.ui.adapter.components.GameRow
import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.ui.fragment.components.BottomSheetData
import java.util.*
open class Game : RealmObject(), DynamicRowDelegate, DisplayableDataSource {
open class Game : RealmObject(), DynamicRowDelegate, DisplayableDataSource, EditableDataSource {
@PrimaryKey
var id = UUID.randomUUID().toString()
@ -19,20 +19,34 @@ open class Game : RealmObject(), DynamicRowDelegate, DisplayableDataSource {
// A shorter name for the game
var shortName: String? = null
override val title: String get() = this.id
override val title: String get() = this.name
override val primaryKey: String get() = this.id
override fun adapterRows(): ArrayList<DynamicRowInterface> {
val rows = ArrayList<DynamicRowInterface>()
rows.add(SimpleRow.NAME)
rows.addAll(GameRow.values())
return rows
}
override fun stringForRow(row: DynamicRowInterface): String {
return when (row) {
GameRow.NAME -> this.id
SimpleRow.NAME -> this.name
else -> return super.stringForRow(row)
}
}
override fun getBottomSheetData(row: DynamicRowInterface): ArrayList<BottomSheetData> {
val data = java.util.ArrayList<BottomSheetData>()
when (row) {
SimpleRow.NAME -> data.add(BottomSheetData(this.name, "Name", InputType.TYPE_CLASS_TEXT))
}
return data
}
override fun setBottomSheetValue(value: Any, row: DynamicRowInterface) {
when (row) {
SimpleRow.NAME -> this.name = value as String
}
}
}

@ -1,15 +1,15 @@
package net.pokeranalytics.android.model.realm
import android.text.InputType
import io.realm.Realm
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey
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 net.pokeranalytics.android.ui.adapter.components.LocationRow
import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.ui.fragment.components.BottomSheetData
import java.util.*
open class Location : RealmObject(), DynamicRowDelegate, DisplayableDataSource {
open class Location : RealmObject(), DynamicRowDelegate, DisplayableDataSource, EditableDataSource {
@PrimaryKey
var id = UUID.randomUUID().toString()
@ -23,20 +23,35 @@ open class Location : RealmObject(), DynamicRowDelegate, DisplayableDataSource {
// the latitude of the location
var latitude: Double? = null
override val title: String get() = this.id
override val title: String get() = this.name
override val primaryKey: String get() = this.id
override fun adapterRows(): ArrayList<DynamicRowInterface> {
val rows = ArrayList<DynamicRowInterface>()
rows.add(SimpleRow.NAME)
rows.addAll(LocationRow.values())
return rows
}
override fun stringForRow(row: DynamicRowInterface): String {
return when (row) {
LocationRow.NAME -> this.id
SimpleRow.NAME -> this.name
else -> return super.stringForRow(row)
}
}
override fun getBottomSheetData(row: DynamicRowInterface): ArrayList<BottomSheetData> {
val data = java.util.ArrayList<BottomSheetData>()
when (row) {
SimpleRow.NAME -> data.add(BottomSheetData(this.name, "Name", InputType.TYPE_CLASS_TEXT))
}
return data
}
override fun setBottomSheetValue(value: Any, row: DynamicRowInterface) {
when (row) {
SimpleRow.NAME -> this.name = value as String
}
}
}

@ -151,7 +151,7 @@ open class Session : RealmObject(), SessionInterface, DynamicRowDelegate, Displa
override var title: String = "Change that: $creationDate"
override val primaryKey: String get() = this.id
override fun getBottomSheetData(row: DynamicRowInterface, realm: Realm): ArrayList<BottomSheetData> {
override fun getBottomSheetData(row: DynamicRowInterface): ArrayList<BottomSheetData> {
val data = ArrayList<BottomSheetData>()
@ -181,6 +181,10 @@ open class Session : RealmObject(), SessionInterface, DynamicRowDelegate, Displa
return data
}
override fun setBottomSheetValue(value: Any, row: DynamicRowInterface) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
}
}
enum class TournamentKind {

@ -1,14 +1,14 @@
package net.pokeranalytics.android.model.realm
import android.text.InputType
import io.realm.Realm
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey
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 net.pokeranalytics.android.ui.adapter.components.TournamentFeatureRow
import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.ui.fragment.components.BottomSheetData
import java.util.*
open class TournamentFeature : RealmObject(), DynamicRowDelegate, DisplayableDataSource {
open class TournamentFeature : RealmObject(), DynamicRowDelegate, DisplayableDataSource, EditableDataSource {
@PrimaryKey
var id = UUID.randomUUID().toString()
@ -16,19 +16,35 @@ open class TournamentFeature : RealmObject(), DynamicRowDelegate, DisplayableDat
// The name of the feature
var name: String = ""
override val title: String get() = this.id
override val title: String get() = this.name
override val primaryKey: String get() = this.id
override fun adapterRows(): ArrayList<DynamicRowInterface> {
val rows = ArrayList<DynamicRowInterface>()
rows.add(SimpleRow.NAME)
rows.addAll(TournamentFeatureRow.values())
return rows
}
override fun stringForRow(row: DynamicRowInterface): String {
return when (row) {
TournamentFeatureRow.NAME -> this.id
SimpleRow.NAME -> this.name
else -> return super.stringForRow(row)
}
}
override fun getBottomSheetData(row: DynamicRowInterface): ArrayList<BottomSheetData> {
val data = java.util.ArrayList<BottomSheetData>()
when (row) {
SimpleRow.NAME -> data.add(BottomSheetData(this.name, "Name", InputType.TYPE_CLASS_TEXT))
}
return data
}
override fun setBottomSheetValue(value: Any, row: DynamicRowInterface) {
when (row) {
SimpleRow.NAME -> this.name = value as String
}
}
}

@ -1,15 +1,15 @@
package net.pokeranalytics.android.model.realm
import android.text.InputType
import io.realm.Realm
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey
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 net.pokeranalytics.android.ui.adapter.components.TransactionTypeRow
import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.ui.fragment.components.BottomSheetData
import java.util.*
open class TransactionType : RealmObject(), DynamicRowDelegate, DisplayableDataSource {
open class TransactionType : RealmObject(), DynamicRowDelegate, DisplayableDataSource, EditableDataSource {
@PrimaryKey
var id = UUID.randomUUID().toString()
@ -26,21 +26,37 @@ open class TransactionType : RealmObject(), DynamicRowDelegate, DisplayableDataS
// The predefined kind, if necessary, like: Withdrawal, deposit, or tips
var kind: Int? = null
override val title: String get() = this.id
override val title: String get() = this.name
override val primaryKey: String get() = this.id
override fun adapterRows(): ArrayList<DynamicRowInterface> {
val rows = ArrayList<DynamicRowInterface>()
rows.add(SimpleRow.NAME)
rows.addAll(TransactionTypeRow.values())
return rows
}
override fun stringForRow(row: DynamicRowInterface): String {
return when (row) {
TransactionTypeRow.NAME -> this.id
SimpleRow.NAME -> this.name
else -> return super.stringForRow(row)
}
}
override fun getBottomSheetData(row: DynamicRowInterface): ArrayList<BottomSheetData> {
val data = java.util.ArrayList<BottomSheetData>()
when (row) {
SimpleRow.NAME -> data.add(BottomSheetData(this.name, "Name", InputType.TYPE_CLASS_TEXT))
}
return data
}
override fun setBottomSheetValue(value: Any, row: DynamicRowInterface) {
when (row) {
SimpleRow.NAME -> this.name = value as String
}
}
}
enum class TransactionKind {

@ -22,7 +22,8 @@ interface DisplayableDataSource {
}
interface EditableDataSource {
fun getBottomSheetData(row: DynamicRowInterface, realm: Realm): ArrayList<BottomSheetData>
fun getBottomSheetData(row: DynamicRowInterface): ArrayList<BottomSheetData>
fun setBottomSheetValue(value: Any, row: DynamicRowInterface)
}
class DataListAdapter(var delegate: DisplayableDelegate, var layout: Int? = null) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {

@ -66,8 +66,16 @@ enum class SessionRow(val resId: Int) : DynamicRowInterface {
}
enum class SimpleRow(val resId: Int) : DynamicRowInterface {
NAME(R.string.name);
override fun localizedTitle(context: Context): String {
return context.getString(this.resId)
}
override val viewType: Int = RowViewType.TITLE_VALUE.ordinal
override val bottomSheetType: BottomSheetType = BottomSheetType.EDIT_TEXT
}
enum class BankrollRow(val resId: Int) : DynamicRowInterface {
NAME(R.string.name),
LIVE(R.string.live),
CURRENCY(R.string.currency);
@ -78,14 +86,13 @@ enum class BankrollRow(val resId: Int) : DynamicRowInterface {
override val viewType: Int
get() {
return when (this) {
NAME, LIVE, CURRENCY -> RowViewType.TITLE_VALUE.ordinal
LIVE, CURRENCY -> RowViewType.TITLE_VALUE.ordinal
}
}
override val bottomSheetType: BottomSheetType
get() {
return when (this) {
NAME -> BottomSheetType.EDIT_TEXT
LIVE -> BottomSheetType.NONE
CURRENCY -> BottomSheetType.LIST
}
@ -93,91 +100,15 @@ enum class BankrollRow(val resId: Int) : DynamicRowInterface {
}
enum class GameRow(val resId: Int) : DynamicRowInterface {
NAME(R.string.name);
override fun localizedTitle(context: Context): String {
return context.getString(this.resId)
}
override val viewType: Int
get() {
return when (this) {
NAME -> RowViewType.TITLE_VALUE.ordinal
}
}
override val bottomSheetType: BottomSheetType
get() {
return when (this) {
NAME -> BottomSheetType.EDIT_TEXT
}
}
}
enum class LocationRow(val resId: Int) : DynamicRowInterface {
NAME(R.string.name);
override fun localizedTitle(context: Context): String {
return context.getString(this.resId)
}
override val viewType: Int
get() {
return when (this) {
NAME -> RowViewType.TITLE_VALUE.ordinal
}
}
override val bottomSheetType: BottomSheetType
get() {
return when (this) {
NAME -> BottomSheetType.EDIT_TEXT
}
}
}
enum class TransactionTypeRow(val resId: Int) : DynamicRowInterface {
NAME(R.string.name);
override fun localizedTitle(context: Context): String {
return context.getString(this.resId)
}
override val viewType: Int
get() {
return when (this) {
NAME -> RowViewType.TITLE_VALUE.ordinal
}
}
override val bottomSheetType: BottomSheetType
get() {
return when (this) {
NAME -> BottomSheetType.EDIT_TEXT
}
}
}
enum class TournamentFeatureRow(val resId: Int) : DynamicRowInterface {
NAME(R.string.name);
override fun localizedTitle(context: Context): String {
return context.getString(this.resId)
}
override val viewType: Int
get() {
return when (this) {
NAME -> RowViewType.TITLE_VALUE.ordinal
}
}
override val bottomSheetType: BottomSheetType
get() {
return when (this) {
NAME -> BottomSheetType.EDIT_TEXT
}
}
}
enum class SettingRow(val resId: Int) : DynamicRowInterface {

@ -1,6 +1,7 @@
package net.pokeranalytics.android.ui.fragment
import android.os.Bundle
import android.text.InputType
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
@ -12,11 +13,10 @@ import kotlinx.android.synthetic.main.fragment_editable_data.*
import kotlinx.android.synthetic.main.fragment_editable_data.view.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.DataList
import net.pokeranalytics.android.model.realm.Bankroll
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.adapter.components.DynamicListAdapter
import net.pokeranalytics.android.ui.adapter.components.DynamicRowCallback
import net.pokeranalytics.android.ui.adapter.components.DynamicRowDelegate
import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.ui.fragment.components.BottomSheetData
import net.pokeranalytics.android.ui.fragment.components.BottomSheetDelegate
import net.pokeranalytics.android.ui.fragment.components.BottomSheetFragment
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
@ -38,8 +38,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback, Botto
}
override fun onRowSelected(row: DynamicRowInterface) {
val data = item
BottomSheetFragment.create(fragmentManager, row, this, ArrayList())
BottomSheetFragment.create(fragmentManager, row, this, (this.item as EditableDataSource).getBottomSheetData(row))
}
override fun clickOnAdd(row: DynamicRowInterface) {
@ -55,6 +54,10 @@ class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback, Botto
}
override fun setValue(value: Any, row: DynamicRowInterface) {
(this.item as EditableDataSource).setBottomSheetValue(value, row)
this.getRealm().executeTransaction {
it.copyToRealm(this.item)
}
Toast.makeText(requireContext(), "Callback for ${row.localizedTitle(requireContext())} ($value)", Toast.LENGTH_SHORT).show()
}

@ -36,7 +36,7 @@ class NewSessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomS
}
override fun onRowSelected(row: DynamicRowInterface) {
val data = currentSession.getBottomSheetData(row, getRealm())
val data = currentSession.getBottomSheetData(row)
BottomSheetFragment.create(fragmentManager, row, this, data)
}

Loading…
Cancel
Save