diff --git a/app/src/main/java/net/pokeranalytics/android/model/TableSize.kt b/app/src/main/java/net/pokeranalytics/android/model/TableSize.kt index f4a4d55e..70be5836 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/TableSize.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/TableSize.kt @@ -7,8 +7,11 @@ import net.pokeranalytics.android.ui.view.RowViewType class TableSize(var numberOfPlayer: Int) : RowRepresentable { companion object { - val all = Array(9, init = - { index -> TableSize(index + 2) }) + val all : List + get() { + return Array(9, init = + { index -> TableSize(index + 2) }).toList() + } } override val resId: Int? diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt index 904f8fbd..cb9d1e23 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt @@ -2,10 +2,9 @@ package net.pokeranalytics.android.model.realm import io.realm.RealmList import io.realm.RealmObject -import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey 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.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.rowrepresentable.BankrollRow @@ -14,7 +13,7 @@ import java.util.* import kotlin.collections.ArrayList open class Bankroll(name: String = "") : RealmObject(), Savable, - RowRepresentableDataSource, RowRepresentable { + StaticRowRepresentableDataSource, RowRepresentable { companion object { fun newInstance() : Bankroll { @@ -50,7 +49,7 @@ open class Bankroll(name: String = "") : RealmObject(), Savable, // Row Representable Datasource - override fun adapterRows(): ArrayList { + override fun adapterRows(): List? { val rows = ArrayList() rows.add(SimpleRow.NAME) rows.addAll(BankrollRow.values()) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt index 42478cff..7ea10b75 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt @@ -1,18 +1,17 @@ package net.pokeranalytics.android.model.realm -import android.text.InputType import io.realm.RealmObject -import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey 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.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.rowrepresentable.GameRow import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import java.util.* +import kotlin.collections.ArrayList -open class Game : RealmObject(), Savable, RowRepresentableDataSource, +open class Game : RealmObject(), Savable, StaticRowRepresentableDataSource, RowRepresentable { @PrimaryKey @@ -32,7 +31,7 @@ open class Game : RealmObject(), Savable, RowRepresentableDataSource, return this.id } - override fun adapterRows(): ArrayList { + override fun adapterRows(): List? { val rows = ArrayList() rows.add(SimpleRow.NAME) rows.addAll(GameRow.values()) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt index d82185e1..c721b3e9 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt @@ -3,15 +3,16 @@ package net.pokeranalytics.android.model.realm import io.realm.RealmObject import io.realm.annotations.PrimaryKey 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.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.rowrepresentable.LocationRow import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import java.util.* +import kotlin.collections.ArrayList -open class Location : RealmObject(), Savable, RowRepresentableDataSource, RowRepresentable { +open class Location : RealmObject(), Savable, StaticRowRepresentableDataSource, RowRepresentable { @PrimaryKey var id = UUID.randomUUID().toString() @@ -33,7 +34,7 @@ open class Location : RealmObject(), Savable, RowRepresentableDataSource, RowRep return this.id } - override fun adapterRows(): ArrayList { + override fun adapterRows(): List? { val rows = ArrayList() rows.add(SimpleRow.NAME) rows.addAll(LocationRow.values()) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index 7ad31c24..a2c1d21a 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -14,7 +14,7 @@ import net.pokeranalytics.android.model.TableSize import net.pokeranalytics.android.model.extensions.SessionState import net.pokeranalytics.android.model.extensions.getState 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.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowViewType @@ -25,7 +25,7 @@ import java.util.* import kotlin.collections.ArrayList open class Session : RealmObject(), SessionInterface, Savable, - RowRepresentableDataSource, RowRepresentable { + StaticRowRepresentableDataSource, RowRepresentable { enum class Type { CASH_GAME, @@ -308,7 +308,7 @@ open class Session : RealmObject(), SessionInterface, Savable, return "Session ${this.creationDate}" } - override fun adapterRows(): ArrayList { + override fun adapterRows(): List? { val rows = ArrayList() // Headers diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt index 0f8976ce..929fe42b 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt @@ -2,17 +2,17 @@ package net.pokeranalytics.android.model.realm import android.text.InputType import io.realm.RealmObject -import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey 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.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import net.pokeranalytics.android.ui.view.rowrepresentable.TournamentFeatureRow import java.util.* +import kotlin.collections.ArrayList -open class TournamentFeature : RealmObject(), Savable, RowRepresentableDataSource, RowRepresentable { +open class TournamentFeature : RealmObject(), Savable, StaticRowRepresentableDataSource, RowRepresentable { @PrimaryKey var id = UUID.randomUUID().toString() @@ -28,7 +28,7 @@ open class TournamentFeature : RealmObject(), Savable, RowRepresentableDataSourc return this.id } - override fun adapterRows(): ArrayList { + override fun adapterRows(): List? { val rows = ArrayList() rows.add(SimpleRow.NAME) rows.addAll(TournamentFeatureRow.values()) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentType.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentType.kt index fbf73592..c10cba32 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentType.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentType.kt @@ -9,7 +9,7 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import java.util.* -open class TournamentType : RealmObject(), Savable, RowRepresentableDataSource, RowRepresentable { +open class TournamentType : RealmObject(), Savable, RowRepresentable { @PrimaryKey var id = UUID.randomUUID().toString() diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt index 6e3df58f..70d8b686 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt @@ -4,15 +4,16 @@ import android.text.InputType import io.realm.RealmObject import io.realm.annotations.PrimaryKey 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.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import net.pokeranalytics.android.ui.view.rowrepresentable.TransactionTypeRow import java.util.* +import kotlin.collections.ArrayList -open class TransactionType : RealmObject(), Savable, RowRepresentableDataSource, RowRepresentable { +open class TransactionType : RealmObject(), Savable, StaticRowRepresentableDataSource, RowRepresentable { @PrimaryKey var id = UUID.randomUUID().toString() @@ -37,7 +38,7 @@ open class TransactionType : RealmObject(), Savable, RowRepresentableDataSource, return this.id } - override fun adapterRows(): ArrayList { + override fun adapterRows(): List? { val rows = ArrayList() rows.add(SimpleRow.NAME) rows.addAll(TransactionTypeRow.values()) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt index c3a14d29..5a580ac2 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt @@ -37,8 +37,9 @@ class RowRepresentableAdapter( } override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { - val rowRepresentable = this.dataSource.rowRepresentableForPosition(position) - (holder as BindableHolder).bind(position, rowRepresentable, this) + this.dataSource.rowRepresentableForPosition(position)?.let { + (holder as BindableHolder).bind(position, it, this) + } } /** diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableDataSource.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableDataSource.kt index 2500af71..e2a338a9 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableDataSource.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableDataSource.kt @@ -4,37 +4,64 @@ import android.content.Context import net.pokeranalytics.android.calculus.TextFormat import net.pokeranalytics.android.ui.view.RowRepresentable 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? - fun rowRepresentableForPosition(position:Int): RowRepresentable { - if (this.numberOfRows() > position) { - return this.adapterRows()[position] - } else { - throw IllegalStateException("Need to implement Data Source") + fun rowRepresentableForPosition(position:Int): RowRepresentable? + fun numberOfRows(): Int + fun viewTypeForPosition(position:Int): Int + fun indexForRow(row: RowRepresentable): Int +} + +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 { - return this.adapterRows().size + override fun numberOfRows(): Int { + this.adapterRows()?.let { + return it.size + } + throw IllegalStateException("Need to implement Data Source") } - fun viewTypeForPosition(position:Int): Int { - return this.rowRepresentableForPosition(position).viewType + override fun viewTypeForPosition(position:Int): Int { + this.rowRepresentableForPosition(position)?.let { + return it.viewType + } + throw IllegalStateException("Need to implement Data Source") } - fun indexForRow(row: RowRepresentable): Int { - return this.adapterRows().indexOf(row) + override fun indexForRow(row: RowRepresentable): Int { + this.adapterRows()?.let { + return it.indexOf(row) + } + throw IllegalStateException("Need to implement Data Source") } +} - /** - * A list of [RowRepresentableEditDescriptor] object specifying the way the edition will be handled - */ - fun editDescriptors(row: RowRepresentable): ArrayList { - return ArrayList() +interface LiveRowRepresentableDataSource: RowRepresentableDataSource { + override fun adapterRows(): List? { + return null } } +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 * @@ -46,11 +73,9 @@ interface RowRepresentableDataSource : DisplayableDataSource { */ interface DisplayableDataSource { - /** - * Returns a list of rows - */ - fun adapterRows(): ArrayList { - return ArrayList() + + fun contentDescriptorForRow(row: RowRepresentable): DisplayDescriptor? { + return null } /** @@ -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 { + return ArrayList() + } +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt index bc2bdb2b..0b440b7f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt @@ -12,8 +12,8 @@ import net.pokeranalytics.android.R import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.ui.activity.EditableDataActivity 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.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment 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 -class DataListFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, +class DataListFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource, RowRepresentableDelegate { private lateinit var dataType: SettingRow @@ -38,7 +38,7 @@ class DataListFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, initUI() } - override fun rowRepresentableForPosition(position: Int): RowRepresentable { + override fun rowRepresentableForPosition(position: Int): RowRepresentable? { return this.items[position] as RowRepresentable } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt index 2f8f8e71..9612f94c 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt @@ -16,8 +16,8 @@ import net.pokeranalytics.android.R 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.LiveRowRepresentableDataSource 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.HistorySessionDiffCallback @@ -30,7 +30,7 @@ import net.pokeranalytics.android.util.isSameMonth import net.pokeranalytics.android.util.longDate import java.util.* -class HistoryFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, RowRepresentableDelegate { +class HistoryFragment : PokerAnalyticsFragment(), LiveRowRepresentableDataSource, RowRepresentableDelegate { companion object { 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] } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt index 9433711d..be317bb2 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt @@ -216,15 +216,17 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott */ private fun updateAdapterUI(scrollToTop: Boolean) { - val diffResult = DiffUtil.calculateDiff(RowRepresentableDiffCallback(currentSession.adapterRows(), oldRows)) - sessionAdapter.updateRows(diffResult) + currentSession.adapterRows()?.let { + val diffResult = DiffUtil.calculateDiff(RowRepresentableDiffCallback(it, oldRows)) + sessionAdapter.updateRows(diffResult) - oldRows.clear() - oldRows.addAll(currentSession.adapterRows()) + oldRows.clear() + oldRows.addAll(it) - if (scrollToTop) { - recyclerView.smoothScrollToPosition(0) + if (scrollToTop) { + recyclerView.smoothScrollToPosition(0) + } } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt index 21f6a02d..5d4e951c 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt @@ -9,15 +9,12 @@ 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.RowRepresentableAdapter -import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource -import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate +import net.pokeranalytics.android.ui.adapter.* import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.rowrepresentable.SettingRow -class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, - RowRepresentableDelegate { +class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, StaticRowRepresentableDataSource { companion object { @@ -44,7 +41,7 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, initData() } - override fun adapterRows(): ArrayList { + override fun adapterRows(): List? { val rows = ArrayList() rows.addAll(SettingRow.values()) return rows diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt index 8655dbce..3509ae71 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt @@ -12,15 +12,17 @@ import net.pokeranalytics.android.R import net.pokeranalytics.android.calculus.* import net.pokeranalytics.android.model.StatRepresentable 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.RowRepresentableDataSource +import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource 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.rowrepresentable.HeaderRowRepresentable import net.pokeranalytics.android.util.NULL_TEXT -class StatsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource { +class StatsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource { private var rowRepresentables: ArrayList = ArrayList() @@ -52,10 +54,23 @@ class StatsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource { // Row Representable DS - override fun adapterRows(): ArrayList { + override fun adapterRows(): List? { 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 { if (row is StatRepresentable) { context?.let { context -> diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt index 484a04de..cb57771d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt @@ -8,13 +8,13 @@ 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.LiveRowRepresentableDataSource 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, +class BottomSheetListFragment : BottomSheetFragment(), LiveRowRepresentableDataSource, RowRepresentableDelegate { private var realmData: RealmResults<*>? = null @@ -31,18 +31,18 @@ class BottomSheetListFragment : BottomSheetFragment(), RowRepresentableDataSourc dataAdapter.notifyDataSetChanged() } - override fun rowRepresentableForPosition(position: Int): RowRepresentable { + override fun rowRepresentableForPosition(position: Int): RowRepresentable? { realmData?.let { return it[position] as RowRepresentable } - return super.rowRepresentableForPosition(position) + return null } override fun numberOfRows(): Int { realmData?.let { return it.size } - return super.numberOfRows() + throw IllegalStateException("Need to implement Data Source") } override fun viewTypeForPosition(position: Int): Int { @@ -53,7 +53,7 @@ class BottomSheetListFragment : BottomSheetFragment(), RowRepresentableDataSourc realmData?.let { return it.indexOf(row) } - return super.indexForRow(row) + throw IllegalStateException("Need to implement Data Source") } override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt index 4392d1c4..01ba66a4 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt @@ -10,14 +10,14 @@ 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.model.Limit +import net.pokeranalytics.android.ui.adapter.LiveRowRepresentableDataSource 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 BottomSheetListGameFragment : BottomSheetFragment(), RowRepresentableDataSource, RowRepresentableDelegate { +class BottomSheetListGameFragment : BottomSheetFragment(), LiveRowRepresentableDataSource, RowRepresentableDelegate { private var limit: Int = -1 private var realmData: RealmResults<*>? = null @@ -39,18 +39,18 @@ class BottomSheetListGameFragment : BottomSheetFragment(), RowRepresentableDataS return values } - override fun rowRepresentableForPosition(position: Int): RowRepresentable { + override fun rowRepresentableForPosition(position: Int): RowRepresentable? { realmData?.let { return it[position] as RowRepresentable } - return super.rowRepresentableForPosition(position) + throw IllegalStateException("Need to implement Data Source") } override fun numberOfRows(): Int { realmData?.let { return it.size } - return super.numberOfRows() + return 0 } override fun viewTypeForPosition(position: Int): Int { @@ -61,7 +61,7 @@ class BottomSheetListGameFragment : BottomSheetFragment(), RowRepresentableDataS realmData?.let { return it.indexOf(row) } - return super.indexForRow(row) + throw IllegalStateException("Need to implement Data Source") } override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt index d756c4c8..0635780c 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt @@ -8,14 +8,14 @@ import kotlinx.android.synthetic.main.bottom_sheet_grid.* import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* 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.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.view.GridSpacingItemDecoration import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.util.px class BottomSheetTableSizeGridFragment : BottomSheetFragment(), - RowRepresentableDataSource, + StaticRowRepresentableDataSource, RowRepresentableDelegate { private lateinit var dataAdapter: RowRepresentableAdapter @@ -72,16 +72,8 @@ class BottomSheetTableSizeGridFragment : BottomSheetFragment(), } } - override fun rowRepresentableForPosition(position: Int): RowRepresentable { - return TableSize.all[position] - } - - override fun indexForRow(row: RowRepresentable): Int { - return TableSize.all.indexOf(row) - } - - override fun numberOfRows(): Int { - return TableSize.all.size + override fun adapterRows(): List? { + return TableSize.all } override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt index 7ffa5c03..a7c42e13 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt @@ -220,10 +220,9 @@ enum class RowViewType { BindableHolder { override fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) { itemView.rowStatsTitleValue_title.text = row.localizedTitle(itemView.context) - adapter.dataSource?.let { - val format = it.statFormatForRow(row) - itemView.rowStatsTitleValue_value.text = format.text - itemView.rowStatsTitleValue_value.setTextColor(format.getColor(itemView.context)) + adapter.dataSource.contentDescriptorForRow(row)?.textFormat?.let { + itemView.rowStatsTitleValue_value.text = it.text + itemView.rowStatsTitleValue_value.setTextColor(it.getColor(itemView.context)) } val listener = View.OnClickListener { adapter.delegate?.onRowSelected(position, row)