Merge branch 'master' of gitlab.com:stax-river/poker-analytics

feature/top10
Laurent 7 years ago
commit deaa6e7916
  1. 3
      app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt
  2. 43
      app/src/main/java/net/pokeranalytics/android/model/Limit.kt
  3. 15
      app/src/main/java/net/pokeranalytics/android/model/LiveData.kt
  4. 36
      app/src/main/java/net/pokeranalytics/android/model/TableSize.kt
  5. 19
      app/src/main/java/net/pokeranalytics/android/model/interfaces/Savable.kt
  6. 24
      app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt
  7. 30
      app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt
  8. 20
      app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt
  9. 103
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  10. 20
      app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt
  11. 20
      app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt
  12. 58
      app/src/main/java/net/pokeranalytics/android/ui/adapter/HistoryAdapter.kt
  13. 51
      app/src/main/java/net/pokeranalytics/android/ui/adapter/LimitTypesAdapter.kt
  14. 6
      app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt
  15. 50
      app/src/main/java/net/pokeranalytics/android/ui/adapter/TableSizeGridAdapter.kt
  16. 71
      app/src/main/java/net/pokeranalytics/android/ui/adapter/components/LiveDataAdapter.kt
  17. 12
      app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt
  18. 17
      app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt
  19. 13
      app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt
  20. 6
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt
  21. 11
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
  22. 4
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt
  23. 11
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetData.kt
  24. 8
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetFragment.kt
  25. 7
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt
  26. 23
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt
  27. 42
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt
  28. 28
      app/src/main/java/net/pokeranalytics/android/ui/view/RowEditable.kt
  29. 4
      app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt
  30. 3
      app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt

@ -5,7 +5,6 @@ import io.realm.Realm
import io.realm.RealmConfiguration
import io.realm.RealmResults
import io.realm.kotlin.where
import net.pokeranalytics.android.model.Limit
import net.pokeranalytics.android.model.realm.Game
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.util.PokerAnalyticsLogs
@ -53,8 +52,6 @@ class PokerAnalyticsApplication : Application() {
*/
}
Limit.init(this)
if (BuildConfig.DEBUG) {
// Logs
Timber.plant(PokerAnalyticsLogs())

@ -1,8 +1,44 @@
package net.pokeranalytics.android.model
import android.content.Context
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.view.RowRepresentable
enum class Limit : RowRepresentable {
NO,
POT,
FIXED,
SPREAD,
MIXED;
val shortName: String
get() {
return when (this) {
NO -> "NL"
POT -> "PL"
FIXED -> "FL"
MIXED -> "ML"
SPREAD -> "SL"
}
}
val longName: String
get() {
val limit = "Limit"
return when (this) {
NO -> "No $limit"
POT -> "Pot $limit"
FIXED -> "Fixed $limit"
MIXED -> "Mixed $limit"
SPREAD -> "Spread $limit"
}
}
override fun getDisplayName(): String {
return this.longName
}
}
/*
class Limit {
companion object {
@ -23,4 +59,5 @@ class Limit {
}
}
}
}
*/

@ -5,21 +5,10 @@ import io.realm.RealmObject
import io.realm.RealmResults
import io.realm.Sort
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.model.realm.*
import net.pokeranalytics.android.ui.adapter.components.LiveDataDataSource
import net.pokeranalytics.android.ui.view.Localizable
/**
* An interface to easily handle the validity of any object we want to save
*/
interface ObjectSavable {
fun isValidForSave(): Boolean {
return true
}
fun uniqueIdentifier(): String
}
/**
* An enum managing the business objects related to a realm results
*/
@ -66,7 +55,7 @@ enum class LiveData : Localizable {
}
}
fun deleteData(realm:Realm, data:ObjectSavable) {
fun deleteData(realm:Realm, data:Savable) {
realm.where(this.relatedEntity).equalTo("id", data.uniqueIdentifier()).findAll().deleteAllFromRealm()
}

@ -0,0 +1,36 @@
package net.pokeranalytics.android.model
import android.content.Context
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
class TableSize(var numberOfPlayer:Int): RowRepresentable {
companion object {
val all = Array(8, init =
{ index -> TableSize(index+2)})
}
override val resId: Int?
get() {
return if (this.numberOfPlayer == 2) {
R.string.heads_up
} else {
R.string.max
}
}
override fun localizedTitle(context: Context): String {
this.resId?.let {
return if (this.numberOfPlayer == 2) {
context.getString(it)
} else {
"$this.numberOfPlayer$context.getString(it)"
}
}
return super.localizedTitle(context)
}
override val viewType: Int
get() = RowViewType.TITLE_GRID.ordinal
}

@ -0,0 +1,19 @@
package net.pokeranalytics.android.model.interfaces
/**
* An interface to easily handle the validity of any object we want to save
*/
interface Savable {
/**
* A method to define if an object is safe for saving in database
*/
fun isValidForSave(): Boolean {
//TODO should be by default to false
return true
}
/**
* A unique identifier getter
*/
fun uniqueIdentifier(): String
}

@ -4,16 +4,16 @@ import android.text.InputType
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.model.ObjectSavable
import net.pokeranalytics.android.ui.adapter.components.LiveDataDataSource
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDataSource
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetData
import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowEditableDescriptor
import net.pokeranalytics.android.ui.view.*
import java.util.*
import kotlin.collections.ArrayList
open class Bankroll(name: String = "") : RealmObject(), RowRepresentableDataSource,
RowEditable, ObjectSavable, RowRepresentable {
open class Bankroll(name: String = "") : RealmObject(), Savable,
RowRepresentableDataSource,
RowEditable, RowRepresentable {
companion object {
fun newInstance() : Bankroll {
@ -70,10 +70,16 @@ open class Bankroll(name: String = "") : RealmObject(), RowRepresentableDataSour
}
}
override fun getBottomSheetData(row: RowRepresentable): ArrayList<BottomSheetData> {
val data = java.util.ArrayList<BottomSheetData>()
override fun rowEditableDescriptors(row: RowRepresentable): ArrayList<RowEditableDescriptor> {
val data = java.util.ArrayList<RowEditableDescriptor>()
when (row) {
SimpleRow.NAME -> data.add(BottomSheetData(this.name, SimpleRow.NAME.resId, InputType.TYPE_CLASS_TEXT))
SimpleRow.NAME -> data.add(
RowEditableDescriptor(
this.name,
SimpleRow.NAME.resId,
InputType.TYPE_CLASS_TEXT
)
)
}
return data
}

@ -3,15 +3,13 @@ package net.pokeranalytics.android.model.realm
import android.text.InputType
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.model.ObjectSavable
import net.pokeranalytics.android.ui.adapter.components.DisplayableDelegate
import net.pokeranalytics.android.ui.adapter.components.LiveDataDataSource
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDataSource
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetData
import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowEditableDescriptor
import net.pokeranalytics.android.ui.view.*
import java.util.*
open class Game : RealmObject(), RowRepresentableDataSource, RowEditable, ObjectSavable,
open class Game : RealmObject(), Savable, RowRepresentableDataSource, RowEditable,
RowRepresentable {
@PrimaryKey
@ -46,11 +44,23 @@ open class Game : RealmObject(), RowRepresentableDataSource, RowEditable, Object
}
}
override fun getBottomSheetData(row: RowRepresentable): ArrayList<BottomSheetData> {
val data = java.util.ArrayList<BottomSheetData>()
override fun rowEditableDescriptors(row: RowRepresentable): ArrayList<RowEditableDescriptor> {
val data = java.util.ArrayList<RowEditableDescriptor>()
when (row) {
SimpleRow.NAME -> data.add(BottomSheetData(this.name, SimpleRow.NAME.resId, InputType.TYPE_CLASS_TEXT))
GameRow.SHORT_NAME -> data.add(BottomSheetData(this.shortName, GameRow.SHORT_NAME.resId, InputType.TYPE_CLASS_TEXT))
SimpleRow.NAME -> data.add(
RowEditableDescriptor(
this.name,
SimpleRow.NAME.resId,
InputType.TYPE_CLASS_TEXT
)
)
GameRow.SHORT_NAME -> data.add(
RowEditableDescriptor(
this.shortName,
GameRow.SHORT_NAME.resId,
InputType.TYPE_CLASS_TEXT
)
)
}
return data
}

@ -3,9 +3,9 @@ package net.pokeranalytics.android.model.realm
import android.text.InputType
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.model.ObjectSavable
import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetData
import net.pokeranalytics.android.model.interfaces.Savable
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.LocationRow
import net.pokeranalytics.android.ui.view.RowRepresentable
@ -13,7 +13,7 @@ import net.pokeranalytics.android.ui.view.SimpleRow
import java.util.*
open class Location : RealmObject(), RowRepresentableDataSource, RowEditable, ObjectSavable, RowRepresentable {
open class Location : RealmObject(), Savable, RowRepresentableDataSource, RowEditable, RowRepresentable {
@PrimaryKey
var id = UUID.randomUUID().toString()
@ -49,10 +49,16 @@ open class Location : RealmObject(), RowRepresentableDataSource, RowEditable, Ob
}
}
override fun getBottomSheetData(row: RowRepresentable): ArrayList<BottomSheetData> {
val data = java.util.ArrayList<BottomSheetData>()
override fun rowEditableDescriptors(row: RowRepresentable): ArrayList<RowEditableDescriptor> {
val data = java.util.ArrayList<RowEditableDescriptor>()
when (row) {
SimpleRow.NAME -> data.add(BottomSheetData(this.name, SimpleRow.NAME.resId, InputType.TYPE_CLASS_TEXT))
SimpleRow.NAME -> data.add(
RowEditableDescriptor(
this.name,
SimpleRow.NAME.resId,
InputType.TYPE_CLASS_TEXT
)
)
}
return data
}

@ -10,11 +10,11 @@ import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.SessionInterface
import net.pokeranalytics.android.model.Limit
import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.ObjectSavable
import net.pokeranalytics.android.model.extensions.SessionState
import net.pokeranalytics.android.model.extensions.getState
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDataSource
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetData
import net.pokeranalytics.android.model.interfaces.Savable
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.RowRepresentable
import net.pokeranalytics.android.ui.view.SessionRow
@ -26,8 +26,9 @@ import timber.log.Timber
import java.util.*
import kotlin.collections.ArrayList
open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource,
RowEditable, RowRepresentable, ObjectSavable {
open class Session : RealmObject(), SessionInterface, Savable,
RowRepresentableDataSource,
RowEditable, RowRepresentable {
@PrimaryKey
var id = UUID.randomUUID().toString()
@ -201,7 +202,7 @@ open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource
fun getGameTitle(): String {
var gameTitle = ""
limit?.let {
gameTitle += Limit.get(it) + " "
gameTitle += Limit.values()[it].shortName + " "
}
if (game != null) {
gameTitle += game?.name
@ -300,64 +301,112 @@ open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource
}
}
override fun getBottomSheetData(row: RowRepresentable): ArrayList<BottomSheetData> {
override fun rowEditableDescriptors(row: RowRepresentable): ArrayList<RowEditableDescriptor> {
val data = ArrayList<BottomSheetData>()
val data = ArrayList<RowEditableDescriptor>()
when (row) {
SessionRow.BUY_IN -> {
// Add first & second buttons values, current value & set the 2 edit texts
data.add(BottomSheetData(100.0 * (cgBigBlind ?: 0.0)))
data.add(BottomSheetData(200.0 * (cgBigBlind ?: 0.0)))
data.add(BottomSheetData(buyin))
data.add(RowEditableDescriptor(100.0 * (cgBigBlind ?: 0.0)))
data.add(RowEditableDescriptor(200.0 * (cgBigBlind ?: 0.0)))
data.add(RowEditableDescriptor(buyin))
data.add(
BottomSheetData(
RowEditableDescriptor(
"",
inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL
)
)
data.add(
BottomSheetData(
RowEditableDescriptor(
"",
inputType = InputType.TYPE_CLASS_NUMBER or InputType.TYPE_NUMBER_FLAG_DECIMAL
)
)
}
SessionRow.CASHED_OUT -> {
data.add(BottomSheetData(result?.cashout, inputType = InputType.TYPE_CLASS_NUMBER))
data.add(
RowEditableDescriptor(
result?.cashout,
inputType = InputType.TYPE_CLASS_NUMBER
)
)
}
SessionRow.TIPS -> {
// Disable the buttons with value = 0, add current value & set the 2 edit texts
// TODO: manage tips
data.add(BottomSheetData(cgSmallBlind ?: 0.0))
data.add(BottomSheetData(cgBigBlind ?: 0.0))
data.add(BottomSheetData(0))
data.add(BottomSheetData("", inputType = InputType.TYPE_CLASS_NUMBER))
data.add(BottomSheetData("", inputType = InputType.TYPE_CLASS_NUMBER))
data.add(RowEditableDescriptor(cgSmallBlind ?: 0.0))
data.add(RowEditableDescriptor(cgBigBlind ?: 0.0))
data.add(RowEditableDescriptor(0))
data.add(
RowEditableDescriptor(
"",
inputType = InputType.TYPE_CLASS_NUMBER
)
)
data.add(
RowEditableDescriptor(
"",
inputType = InputType.TYPE_CLASS_NUMBER
)
)
}
SessionRow.TABLE_SIZE -> {
data.add(BottomSheetData(tableSize))
data.add(RowEditableDescriptor(tableSize))
}
SessionRow.GAME -> {
// Add current game & games list
data.add(BottomSheetData(limit))
data.add(BottomSheetData(game, data = LiveData.GAME.items(realm)))
data.add(RowEditableDescriptor(limit))
data.add(
RowEditableDescriptor(
game,
data = LiveData.GAME.items(realm)
)
)
}
SessionRow.LOCATION -> {
// Add current location and locations list
data.add(BottomSheetData(location, data = LiveData.LOCATION.items(realm)))
data.add(
RowEditableDescriptor(
location,
data = LiveData.LOCATION.items(realm)
)
)
}
SessionRow.BANKROLL -> {
// Add current bankroll and bankrolls list
data.add(BottomSheetData(bankroll, data = LiveData.BANKROLL.items(realm)))
data.add(
RowEditableDescriptor(
bankroll,
data = LiveData.BANKROLL.items(realm)
)
)
}
SessionRow.BLINDS -> {
data.add(BottomSheetData(cgSmallBlind, R.string.smallblind, InputType.TYPE_CLASS_NUMBER))
data.add(BottomSheetData(cgBigBlind, R.string.bigblind, InputType.TYPE_CLASS_NUMBER))
data.add(
RowEditableDescriptor(
cgSmallBlind,
R.string.smallblind,
InputType.TYPE_CLASS_NUMBER
)
)
data.add(
RowEditableDescriptor(
cgBigBlind,
R.string.bigblind,
InputType.TYPE_CLASS_NUMBER
)
)
}
SessionRow.COMMENT -> {
data.add(BottomSheetData(comment, R.string.comment, InputType.TYPE_CLASS_TEXT))
data.add(
RowEditableDescriptor(
comment,
R.string.comment,
InputType.TYPE_CLASS_TEXT
)
)
}
}

@ -3,16 +3,16 @@ package net.pokeranalytics.android.model.realm
import android.text.InputType
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.model.ObjectSavable
import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetData
import net.pokeranalytics.android.model.interfaces.Savable
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.RowRepresentable
import net.pokeranalytics.android.ui.view.SimpleRow
import net.pokeranalytics.android.ui.view.TournamentFeatureRow
import java.util.*
open class TournamentFeature : RealmObject(), RowRepresentableDataSource, RowEditable, ObjectSavable, RowRepresentable {
open class TournamentFeature : RealmObject(), Savable, RowRepresentableDataSource, RowEditable, RowRepresentable {
@PrimaryKey
var id = UUID.randomUUID().toString()
@ -43,10 +43,16 @@ open class TournamentFeature : RealmObject(), RowRepresentableDataSource, RowEdi
}
override fun getBottomSheetData(row: RowRepresentable): ArrayList<BottomSheetData> {
val data = java.util.ArrayList<BottomSheetData>()
override fun rowEditableDescriptors(row: RowRepresentable): ArrayList<RowEditableDescriptor> {
val data = java.util.ArrayList<RowEditableDescriptor>()
when (row) {
SimpleRow.NAME -> data.add(BottomSheetData(this.name, SimpleRow.NAME.resId, InputType.TYPE_CLASS_TEXT))
SimpleRow.NAME -> data.add(
RowEditableDescriptor(
this.name,
SimpleRow.NAME.resId,
InputType.TYPE_CLASS_TEXT
)
)
}
return data
}

@ -3,9 +3,9 @@ package net.pokeranalytics.android.model.realm
import android.text.InputType
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.model.ObjectSavable
import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetData
import net.pokeranalytics.android.model.interfaces.Savable
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.RowRepresentable
import net.pokeranalytics.android.ui.view.SimpleRow
@ -13,7 +13,7 @@ import net.pokeranalytics.android.ui.view.TransactionTypeRow
import java.util.*
open class TransactionType : RealmObject(), RowRepresentableDataSource, RowEditable, ObjectSavable, RowRepresentable {
open class TransactionType : RealmObject(), Savable, RowRepresentableDataSource, RowEditable, RowRepresentable {
@PrimaryKey
var id = UUID.randomUUID().toString()
@ -52,10 +52,16 @@ open class TransactionType : RealmObject(), RowRepresentableDataSource, RowEdita
}
}
override fun getBottomSheetData(row: RowRepresentable): ArrayList<BottomSheetData> {
val data = java.util.ArrayList<BottomSheetData>()
override fun rowEditableDescriptors(row: RowRepresentable): ArrayList<RowEditableDescriptor> {
val data = java.util.ArrayList<RowEditableDescriptor>()
when (row) {
SimpleRow.NAME -> data.add(BottomSheetData(this.name, SimpleRow.NAME.resId, InputType.TYPE_CLASS_TEXT))
SimpleRow.NAME -> data.add(
RowEditableDescriptor(
this.name,
SimpleRow.NAME.resId,
InputType.TYPE_CLASS_TEXT
)
)
}
return data
}

@ -1,58 +0,0 @@
package net.pokeranalytics.android.ui.adapter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import io.realm.RealmResults
import kotlinx.android.synthetic.main.row_history_session.view.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.realm.Session
import timber.log.Timber
class HistoryAdapter(private var sessions: RealmResults<Session>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
companion object {
const val ROW_SESSION: Int = 100
const val ROW_TOURNAMENT: Int = 101
const val ROW_HAND: Int = 102
const val ROW_TRANSACTION: Int = 103
}
var onClickOnSession: ((position: Int, session: Session) -> Unit)? = null
inner class RowSessionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(session: Session?) {
session?.let {
itemView.sessionRow.setData(session)
itemView.sessionRow.setOnClickListener {
onClickOnSession?.invoke(adapterPosition, session)
}
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
when (viewType) {
ROW_SESSION -> return RowSessionViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.row_history_session, parent, false))
else -> throw IllegalStateException("Need to implement type $viewType in HistoryAdapter")
}
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
when (getItemViewType(position)) {
ROW_SESSION -> (holder as HistoryAdapter.RowSessionViewHolder).bind(sessions.get(position))
}
}
override fun getItemCount(): Int {
return sessions.size
}
override fun getItemViewType(position: Int): Int {
return ROW_SESSION
}
}

@ -1,51 +0,0 @@
package net.pokeranalytics.android.ui.adapter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.row_bottom_sheet_grid_title.view.*
import net.pokeranalytics.android.R
class LimitTypesAdapter(private var tableSizes: ArrayList<String>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
companion object {
const val ROW_LIMIT: Int = 100
}
var onClickOnItem: ((position: Int) -> Unit)? = null
inner class CellSessionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(tableSize: String) {
itemView.title.text = tableSize
itemView.container.setOnClickListener {
onClickOnItem?.invoke(adapterPosition)
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
when (viewType) {
ROW_LIMIT -> return CellSessionViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.row_bottom_sheet_title, parent, false))
else -> throw IllegalStateException("Need to implement type $viewType in HistoryAdapter")
}
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
when (getItemViewType(position)) {
ROW_LIMIT -> (holder as LimitTypesAdapter.CellSessionViewHolder).bind(tableSizes[position])
}
}
override fun getItemCount(): Int {
return tableSizes.size
}
override fun getItemViewType(position: Int): Int {
return ROW_LIMIT
}
}

@ -1,4 +1,4 @@
package net.pokeranalytics.android.ui.adapter.components
package net.pokeranalytics.android.ui.adapter
import android.view.View
import android.view.ViewGroup
@ -91,8 +91,8 @@ interface DisplayableDelegate {
* @param delegate the delegate, notified of UI actions
*/
class RowRepresentableAdapter(
var dataSource: RowRepresentableDataSource,
var delegate: RowRepresentableDelegate? = null
var dataSource: RowRepresentableDataSource,
var delegate: RowRepresentableDelegate? = null
) :
RecyclerView.Adapter<RecyclerView.ViewHolder>() {

@ -1,50 +0,0 @@
package net.pokeranalytics.android.ui.adapter
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.row_bottom_sheet_grid_title.view.*
import net.pokeranalytics.android.R
class TableSizeGridAdapter(private var tableSizes: ArrayList<String>) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
companion object {
const val ROW_TABLE_SIZE: Int = 100
}
var onClickOnItem: ((position: Int) -> Unit)? = null
inner class CellSessionViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(tableSize: String) {
itemView.title.text = tableSize
itemView.container.setOnClickListener {
onClickOnItem?.invoke(adapterPosition)
}
}
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
when (viewType) {
ROW_TABLE_SIZE -> return CellSessionViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.row_bottom_sheet_grid_title, parent, false))
else -> throw IllegalStateException("Need to implement type $viewType in HistoryAdapter")
}
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
when (getItemViewType(position)) {
ROW_TABLE_SIZE -> (holder as TableSizeGridAdapter.CellSessionViewHolder).bind(tableSizes[position])
}
}
override fun getItemCount(): Int {
return tableSizes.size
}
override fun getItemViewType(position: Int): Int {
return ROW_TABLE_SIZE
}
}

@ -1,71 +0,0 @@
package net.pokeranalytics.android.ui.adapter.components
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.widget.AppCompatTextView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.recyclerview.widget.RecyclerView
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.view.RowViewType
enum class LiveDataViewType {
DATA,
BOTTOM_SHEET_DATA
}
interface LiveDataDataSource {
val title: String
}
interface LiveDataDelegate {
fun data(position: Int) : LiveDataDataSource
fun onRowSelected(position: Int)
fun size() : Int
}
class LiveDataAdapter(var adapterDelegate: LiveDataDelegate, var liveDataViewType: LiveDataViewType? = LiveDataViewType.DATA) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
inner class DataViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(row: LiveDataDataSource, listener: View.OnClickListener) {
when(liveDataViewType) {
LiveDataViewType.DATA -> {
itemView.findViewById<AppCompatTextView>(R.id.rowTitle_title).text = row.title
itemView.findViewById<ConstraintLayout>(R.id.rowTitle_container).setOnClickListener(listener)
}
LiveDataViewType.BOTTOM_SHEET_DATA -> {
itemView.findViewById<AppCompatTextView>(R.id.title).text = row.title
itemView.findViewById<ConstraintLayout>(R.id.container).setOnClickListener(listener)
}
}
}
}
override fun getItemViewType(position: Int): Int {
return RowViewType.TITLE.ordinal
}
override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
val layoutToInflate = when(liveDataViewType) {
LiveDataViewType.DATA -> {
R.layout.row_title
}
LiveDataViewType.BOTTOM_SHEET_DATA -> {
R.layout.row_bottom_sheet_title
}
else -> R.layout.row_title
}
return DataViewHolder(LayoutInflater.from(parent.context).inflate(layoutToInflate, parent, false))
}
override fun getItemCount(): Int {
return adapterDelegate.size()
}
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val listener = View.OnClickListener {
adapterDelegate.onRowSelected(position)
}
(holder as DataViewHolder).bind(this.adapterDelegate.data(position), listener)
}
}

@ -5,21 +5,23 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.ObjectChangeSet
import io.realm.Realm
import io.realm.RealmResults
import kotlinx.android.synthetic.main.fragment_data_list.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.ObjectSavable
import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.ui.activity.EditableDataActivity
import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.ui.view.SettingRow
import timber.log.Timber
class DataListFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, RowRepresentableDelegate{
class DataListFragment : PokerAnalyticsFragment(), RowRepresentableDataSource,
RowRepresentableDelegate {
private lateinit var dataType: SettingRow
@ -53,7 +55,7 @@ class DataListFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, R
override fun onIndexSelected(position: Int) {
this.dataType.relatedResultsRepresentable?.let {
EditableDataActivity.newInstance(requireContext(), it.ordinal, (this.items[position] as ObjectSavable).uniqueIdentifier())
EditableDataActivity.newInstance(requireContext(), it.ordinal, (this.items[position] as Savable).uniqueIdentifier())
}
}

@ -10,9 +10,11 @@ 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.LiveData
import net.pokeranalytics.android.model.ObjectSavable
import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetDelegate
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetFragment
@ -54,7 +56,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate,
}
override fun onRowSelected(row: RowRepresentable) {
BottomSheetFragment.create(fragmentManager, row, this, (this.item as RowEditable).getBottomSheetData(row))
BottomSheetFragment.create(fragmentManager, row, this, (this.item as RowEditable).rowEditableDescriptors(row))
}
override fun clickOnAdd(row: RowRepresentable) {
@ -110,7 +112,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate,
* Save data
*/
private fun saveData() {
if ((this.item as ObjectSavable).isValidForSave()) {
if ((this.item as Savable).isValidForSave()) {
this.getRealm().executeTransaction {
it.copyToRealmOrUpdate(this.item)
}
@ -138,7 +140,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 ObjectSavable))
this.liveDataType.deleteData(it, (this.item as Savable))
}
} else {
Toast.makeText(requireContext(), "isNotManaged", Toast.LENGTH_SHORT).show()
@ -164,7 +166,10 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate,
this.appBar.toolbar.title = "New ${this.liveDataType.name.toLowerCase().capitalize()}"
}
this.item = this.liveDataType.updateOrCreate(this.getRealm(), primaryKey)
this.rowRepresentableAdapter = RowRepresentableAdapter((this.item as RowRepresentableDataSource), this)
this.rowRepresentableAdapter = RowRepresentableAdapter(
(this.item as RowRepresentableDataSource),
this
)
this.recyclerView.adapter = rowRepresentableAdapter
}
}

@ -11,17 +11,18 @@ import io.realm.Sort
import io.realm.kotlin.where
import kotlinx.android.synthetic.main.fragment_history.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.ObjectSavable
import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.activity.SessionActivity
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDelegate
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
class HistoryFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, RowRepresentableDelegate {
class HistoryFragment : PokerAnalyticsFragment(), RowRepresentableDataSource,
RowRepresentableDelegate {
companion object {
fun newInstance(): HistoryFragment {
@ -109,6 +110,6 @@ class HistoryFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, Ro
}
override fun onRowSelected(row: RowRepresentable) {
SessionActivity.newInstance(requireContext(), sessionId = (row as ObjectSavable).uniqueIdentifier())
SessionActivity.newInstance(requireContext(), sessionId = (row as Savable).uniqueIdentifier())
}
}

@ -16,8 +16,8 @@ import net.pokeranalytics.android.model.extensions.getState
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.activity.EditableDataActivity
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDelegate
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.fragment.components.DateTimePickerManager
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetDelegate
@ -67,7 +67,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott
override fun onRowSelected(row: RowRepresentable) {
val data = currentSession.getBottomSheetData(row)
val data = currentSession.rowEditableDescriptors(row)
when (row) {
SessionRow.START_DATE -> DateTimePickerManager.create(
requireContext(),

@ -8,12 +8,15 @@ import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.fragment_settings.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.activity.DataListActivity
import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.SettingRow
class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, RowRepresentableDelegate {
class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource,
RowRepresentableDelegate {
companion object {
@ -57,8 +60,8 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, R
val viewManager = LinearLayoutManager(requireContext())
settingsAdapterRow = RowRepresentableAdapter(
this, this
)
this, this
)
recyclerView.apply {
setHasFixedSize(true)

@ -8,8 +8,8 @@ import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.fragment_settings.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.Stat
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment

@ -1,11 +0,0 @@
package net.pokeranalytics.android.ui.fragment.components.bottomsheet
import android.text.InputType
import io.realm.RealmResults
class BottomSheetData(
var defaultValue: Any? = null,
var hint: Int? = null,
var inputType: Int? = InputType.TYPE_CLASS_TEXT,
var data: RealmResults<*>? = null
)

@ -9,6 +9,7 @@ import androidx.fragment.app.FragmentManager
import com.google.android.material.bottomsheet.BottomSheetDialogFragment
import kotlinx.android.synthetic.main.fragment_bottom_sheet.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.view.RowEditableDescriptor
import net.pokeranalytics.android.ui.view.RowRepresentable
enum class BottomSheetType {
@ -28,20 +29,19 @@ interface BottomSheetDelegate {
fun setValue(value: Any?, row: RowRepresentable)
}
open class BottomSheetFragment : BottomSheetDialogFragment() {
lateinit var row: RowRepresentable
lateinit var bottomSheetDelegate: BottomSheetDelegate
private var data: ArrayList<BottomSheetData> = ArrayList()
private var data: ArrayList<RowEditableDescriptor> = ArrayList()
companion object {
fun create(
fragmentManager: FragmentManager?,
row: RowRepresentable,
bottomSheetDelegate: BottomSheetDelegate,
data: ArrayList<BottomSheetData>
data: ArrayList<RowEditableDescriptor>
): BottomSheetFragment {
val bottomSheetFragment = when (row.bottomSheetType) {
@ -112,7 +112,7 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
/**
* Return the data list
*/
fun getData(): ArrayList<BottomSheetData> {
fun getData(): ArrayList<RowEditableDescriptor> {
return data
}

@ -8,11 +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.ui.adapter.components.*
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
class BottomSheetListFragment : BottomSheetFragment(), RowRepresentableDataSource, RowRepresentableDelegate {
class BottomSheetListFragment : BottomSheetFragment(), RowRepresentableDataSource,
RowRepresentableDelegate {
private var realmData: RealmResults<*>? = null
private lateinit var dataAdapter: RowRepresentableAdapter

@ -9,15 +9,18 @@ import io.realm.RealmResults
import kotlinx.android.synthetic.main.bottom_sheet_game_list.*
import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDelegate
import net.pokeranalytics.android.model.Limit
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
import timber.log.Timber
class BottomSheetListGameFragment : BottomSheetFragment(), RowRepresentableDataSource, RowRepresentableDelegate {
class BottomSheetListGameFragment : BottomSheetFragment(),
RowRepresentableDataSource,
RowRepresentableDelegate {
private var realmData: RealmResults<*>? = null
private lateinit var dataAdapter: RowRepresentableAdapter
@ -95,23 +98,19 @@ class BottomSheetListGameFragment : BottomSheetFragment(), RowRepresentableDataS
values.add(0, null)
values.add(1, null)
val limits = ArrayList<String>()
limits.addAll(resources.getStringArray(R.array.limit_short_name))
chipGroup.removeAllViews()
for ((index, limit) in limits.withIndex()) {
Limit.values().forEach {
val chip = Chip(requireContext())
chip.text = limit
chip.id = index
chip.text = it.shortName
chip.id = it.ordinal
chipGroup.addView(chip)
}
chipGroup.setOnCheckedChangeListener { chipGroup, i ->
chipGroup.setOnCheckedChangeListener { _, i ->
Timber.d("Chip selected: $i")
values[0] = i
}
val viewManager2 = LinearLayoutManager(requireContext())
dataAdapter = RowRepresentableAdapter(this, this)

@ -1,50 +1,22 @@
package net.pokeranalytics.android.ui.fragment.components.bottomsheet
import android.content.Context
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import androidx.recyclerview.widget.GridLayoutManager
import kotlinx.android.synthetic.main.bottom_sheet_grid.*
import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.model.TableSize
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.view.GridSpacingItemDecoration
import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.util.px
class TableSize(var numberOfPlayer:Int): RowRepresentable {
companion object {
val all = Array(8, init =
{ index -> TableSize(index+2)})
}
override val resId: Int?
get() {
return if (this.numberOfPlayer == 2) {
R.string.heads_up
} else {
R.string.max
}
}
override fun localizedTitle(context: Context): String {
this.resId?.let {
return if (this.numberOfPlayer == 2) {
context.getString(it)
} else {
"$this.numberOfPlayer$context.getString(it)"
}
}
return super.localizedTitle(context)
}
override val viewType: Int
get() = RowViewType.TITLE_GRID.ordinal
}
class BottomSheetTableSizeGridFragment : BottomSheetFragment(), RowRepresentableDataSource, RowRepresentableDelegate {
class BottomSheetTableSizeGridFragment : BottomSheetFragment(),
RowRepresentableDataSource,
RowRepresentableDelegate {
private lateinit var dataAdapter: RowRepresentableAdapter
private var defaultSize: Int? = null

@ -1,8 +1,30 @@
package net.pokeranalytics.android.ui.view
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetData
import android.text.InputType
import io.realm.RealmResults
/**
* An interface to describe how an object can be editable and to handle the update of the object
*/
interface RowEditable {
fun getBottomSheetData(row: RowRepresentable): ArrayList<BottomSheetData>
/**
* A list of [RowEditableDescriptor] object specifying the way the edition will be handled
*/
fun rowEditableDescriptors(row: RowRepresentable): ArrayList<RowEditableDescriptor>
/**
* a method to handle the modification of the object.
* Through [RowRepresentable] the object is able to update the right variable with the new value.
*/
fun updateValue(value: Any?, row: RowRepresentable)
}
}
/**
* An container class to describe the way an field of an object will be edited
*/
class RowEditableDescriptor(
var defaultValue: Any? = null,
var hint: Int? = null,
var inputType: Int? = InputType.TYPE_CLASS_TEXT,
var data: RealmResults<*>? = null
)

@ -30,11 +30,15 @@ interface Localizable {
}
/**
* An interface extending Displayable to add a way to represent an object as a String
*/
interface RowRepresentable : Displayable {
fun getDisplayName(): String {
return "UNKNOWN NAME"
}
}
/**
* An interface used so that enums values can be represented visually
* as rows in RecyclerViews

@ -14,8 +14,7 @@ import kotlinx.android.synthetic.main.row_title_value.view.*
import kotlinx.android.synthetic.main.row_title_value_action.view.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.adapter.TableSizeGridAdapter
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
/**
* An interface used to factor the configuration of RecyclerView.ViewHolder

Loading…
Cancel
Save