refactoring

feature/top10
Razmig Sarkissian 7 years ago
parent 6850060c87
commit fc540a4e3d
  1. 7
      app/src/main/java/net/pokeranalytics/android/model/TableSize.kt
  2. 7
      app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt
  3. 9
      app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt
  4. 7
      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. 8
      app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt
  7. 2
      app/src/main/java/net/pokeranalytics/android/model/realm/TournamentType.kt
  8. 7
      app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt
  9. 5
      app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt
  10. 78
      app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableDataSource.kt
  11. 6
      app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt
  12. 6
      app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt
  13. 14
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt
  14. 9
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
  15. 19
      app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt
  16. 12
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt
  17. 12
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt
  18. 16
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt
  19. 7
      app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt

@ -7,8 +7,11 @@ import net.pokeranalytics.android.ui.view.RowViewType
class TableSize(var numberOfPlayer: Int) : RowRepresentable { class TableSize(var numberOfPlayer: Int) : RowRepresentable {
companion object { companion object {
val all = Array(9, init = val all : List<TableSize>
{ index -> TableSize(index + 2) }) get() {
return Array(9, init =
{ index -> TableSize(index + 2) }).toList()
}
} }
override val resId: Int? override val resId: Int?

@ -2,10 +2,9 @@ package net.pokeranalytics.android.model.realm
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.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor
import net.pokeranalytics.android.ui.view.rowrepresentable.BankrollRow import net.pokeranalytics.android.ui.view.rowrepresentable.BankrollRow
@ -14,7 +13,7 @@ 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, RowRepresentable { StaticRowRepresentableDataSource, RowRepresentable {
companion object { companion object {
fun newInstance() : Bankroll { fun newInstance() : Bankroll {
@ -50,7 +49,7 @@ open class Bankroll(name: String = "") : RealmObject(), Savable,
// Row Representable Datasource // Row Representable Datasource
override fun adapterRows(): ArrayList<RowRepresentable> { override fun adapterRows(): List<out 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())

@ -1,18 +1,17 @@
package net.pokeranalytics.android.model.realm package net.pokeranalytics.android.model.realm
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.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor
import net.pokeranalytics.android.ui.view.rowrepresentable.GameRow import net.pokeranalytics.android.ui.view.rowrepresentable.GameRow
import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow
import java.util.* import java.util.*
import kotlin.collections.ArrayList
open class Game : RealmObject(), Savable, RowRepresentableDataSource, open class Game : RealmObject(), Savable, StaticRowRepresentableDataSource,
RowRepresentable { RowRepresentable {
@PrimaryKey @PrimaryKey
@ -32,7 +31,7 @@ open class Game : RealmObject(), Savable, RowRepresentableDataSource,
return this.id return this.id
} }
override fun adapterRows(): ArrayList<RowRepresentable> { override fun adapterRows(): List<out RowRepresentable>? {
val rows = ArrayList<RowRepresentable>() val rows = ArrayList<RowRepresentable>()
rows.add(SimpleRow.NAME) rows.add(SimpleRow.NAME)
rows.addAll(GameRow.values()) rows.addAll(GameRow.values())

@ -3,15 +3,16 @@ package net.pokeranalytics.android.model.realm
import io.realm.RealmObject import io.realm.RealmObject
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.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor
import net.pokeranalytics.android.ui.view.rowrepresentable.LocationRow import net.pokeranalytics.android.ui.view.rowrepresentable.LocationRow
import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow
import java.util.* import java.util.*
import kotlin.collections.ArrayList
open class Location : RealmObject(), Savable, RowRepresentableDataSource, RowRepresentable { open class Location : RealmObject(), Savable, StaticRowRepresentableDataSource, RowRepresentable {
@PrimaryKey @PrimaryKey
var id = UUID.randomUUID().toString() var id = UUID.randomUUID().toString()
@ -33,7 +34,7 @@ open class Location : RealmObject(), Savable, RowRepresentableDataSource, RowRep
return this.id return this.id
} }
override fun adapterRows(): ArrayList<RowRepresentable> { override fun adapterRows(): List<out RowRepresentable>? {
val rows = ArrayList<RowRepresentable>() val rows = ArrayList<RowRepresentable>()
rows.add(SimpleRow.NAME) rows.add(SimpleRow.NAME)
rows.addAll(LocationRow.values()) rows.addAll(LocationRow.values())

@ -14,7 +14,7 @@ import net.pokeranalytics.android.model.TableSize
import net.pokeranalytics.android.model.extensions.SessionState 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.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor
import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
@ -25,7 +25,7 @@ import java.util.*
import kotlin.collections.ArrayList import kotlin.collections.ArrayList
open class Session : RealmObject(), SessionInterface, Savable, open class Session : RealmObject(), SessionInterface, Savable,
RowRepresentableDataSource, RowRepresentable { StaticRowRepresentableDataSource, RowRepresentable {
enum class Type { enum class Type {
CASH_GAME, CASH_GAME,
@ -308,7 +308,7 @@ open class Session : RealmObject(), SessionInterface, Savable,
return "Session ${this.creationDate}" return "Session ${this.creationDate}"
} }
override fun adapterRows(): ArrayList<RowRepresentable> { override fun adapterRows(): List<out RowRepresentable>? {
val rows = ArrayList<RowRepresentable>() val rows = ArrayList<RowRepresentable>()
// Headers // Headers

@ -2,17 +2,17 @@ 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.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor
import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow
import net.pokeranalytics.android.ui.view.rowrepresentable.TournamentFeatureRow import net.pokeranalytics.android.ui.view.rowrepresentable.TournamentFeatureRow
import java.util.* import java.util.*
import kotlin.collections.ArrayList
open class TournamentFeature : RealmObject(), Savable, RowRepresentableDataSource, RowRepresentable { open class TournamentFeature : RealmObject(), Savable, StaticRowRepresentableDataSource, RowRepresentable {
@PrimaryKey @PrimaryKey
var id = UUID.randomUUID().toString() var id = UUID.randomUUID().toString()
@ -28,7 +28,7 @@ open class TournamentFeature : RealmObject(), Savable, RowRepresentableDataSourc
return this.id return this.id
} }
override fun adapterRows(): ArrayList<RowRepresentable> { override fun adapterRows(): List<out 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())

@ -9,7 +9,7 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow
import java.util.* import java.util.*
open class TournamentType : RealmObject(), Savable, RowRepresentableDataSource, RowRepresentable { open class TournamentType : RealmObject(), Savable, RowRepresentable {
@PrimaryKey @PrimaryKey
var id = UUID.randomUUID().toString() var id = UUID.randomUUID().toString()

@ -4,15 +4,16 @@ import android.text.InputType
import io.realm.RealmObject import io.realm.RealmObject
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.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor
import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow
import net.pokeranalytics.android.ui.view.rowrepresentable.TransactionTypeRow import net.pokeranalytics.android.ui.view.rowrepresentable.TransactionTypeRow
import java.util.* import java.util.*
import kotlin.collections.ArrayList
open class TransactionType : RealmObject(), Savable, RowRepresentableDataSource, RowRepresentable { open class TransactionType : RealmObject(), Savable, StaticRowRepresentableDataSource, RowRepresentable {
@PrimaryKey @PrimaryKey
var id = UUID.randomUUID().toString() var id = UUID.randomUUID().toString()
@ -37,7 +38,7 @@ open class TransactionType : RealmObject(), Savable, RowRepresentableDataSource,
return this.id return this.id
} }
override fun adapterRows(): ArrayList<RowRepresentable> { override fun adapterRows(): List<out 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())

@ -37,8 +37,9 @@ class RowRepresentableAdapter(
} }
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val rowRepresentable = this.dataSource.rowRepresentableForPosition(position) this.dataSource.rowRepresentableForPosition(position)?.let {
(holder as BindableHolder).bind(position, rowRepresentable, this) (holder as BindableHolder).bind(position, it, this)
}
} }
/** /**

@ -4,37 +4,64 @@ import android.content.Context
import net.pokeranalytics.android.calculus.TextFormat import net.pokeranalytics.android.calculus.TextFormat
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor
import org.w3c.dom.Text
interface RowRepresentableDataSource : DisplayableDataSource { interface RowRepresentableDataSource: EditableDataSource, DisplayableDataSource {
/**
* Returns a list of rows
*/
fun adapterRows(): List<out RowRepresentable>?
fun rowRepresentableForPosition(position:Int): RowRepresentable { fun rowRepresentableForPosition(position:Int): RowRepresentable?
if (this.numberOfRows() > position) { fun numberOfRows(): Int
return this.adapterRows()[position] fun viewTypeForPosition(position:Int): Int
} else { fun indexForRow(row: RowRepresentable): Int
throw IllegalStateException("Need to implement Data Source") }
interface StaticRowRepresentableDataSource: RowRepresentableDataSource {
override fun rowRepresentableForPosition(position:Int): RowRepresentable? {
this.adapterRows()?.let {
return it[position]
} }
throw IllegalStateException("Need to implement Data Source")
} }
fun numberOfRows(): Int { override fun numberOfRows(): Int {
return this.adapterRows().size this.adapterRows()?.let {
return it.size
}
throw IllegalStateException("Need to implement Data Source")
} }
fun viewTypeForPosition(position:Int): Int { override fun viewTypeForPosition(position:Int): Int {
return this.rowRepresentableForPosition(position).viewType this.rowRepresentableForPosition(position)?.let {
return it.viewType
}
throw IllegalStateException("Need to implement Data Source")
} }
fun indexForRow(row: RowRepresentable): Int { override fun indexForRow(row: RowRepresentable): Int {
return this.adapterRows().indexOf(row) this.adapterRows()?.let {
return it.indexOf(row)
}
throw IllegalStateException("Need to implement Data Source")
} }
}
/** interface LiveRowRepresentableDataSource: RowRepresentableDataSource {
* A list of [RowRepresentableEditDescriptor] object specifying the way the edition will be handled override fun adapterRows(): List<out RowRepresentable>? {
*/ return null
fun editDescriptors(row: RowRepresentable): ArrayList<RowRepresentableEditDescriptor> {
return ArrayList()
} }
} }
class DisplayDescriptor(
var boolValue: Boolean? = null,
var stringValue: String? = null,
var textFormat: TextFormat? = null,
var actionIcon: Int? = null,
var context: Context? = null) {
}
/** /**
* An interface used to provide RowRepresentableAdapter content and value in the form of rows * An interface used to provide RowRepresentableAdapter content and value in the form of rows
* *
@ -46,11 +73,9 @@ interface RowRepresentableDataSource : DisplayableDataSource {
*/ */
interface DisplayableDataSource { interface DisplayableDataSource {
/**
* Returns a list of rows fun contentDescriptorForRow(row: RowRepresentable): DisplayDescriptor? {
*/ return null
fun adapterRows(): ArrayList<RowRepresentable> {
return ArrayList()
} }
/** /**
@ -89,3 +114,12 @@ interface DisplayableDataSource {
} }
} }
interface EditableDataSource {
/**
* A list of [RowRepresentableEditDescriptor] object specifying the way the edition will be handled
*/
fun editDescriptors(row: RowRepresentable): ArrayList<RowRepresentableEditDescriptor> {
return ArrayList()
}
}

@ -12,8 +12,8 @@ import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.ui.activity.EditableDataActivity import net.pokeranalytics.android.ui.activity.EditableDataActivity
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.adapter.LiveRowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter 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.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
@ -21,7 +21,7 @@ import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.ui.view.rowrepresentable.SettingRow import net.pokeranalytics.android.ui.view.rowrepresentable.SettingRow
class DataListFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, class DataListFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource,
RowRepresentableDelegate { RowRepresentableDelegate {
private lateinit var dataType: SettingRow private lateinit var dataType: SettingRow
@ -38,7 +38,7 @@ class DataListFragment : PokerAnalyticsFragment(), RowRepresentableDataSource,
initUI() initUI()
} }
override fun rowRepresentableForPosition(position: Int): RowRepresentable { override fun rowRepresentableForPosition(position: Int): RowRepresentable? {
return this.items[position] as RowRepresentable return this.items[position] as RowRepresentable
} }

@ -16,8 +16,8 @@ import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.model.interfaces.Savable
import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.activity.SessionActivity import net.pokeranalytics.android.ui.activity.SessionActivity
import net.pokeranalytics.android.ui.adapter.LiveRowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter 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.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.view.HistorySessionDiffCallback import net.pokeranalytics.android.ui.view.HistorySessionDiffCallback
@ -30,7 +30,7 @@ import net.pokeranalytics.android.util.isSameMonth
import net.pokeranalytics.android.util.longDate import net.pokeranalytics.android.util.longDate
import java.util.* import java.util.*
class HistoryFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, RowRepresentableDelegate { class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource, RowRepresentableDelegate {
companion object { companion object {
fun newInstance(): HistoryFragment { fun newInstance(): HistoryFragment {
@ -148,7 +148,7 @@ class HistoryFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, Ro
} }
override fun rowRepresentableForPosition(position: Int): RowRepresentable { override fun rowRepresentableForPosition(position: Int): RowRepresentable? {
return this.rows[position] return this.rows[position]
} }

@ -216,15 +216,17 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott
*/ */
private fun updateAdapterUI(scrollToTop: Boolean) { private fun updateAdapterUI(scrollToTop: Boolean) {
val diffResult = DiffUtil.calculateDiff(RowRepresentableDiffCallback(currentSession.adapterRows(), oldRows)) currentSession.adapterRows()?.let {
sessionAdapter.updateRows(diffResult) val diffResult = DiffUtil.calculateDiff(RowRepresentableDiffCallback(it, oldRows))
sessionAdapter.updateRows(diffResult)
oldRows.clear() oldRows.clear()
oldRows.addAll(currentSession.adapterRows()) oldRows.addAll(it)
if (scrollToTop) { if (scrollToTop) {
recyclerView.smoothScrollToPosition(0) recyclerView.smoothScrollToPosition(0)
}
} }
} }

@ -9,15 +9,12 @@ import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.fragment_settings.* import kotlinx.android.synthetic.main.fragment_settings.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.activity.DataListActivity import net.pokeranalytics.android.ui.activity.DataListActivity
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.*
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.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.rowrepresentable.SettingRow import net.pokeranalytics.android.ui.view.rowrepresentable.SettingRow
class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, StaticRowRepresentableDataSource {
RowRepresentableDelegate {
companion object { companion object {
@ -44,7 +41,7 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource,
initData() initData()
} }
override fun adapterRows(): ArrayList<RowRepresentable> { override fun adapterRows(): List<out RowRepresentable>? {
val rows = ArrayList<RowRepresentable>() val rows = ArrayList<RowRepresentable>()
rows.addAll(SettingRow.values()) rows.addAll(SettingRow.values())
return rows return rows

@ -12,15 +12,17 @@ import net.pokeranalytics.android.R
import net.pokeranalytics.android.calculus.* import net.pokeranalytics.android.calculus.*
import net.pokeranalytics.android.model.StatRepresentable import net.pokeranalytics.android.model.StatRepresentable
import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Session
import net.pokeranalytics.android.ui.adapter.DisplayDescriptor
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter
import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
import net.pokeranalytics.android.ui.view.rowrepresentable.HeaderRowRepresentable import net.pokeranalytics.android.ui.view.rowrepresentable.HeaderRowRepresentable
import net.pokeranalytics.android.util.NULL_TEXT import net.pokeranalytics.android.util.NULL_TEXT
class StatsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource { class StatsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource {
private var rowRepresentables: ArrayList<RowRepresentable> = ArrayList<RowRepresentable>() private var rowRepresentables: ArrayList<RowRepresentable> = ArrayList<RowRepresentable>()
@ -52,10 +54,23 @@ class StatsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource {
// Row Representable DS // Row Representable DS
override fun adapterRows(): ArrayList<RowRepresentable> { override fun adapterRows(): List<out RowRepresentable>? {
return this.rowRepresentables return this.rowRepresentables
} }
override fun contentDescriptorForRow(row: RowRepresentable): DisplayDescriptor? {
var dc = DisplayDescriptor()
dc.textFormat = TextFormat(NULL_TEXT)
if (row is StatRepresentable) {
context?.let { context ->
row.computedStat?.let {
dc.textFormat = it.format(context)
}
}
}
return dc
}
override fun statFormatForRow(row: RowRepresentable): TextFormat { override fun statFormatForRow(row: RowRepresentable): TextFormat {
if (row is StatRepresentable) { if (row is StatRepresentable) {
context?.let { context -> context?.let { context ->

@ -8,13 +8,13 @@ import io.realm.RealmResults
import kotlinx.android.synthetic.main.bottom_sheet_list.* import kotlinx.android.synthetic.main.bottom_sheet_list.*
import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.adapter.LiveRowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter 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.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
class BottomSheetListFragment : BottomSheetFragment(), RowRepresentableDataSource, class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentableDataSource,
RowRepresentableDelegate { RowRepresentableDelegate {
private var realmData: RealmResults<*>? = null private var realmData: RealmResults<*>? = null
@ -31,18 +31,18 @@ class BottomSheetListFragment : BottomSheetFragment(), RowRepresentableDataSourc
dataAdapter.notifyDataSetChanged() dataAdapter.notifyDataSetChanged()
} }
override fun rowRepresentableForPosition(position: Int): RowRepresentable { override fun rowRepresentableForPosition(position: Int): RowRepresentable? {
realmData?.let { realmData?.let {
return it[position] as RowRepresentable return it[position] as RowRepresentable
} }
return super.rowRepresentableForPosition(position) return null
} }
override fun numberOfRows(): Int { override fun numberOfRows(): Int {
realmData?.let { realmData?.let {
return it.size return it.size
} }
return super.numberOfRows() throw IllegalStateException("Need to implement Data Source")
} }
override fun viewTypeForPosition(position: Int): Int { override fun viewTypeForPosition(position: Int): Int {
@ -53,7 +53,7 @@ class BottomSheetListFragment : BottomSheetFragment(), RowRepresentableDataSourc
realmData?.let { realmData?.let {
return it.indexOf(row) return it.indexOf(row)
} }
return super.indexForRow(row) throw IllegalStateException("Need to implement Data Source")
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) {

@ -10,14 +10,14 @@ import kotlinx.android.synthetic.main.bottom_sheet_game_list.*
import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.Limit import net.pokeranalytics.android.model.Limit
import net.pokeranalytics.android.ui.adapter.LiveRowRepresentableDataSource
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter 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.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.RowViewType
class BottomSheetListGameFragment : BottomSheetFragment(), RowRepresentableDataSource, RowRepresentableDelegate { class BottomSheetListGameFragment : BottomSheetFragment(), LiveRowRepresentableDataSource, RowRepresentableDelegate {
private var limit: Int = -1 private var limit: Int = -1
private var realmData: RealmResults<*>? = null private var realmData: RealmResults<*>? = null
@ -39,18 +39,18 @@ class BottomSheetListGameFragment : BottomSheetFragment(), RowRepresentableDataS
return values return values
} }
override fun rowRepresentableForPosition(position: Int): RowRepresentable { override fun rowRepresentableForPosition(position: Int): RowRepresentable? {
realmData?.let { realmData?.let {
return it[position] as RowRepresentable return it[position] as RowRepresentable
} }
return super.rowRepresentableForPosition(position) throw IllegalStateException("Need to implement Data Source")
} }
override fun numberOfRows(): Int { override fun numberOfRows(): Int {
realmData?.let { realmData?.let {
return it.size return it.size
} }
return super.numberOfRows() return 0
} }
override fun viewTypeForPosition(position: Int): Int { override fun viewTypeForPosition(position: Int): Int {
@ -61,7 +61,7 @@ class BottomSheetListGameFragment : BottomSheetFragment(), RowRepresentableDataS
realmData?.let { realmData?.let {
return it.indexOf(row) return it.indexOf(row)
} }
return super.indexForRow(row) throw IllegalStateException("Need to implement Data Source")
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) {

@ -8,14 +8,14 @@ import kotlinx.android.synthetic.main.bottom_sheet_grid.*
import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.*
import net.pokeranalytics.android.model.TableSize import net.pokeranalytics.android.model.TableSize
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter 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.adapter.RowRepresentableDelegate
import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource
import net.pokeranalytics.android.ui.view.GridSpacingItemDecoration import net.pokeranalytics.android.ui.view.GridSpacingItemDecoration
import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable
import net.pokeranalytics.android.util.px import net.pokeranalytics.android.util.px
class BottomSheetTableSizeGridFragment : BottomSheetFragment(), class BottomSheetTableSizeGridFragment : BottomSheetFragment(),
RowRepresentableDataSource, StaticRowRepresentableDataSource,
RowRepresentableDelegate { RowRepresentableDelegate {
private lateinit var dataAdapter: RowRepresentableAdapter private lateinit var dataAdapter: RowRepresentableAdapter
@ -72,16 +72,8 @@ class BottomSheetTableSizeGridFragment : BottomSheetFragment(),
} }
} }
override fun rowRepresentableForPosition(position: Int): RowRepresentable { override fun adapterRows(): List<out RowRepresentable>? {
return TableSize.all[position] return TableSize.all
}
override fun indexForRow(row: RowRepresentable): Int {
return TableSize.all.indexOf(row)
}
override fun numberOfRows(): Int {
return TableSize.all.size
} }
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) {

@ -220,10 +220,9 @@ enum class RowViewType {
BindableHolder { BindableHolder {
override fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) { override fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) {
itemView.rowStatsTitleValue_title.text = row.localizedTitle(itemView.context) itemView.rowStatsTitleValue_title.text = row.localizedTitle(itemView.context)
adapter.dataSource?.let { adapter.dataSource.contentDescriptorForRow(row)?.textFormat?.let {
val format = it.statFormatForRow(row) itemView.rowStatsTitleValue_value.text = it.text
itemView.rowStatsTitleValue_value.text = format.text itemView.rowStatsTitleValue_value.setTextColor(it.getColor(itemView.context))
itemView.rowStatsTitleValue_value.setTextColor(format.getColor(itemView.context))
} }
val listener = View.OnClickListener { val listener = View.OnClickListener {
adapter.delegate?.onRowSelected(position, row) adapter.delegate?.onRowSelected(position, row)

Loading…
Cancel
Save