Add header management for RowRepresentable

feature/top10
Aurelien Hubert 7 years ago
parent 0d8e72f5f9
commit f3c792d2a1
  1. 2
      app/src/main/java/net/pokeranalytics/android/calculus/Stat.kt
  2. 3
      app/src/main/java/net/pokeranalytics/android/model/Limit.kt
  3. 3
      app/src/main/java/net/pokeranalytics/android/model/TableSize.kt
  4. 169
      app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt
  5. 7
      app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt
  6. 12
      app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt
  7. 14
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  8. 98
      app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt
  9. 136
      app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt
  10. 21
      app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt

@ -73,6 +73,8 @@ enum class Stat : RowRepresentable {
} }
override val viewType: Int = RowViewType.TITLE_VALUE.ordinal override val viewType: Int = RowViewType.TITLE_VALUE.ordinal
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
} }
/** /**

@ -36,6 +36,9 @@ enum class Limit : RowRepresentable {
override fun getDisplayName(): String { override fun getDisplayName(): String {
return this.longName return this.longName
} }
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
} }
/* /*

@ -33,4 +33,7 @@ class TableSize(var numberOfPlayer: Int) : RowRepresentable {
override val viewType: Int override val viewType: Int
get() = RowViewType.TITLE_GRID.ordinal get() = RowViewType.TITLE_GRID.ordinal
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
} }

@ -3,94 +3,99 @@ package net.pokeranalytics.android.model.realm
import android.text.InputType import android.text.InputType
import io.realm.RealmList import io.realm.RealmList
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.annotations.Ignore
import io.realm.annotations.PrimaryKey import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowEditableDescriptor
import net.pokeranalytics.android.ui.view.* import net.pokeranalytics.android.ui.view.*
import java.util.* import java.util.*
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
open class Bankroll(name: String = "") : RealmObject(), Savable, open class Bankroll(name: String = "") : RealmObject(), Savable,
RowRepresentableDataSource, RowRepresentableDataSource,
RowEditable, RowRepresentable { RowEditable, RowRepresentable {
companion object { companion object {
fun newInstance() : Bankroll { fun newInstance(): Bankroll {
var bankroll: Bankroll = Bankroll() var bankroll: Bankroll = Bankroll()
return bankroll return bankroll
} }
} }
@PrimaryKey @PrimaryKey
var id = UUID.randomUUID().toString() var id = UUID.randomUUID().toString()
// the name of the bankroll // the name of the bankroll
var name: String = name var name: String = name
// Indicates whether the bankroll is live or online // Indicates whether the bankroll is live or online
var live: Boolean = true var live: Boolean = true
// The list of transactions of the bankroll // The list of transactions of the bankroll
var transactions: RealmList<Transaction> = RealmList() var transactions: RealmList<Transaction> = RealmList()
// The currency of the bankroll // The currency of the bankroll
var currency: Currency? = null var currency: Currency? = null
// @todo rate management // @todo rate management
override fun getDisplayName(): String { override fun getDisplayName(): String {
return this.name return this.name
} }
override fun uniqueIdentifier(): String { override fun uniqueIdentifier(): String {
return this.id return this.id
} }
override fun adapterRows(): ArrayList<RowRepresentable> { override fun adapterRows(): ArrayList<RowRepresentable> {
val rows = ArrayList<RowRepresentable>() val rows = ArrayList<RowRepresentable>()
rows.add(SimpleRow.NAME) rows.add(SimpleRow.NAME)
rows.addAll(BankrollRow.values()) rows.addAll(BankrollRow.values())
return rows return rows
} }
override fun stringForRow(row: RowRepresentable): String { override fun stringForRow(row: RowRepresentable): String {
return when (row) { return when (row) {
SimpleRow.NAME -> this.name SimpleRow.NAME -> this.name
BankrollRow.LIVE -> if (this.live) "live" else "online" BankrollRow.LIVE -> if (this.live) "live" else "online"
BankrollRow.CURRENCY -> this.currency?.code?: "" BankrollRow.CURRENCY -> this.currency?.code ?: ""
else -> return super.stringForRow(row) else -> return super.stringForRow(row)
} }
} }
override fun boolForRow(row: RowRepresentable): Boolean { override fun boolForRow(row: RowRepresentable): Boolean {
when (row) { when (row) {
BankrollRow.LIVE -> return true BankrollRow.LIVE -> return true
else -> return super.boolForRow(row) else -> return super.boolForRow(row)
} }
} }
override fun rowEditableDescriptors(row: RowRepresentable): ArrayList<RowEditableDescriptor> { override fun rowEditableDescriptors(row: RowRepresentable): ArrayList<RowEditableDescriptor> {
val data = java.util.ArrayList<RowEditableDescriptor>() val data = java.util.ArrayList<RowEditableDescriptor>()
when (row) { when (row) {
SimpleRow.NAME -> data.add( SimpleRow.NAME -> data.add(
RowEditableDescriptor( RowEditableDescriptor(
this.name, this.name,
SimpleRow.NAME.resId, SimpleRow.NAME.resId,
InputType.TYPE_CLASS_TEXT InputType.TYPE_CLASS_TEXT
) )
) )
} }
return data return data
} }
override fun updateValue(value: Any?, row: RowRepresentable) { override fun updateValue(value: Any?, row: RowRepresentable) {
when (row) { when (row) {
SimpleRow.NAME -> this.name = value as String? ?: "" SimpleRow.NAME -> this.name = value as String? ?: ""
} }
} }
override fun isValidForSave(): Boolean { override fun isValidForSave(): Boolean {
return this.name.isNotEmpty() return this.name.isNotEmpty()
} }
@Ignore
override var displayHeader: Boolean = false
@Ignore
override var headerValues: ArrayList<String> = ArrayList()
} }

@ -2,10 +2,10 @@ package net.pokeranalytics.android.model.realm
import android.text.InputType import android.text.InputType
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.annotations.Ignore
import io.realm.annotations.PrimaryKey import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowEditableDescriptor
import net.pokeranalytics.android.ui.view.* import net.pokeranalytics.android.ui.view.*
import java.util.* import java.util.*
@ -75,4 +75,9 @@ open class Game : RealmObject(), Savable, RowRepresentableDataSource, RowEditabl
override fun isValidForSave(): Boolean { override fun isValidForSave(): Boolean {
return this.name.isNotEmpty() return this.name.isNotEmpty()
} }
@Ignore
override var displayHeader: Boolean = false
@Ignore
override var headerValues: ArrayList<String> = ArrayList()
} }

@ -2,14 +2,11 @@ package net.pokeranalytics.android.model.realm
import android.text.InputType import android.text.InputType
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.annotations.Ignore
import io.realm.annotations.PrimaryKey import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowEditableDescriptor import net.pokeranalytics.android.ui.view.*
import net.pokeranalytics.android.ui.view.RowEditable
import net.pokeranalytics.android.ui.view.LocationRow
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.SimpleRow
import java.util.* import java.util.*
@ -72,4 +69,9 @@ open class Location : RealmObject(), Savable, RowRepresentableDataSource, RowEdi
override fun isValidForSave(): Boolean { override fun isValidForSave(): Boolean {
return this.name.isNotEmpty() return this.name.isNotEmpty()
} }
@Ignore
override var displayHeader: Boolean = false
@Ignore
override var headerValues: ArrayList<String> = ArrayList()
} }

@ -14,13 +14,13 @@ import net.pokeranalytics.android.model.extensions.SessionState
import net.pokeranalytics.android.model.extensions.getState import net.pokeranalytics.android.model.extensions.getState
import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowEditableDescriptor
import net.pokeranalytics.android.ui.view.RowEditable import net.pokeranalytics.android.ui.view.RowEditable
import net.pokeranalytics.android.ui.view.RowEditableDescriptor
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.SessionRow import net.pokeranalytics.android.ui.view.SessionRow
import net.pokeranalytics.android.util.getDuration import net.pokeranalytics.android.util.getDuration
import net.pokeranalytics.android.util.round import net.pokeranalytics.android.util.round
import net.pokeranalytics.android.util.short import net.pokeranalytics.android.util.shortDateTime
import net.pokeranalytics.android.util.toCurrency import net.pokeranalytics.android.util.toCurrency
import timber.log.Timber import timber.log.Timber
import java.util.* import java.util.*
@ -97,6 +97,12 @@ open class Session : RealmObject(), SessionInterface, Savable,
// The features of the tournament, like Knockout, Shootout, Turbo... // The features of the tournament, like Knockout, Shootout, Turbo...
var tournamentFeatures: RealmList<TournamentFeature> = RealmList() var tournamentFeatures: RealmList<TournamentFeature> = RealmList()
@Ignore
override var displayHeader: Boolean = false
@Ignore
override var headerValues: ArrayList<String> = ArrayList()
/** /**
* Start a session * Start a session
*/ */
@ -279,8 +285,8 @@ open class Session : RealmObject(), SessionInterface, Savable,
SessionRow.LOCATION -> location?.name ?: "--" SessionRow.LOCATION -> location?.name ?: "--"
SessionRow.BANKROLL -> bankroll?.name ?: "--" SessionRow.BANKROLL -> bankroll?.name ?: "--"
SessionRow.TABLE_SIZE -> tableSize?.toString() ?: "--" SessionRow.TABLE_SIZE -> tableSize?.toString() ?: "--"
SessionRow.START_DATE -> if (timeFrame != null) timeFrame?.startDate?.short() ?: "--" else "--" SessionRow.START_DATE -> if (timeFrame != null) timeFrame?.startDate?.shortDateTime() ?: "--" else "--"
SessionRow.END_DATE -> if (timeFrame != null) timeFrame?.endDate?.short() ?: "--" else "--" SessionRow.END_DATE -> if (timeFrame != null) timeFrame?.endDate?.shortDateTime() ?: "--" else "--"
SessionRow.COMMENT -> if (comment.isNotEmpty()) comment else "--" SessionRow.COMMENT -> if (comment.isNotEmpty()) comment else "--"
else -> "--" else -> "--"
} }

@ -2,68 +2,70 @@ package net.pokeranalytics.android.model.realm
import android.text.InputType import android.text.InputType
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.annotations.Ignore
import io.realm.annotations.PrimaryKey import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowEditableDescriptor import net.pokeranalytics.android.ui.view.*
import net.pokeranalytics.android.ui.view.RowEditable
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.SimpleRow
import net.pokeranalytics.android.ui.view.TournamentFeatureRow
import java.util.* import java.util.*
open class TournamentFeature : RealmObject(), Savable, RowRepresentableDataSource, RowEditable, RowRepresentable { open class TournamentFeature : RealmObject(), Savable, RowRepresentableDataSource, RowEditable, RowRepresentable {
@PrimaryKey @PrimaryKey
var id = UUID.randomUUID().toString() var id = UUID.randomUUID().toString()
// The name of the feature // The name of the feature
var name: String = "" var name: String = ""
override fun getDisplayName(): String { override fun getDisplayName(): String {
return this.name return this.name
} }
override fun uniqueIdentifier(): String { override fun uniqueIdentifier(): String {
return this.id return this.id
} }
override fun adapterRows(): ArrayList<RowRepresentable> { override fun adapterRows(): ArrayList<RowRepresentable> {
val rows = ArrayList<RowRepresentable>() val rows = ArrayList<RowRepresentable>()
rows.add(SimpleRow.NAME) rows.add(SimpleRow.NAME)
rows.addAll(TournamentFeatureRow.values()) rows.addAll(TournamentFeatureRow.values())
return rows return rows
} }
override fun stringForRow(row: RowRepresentable): String { override fun stringForRow(row: RowRepresentable): String {
return when (row) { return when (row) {
SimpleRow.NAME -> this.name SimpleRow.NAME -> this.name
else -> return super.stringForRow(row) else -> return super.stringForRow(row)
} }
} }
override fun rowEditableDescriptors(row: RowRepresentable): ArrayList<RowEditableDescriptor> { override fun rowEditableDescriptors(row: RowRepresentable): ArrayList<RowEditableDescriptor> {
val data = java.util.ArrayList<RowEditableDescriptor>() val data = java.util.ArrayList<RowEditableDescriptor>()
when (row) { when (row) {
SimpleRow.NAME -> data.add( SimpleRow.NAME -> data.add(
RowEditableDescriptor( RowEditableDescriptor(
this.name, this.name,
SimpleRow.NAME.resId, SimpleRow.NAME.resId,
InputType.TYPE_CLASS_TEXT InputType.TYPE_CLASS_TEXT
) )
) )
} }
return data return data
} }
override fun updateValue(value: Any?, row: RowRepresentable) { override fun updateValue(value: Any?, row: RowRepresentable) {
when (row) { when (row) {
SimpleRow.NAME -> this.name = value as String? ?: "" SimpleRow.NAME -> this.name = value as String? ?: ""
} }
} }
override fun isValidForSave(): Boolean { override fun isValidForSave(): Boolean {
return this.name.isNotEmpty() return this.name.isNotEmpty()
} }
@Ignore
override var displayHeader: Boolean = false
@Ignore
override var headerValues: ArrayList<String> = ArrayList()
} }

@ -2,82 +2,84 @@ package net.pokeranalytics.android.model.realm
import android.text.InputType import android.text.InputType
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.annotations.Ignore
import io.realm.annotations.PrimaryKey import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowEditableDescriptor import net.pokeranalytics.android.ui.view.*
import net.pokeranalytics.android.ui.view.RowEditable
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.SimpleRow
import net.pokeranalytics.android.ui.view.TransactionTypeRow
import java.util.* import java.util.*
open class TransactionType : RealmObject(), Savable, RowRepresentableDataSource, RowEditable, RowRepresentable { open class TransactionType : RealmObject(), Savable, RowRepresentableDataSource, RowEditable, RowRepresentable {
@PrimaryKey @PrimaryKey
var id = UUID.randomUUID().toString() var id = UUID.randomUUID().toString()
// The name of the transaction type // The name of the transaction type
var name: String = "" var name: String = ""
// Whether or not the amount is added, or subtracted to the bankroll total // Whether or not the amount is added, or subtracted to the bankroll total
var additive: Boolean = false var additive: Boolean = false
// Whether or not the type can be deleted by the user // Whether or not the type can be deleted by the user
var lock: Boolean = false var lock: Boolean = false
// The predefined kind, if necessary, like: Withdrawal, deposit, or tips // The predefined kind, if necessary, like: Withdrawal, deposit, or tips
var kind: Int? = null var kind: Int? = null
override fun getDisplayName(): String { override fun getDisplayName(): String {
return this.name return this.name
} }
override fun uniqueIdentifier(): String { override fun uniqueIdentifier(): String {
return this.id return this.id
} }
override fun adapterRows(): ArrayList<RowRepresentable> { override fun adapterRows(): ArrayList<RowRepresentable> {
val rows = ArrayList<RowRepresentable>() val rows = ArrayList<RowRepresentable>()
rows.add(SimpleRow.NAME) rows.add(SimpleRow.NAME)
rows.addAll(TransactionTypeRow.values()) rows.addAll(TransactionTypeRow.values())
return rows return rows
} }
override fun stringForRow(row: RowRepresentable): String { override fun stringForRow(row: RowRepresentable): String {
return when (row) { return when (row) {
SimpleRow.NAME -> this.name SimpleRow.NAME -> this.name
else -> return super.stringForRow(row) else -> return super.stringForRow(row)
} }
} }
override fun rowEditableDescriptors(row: RowRepresentable): ArrayList<RowEditableDescriptor> { override fun rowEditableDescriptors(row: RowRepresentable): ArrayList<RowEditableDescriptor> {
val data = java.util.ArrayList<RowEditableDescriptor>() val data = java.util.ArrayList<RowEditableDescriptor>()
when (row) { when (row) {
SimpleRow.NAME -> data.add( SimpleRow.NAME -> data.add(
RowEditableDescriptor( RowEditableDescriptor(
this.name, this.name,
SimpleRow.NAME.resId, SimpleRow.NAME.resId,
InputType.TYPE_CLASS_TEXT InputType.TYPE_CLASS_TEXT
) )
) )
} }
return data return data
} }
override fun updateValue(value: Any?, row: RowRepresentable) { override fun updateValue(value: Any?, row: RowRepresentable) {
when (row) { when (row) {
SimpleRow.NAME -> this.name = value as String? ?: "" SimpleRow.NAME -> this.name = value as String? ?: ""
} }
} }
override fun isValidForSave(): Boolean { override fun isValidForSave(): Boolean {
return this.name.isNotEmpty() return this.name.isNotEmpty()
} }
@Ignore
override var displayHeader: Boolean = false
@Ignore
override var headerValues: ArrayList<String> = ArrayList()
} }
enum class TransactionKind { enum class TransactionKind {
WITHDRAWAL, WITHDRAWAL,
DEPOSIT DEPOSIT
} }

@ -69,6 +69,10 @@ interface Displayable: Localizable {
get() { get() {
return false return false
} }
var displayHeader: Boolean
var headerValues: ArrayList<String>
} }
enum class SessionRow : RowRepresentable { enum class SessionRow : RowRepresentable {
@ -179,6 +183,9 @@ enum class SessionRow : RowRepresentable {
else -> BottomSheetType.NONE else -> BottomSheetType.NONE
} }
} }
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
} }
enum class SimpleRow : RowRepresentable { enum class SimpleRow : RowRepresentable {
@ -187,6 +194,8 @@ enum class SimpleRow : RowRepresentable {
override val resId: Int? = R.string.name override val resId: Int? = R.string.name
override val viewType: Int = RowViewType.TITLE_VALUE.ordinal override val viewType: Int = RowViewType.TITLE_VALUE.ordinal
override val bottomSheetType: BottomSheetType = BottomSheetType.EDIT_TEXT override val bottomSheetType: BottomSheetType = BottomSheetType.EDIT_TEXT
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
} }
enum class BankrollRow : RowRepresentable { enum class BankrollRow : RowRepresentable {
@ -215,6 +224,9 @@ enum class BankrollRow : RowRepresentable {
CURRENCY -> BottomSheetType.LIST CURRENCY -> BottomSheetType.LIST
} }
} }
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
} }
enum class GameRow : RowRepresentable { enum class GameRow : RowRepresentable {
@ -240,6 +252,9 @@ enum class GameRow : RowRepresentable {
SHORT_NAME -> BottomSheetType.EDIT_TEXT SHORT_NAME -> BottomSheetType.EDIT_TEXT
} }
} }
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
} }
enum class LocationRow : RowRepresentable { enum class LocationRow : RowRepresentable {
@ -265,6 +280,9 @@ enum class LocationRow : RowRepresentable {
LOCATION_STATUS -> BottomSheetType.NONE LOCATION_STATUS -> BottomSheetType.NONE
} }
} }
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
} }
enum class TransactionTypeRow : RowRepresentable { enum class TransactionTypeRow : RowRepresentable {
@ -301,4 +319,7 @@ enum class SettingRow : RowRepresentable {
TRANSACTION_TYPE -> LiveData.TRANSACTION_TYPE TRANSACTION_TYPE -> LiveData.TRANSACTION_TYPE
} }
} }
override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList()
} }
Loading…
Cancel
Save