clean up Settings and Data List

dev_raz_wip
Razmig Sarkissian 7 years ago
parent 2b82b7ec07
commit 6838cf59d3
  1. 7
      app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt
  2. 17
      app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DataListAdapter.kt
  3. 26
      app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt
  4. 26
      app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt
  5. 6
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt

@ -4,14 +4,11 @@ import android.content.Context
import io.realm.RealmList import io.realm.RealmList
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.annotations.PrimaryKey import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.ui.adapter.components.DisplayableData import net.pokeranalytics.android.ui.adapter.components.DisplayableDataSource
import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
import net.pokeranalytics.android.ui.adapter.components.RowViewType
import net.pokeranalytics.android.ui.fragment.components.BottomSheetType
import java.util.* import java.util.*
open class Bankroll(name: String = "") : RealmObject(), DisplayableData { open class Bankroll(name: String = "") : RealmObject(), DisplayableDataSource {
@PrimaryKey @PrimaryKey
var id = UUID.randomUUID().toString() var id = UUID.randomUUID().toString()

@ -7,23 +7,20 @@ import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.row_session.view.* import kotlinx.android.synthetic.main.row_session.view.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
interface DataRowDelegate { interface DisplayableDelegate {
fun data(position: Int) : DisplayableData fun data(position: Int) : DisplayableDataSource
fun size() : Int
}
interface DataRowCallback {
fun onRowSelected(position: Int) fun onRowSelected(position: Int)
fun size() : Int
} }
interface DisplayableData { interface DisplayableDataSource {
var title: String var title: String
} }
class DataListAdapter(var delegate: DataRowDelegate, var callBackDelegate: DataRowCallback? = null) : RecyclerView.Adapter<RecyclerView.ViewHolder>() { class DataListAdapter(var delegate: DisplayableDelegate) : RecyclerView.Adapter<RecyclerView.ViewHolder>() {
inner class DataViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { inner class DataViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(row: DisplayableData, listener: View.OnClickListener) { fun bind(row: DisplayableDataSource, listener: View.OnClickListener) {
itemView.title.text = row.title itemView.title.text = row.title
itemView.container.setOnClickListener(listener) itemView.container.setOnClickListener(listener)
} }
@ -43,7 +40,7 @@ class DataListAdapter(var delegate: DataRowDelegate, var callBackDelegate: DataR
override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
val listener = View.OnClickListener { val listener = View.OnClickListener {
callBackDelegate?.onRowSelected(position) delegate.onRowSelected(position)
} }
(holder as DataViewHolder).bind(this.delegate.data(position), listener) (holder as DataViewHolder).bind(this.delegate.data(position), listener)
} }

@ -1,7 +1,12 @@
package net.pokeranalytics.android.ui.adapter.components package net.pokeranalytics.android.ui.adapter.components
import android.content.Context import android.content.Context
import io.realm.Realm
import io.realm.RealmModel
import io.realm.RealmResults
import io.realm.Sort
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.realm.*
import net.pokeranalytics.android.ui.fragment.components.BottomSheetType import net.pokeranalytics.android.ui.fragment.components.BottomSheetType
@ -11,6 +16,12 @@ interface DynamicRowInterface {
var bottomSheetType: BottomSheetType var bottomSheetType: BottomSheetType
} }
interface DynamicValues {
fun items(realm: Realm): RealmResults<*>
var sortingFieldName: String
var sorting: Sort
}
class SectionRow(stringRes: Int) : DynamicRowInterface { class SectionRow(stringRes: Int) : DynamicRowInterface {
var stringRes: Int = stringRes var stringRes: Int = stringRes
@ -62,7 +73,7 @@ enum class BankrollRow(val resId: Int) : DynamicRowInterface {
override var bottomSheetType: BottomSheetType = BottomSheetType.NONE override var bottomSheetType: BottomSheetType = BottomSheetType.NONE
} }
enum class DataObjectRowType(val resId: Int) : DynamicRowInterface { enum class SettingRow(val resId: Int) : DynamicRowInterface, DynamicValues {
BANKROLL(R.string.bankroll), BANKROLL(R.string.bankroll),
GAME(R.string.game), GAME(R.string.game),
LOCATION(R.string.location), LOCATION(R.string.location),
@ -75,4 +86,17 @@ enum class DataObjectRowType(val resId: Int) : DynamicRowInterface {
override var viewType: Int = RowViewType.TITLE.ordinal override var viewType: Int = RowViewType.TITLE.ordinal
override var bottomSheetType: BottomSheetType = BottomSheetType.NONE override var bottomSheetType: BottomSheetType = BottomSheetType.NONE
override fun items(realm: Realm): RealmResults<*> {
return when (this) {
BANKROLL -> realm.where(Bankroll::class.java).findAll().sort(this.sortingFieldName, this.sorting)
GAME-> realm.where(Game::class.java).findAll().sort(this.sortingFieldName, this.sorting)
LOCATION -> realm.where(Location::class.java).findAll().sort(this.sortingFieldName, this.sorting)
TOURNAMENT_TYPE -> realm.where(TournamentFeature::class.java).findAll().sort(this.sortingFieldName, this.sorting)
TRANSACTION_TYPE -> realm.where(TransactionType::class.java).findAll().sort(this.sortingFieldName, this.sorting)
}
}
override var sortingFieldName: String = "name"
override var sorting: Sort = Sort.DESCENDING
} }

@ -7,6 +7,7 @@ import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.Realm import io.realm.Realm
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.RealmResults
import io.realm.Sort import io.realm.Sort
import kotlinx.android.synthetic.main.fragment_new_session.* import kotlinx.android.synthetic.main.fragment_new_session.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
@ -14,11 +15,11 @@ import net.pokeranalytics.android.model.realm.*
import net.pokeranalytics.android.ui.adapter.components.* import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.util.PokerAnalyticsFragment import net.pokeranalytics.android.util.PokerAnalyticsFragment
class DataListFragment : PokerAnalyticsFragment(), DataRowDelegate, DataRowCallback { class DataListFragment : PokerAnalyticsFragment(), DisplayableDelegate {
private lateinit var dataType: DataObjectRowType private lateinit var dataType: SettingRow
private lateinit var realmObjects: ArrayList<RealmObject> private lateinit var items: RealmResults<*>
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_data_list, container, false) return inflater.inflate(R.layout.fragment_data_list, container, false)
@ -30,8 +31,8 @@ class DataListFragment : PokerAnalyticsFragment(), DataRowDelegate, DataRowCallb
initUI() initUI()
} }
override fun data(position: Int): DisplayableData { override fun data(position: Int): DisplayableDataSource {
return (realmObjects[position] as DisplayableData) return (items[position] as DisplayableDataSource)
} }
override fun onRowSelected(position: Int) { override fun onRowSelected(position: Int) {
@ -39,7 +40,7 @@ class DataListFragment : PokerAnalyticsFragment(), DataRowDelegate, DataRowCallb
} }
override fun size(): Int { override fun size(): Int {
return realmObjects.size return items.size
} }
private fun initData() { private fun initData() {
@ -51,7 +52,7 @@ class DataListFragment : PokerAnalyticsFragment(), DataRowDelegate, DataRowCallb
private fun initUI() { private fun initUI() {
val viewManager = LinearLayoutManager(requireContext()) val viewManager = LinearLayoutManager(requireContext())
val dataListAdapter = DataListAdapter(this, this) val dataListAdapter = DataListAdapter(this)
recyclerView.apply { recyclerView.apply {
setHasFixedSize(true) setHasFixedSize(true)
@ -65,15 +66,8 @@ class DataListFragment : PokerAnalyticsFragment(), DataRowDelegate, DataRowCallb
* Set fragment data * Set fragment data
*/ */
fun setData(dataType: Int) { fun setData(dataType: Int) {
this.dataType = DataObjectRowType.values()[dataType] this.dataType = SettingRow.values()[dataType]
val realm = Realm.getDefaultInstance() val realm = Realm.getDefaultInstance()
this.items = this.dataType.items(realm)
realmObjects = ArrayList( when (DataObjectRowType.values()[dataType]) {
DataObjectRowType.BANKROLL -> realm.where(Bankroll::class.java).findAll().sort("name", Sort.DESCENDING)
DataObjectRowType.GAME-> realm.where(Game::class.java).findAll().sort("name", Sort.DESCENDING)
DataObjectRowType.LOCATION -> realm.where(Location::class.java).findAll().sort("name", Sort.DESCENDING)
DataObjectRowType.TOURNAMENT_TYPE -> realm.where(TournamentFeature::class.java).findAll().sort("name", Sort.DESCENDING)
DataObjectRowType.TRANSACTION_TYPE -> realm.where(TransactionType::class.java).findAll().sort("name", Sort.DESCENDING)
})
} }
} }

@ -4,12 +4,10 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager 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.activity.NewSessionActivity
import net.pokeranalytics.android.ui.adapter.components.* import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.util.PokerAnalyticsFragment import net.pokeranalytics.android.util.PokerAnalyticsFragment
@ -42,12 +40,12 @@ class SettingsFragment : PokerAnalyticsFragment(), DynamicRowDelegate, DynamicRo
override fun adapterRows(): ArrayList<DynamicRowInterface> { override fun adapterRows(): ArrayList<DynamicRowInterface> {
val rows = ArrayList<DynamicRowInterface>() val rows = ArrayList<DynamicRowInterface>()
rows.addAll(DataObjectRowType.values()) rows.addAll(SettingRow.values())
return rows return rows
} }
override fun onRowSelected(row: DynamicRowInterface) { override fun onRowSelected(row: DynamicRowInterface) {
DataListActivity.newInstance(requireContext(), (row as DataObjectRowType).ordinal) DataListActivity.newInstance(requireContext(), (row as SettingRow).ordinal)
} }
/** /**

Loading…
Cancel
Save