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

dev_raz_wip
Laurent 7 years ago
commit 1403ba7667
  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. 28
      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.RealmObject
import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.ui.adapter.components.DisplayableData
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 net.pokeranalytics.android.ui.adapter.components.DisplayableDataSource
import java.util.*
open class Bankroll(name: String = "") : RealmObject(), DisplayableData {
open class Bankroll(name: String = "") : RealmObject(), DisplayableDataSource {
@PrimaryKey
var id = UUID.randomUUID().toString()

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

@ -1,7 +1,12 @@
package net.pokeranalytics.android.ui.adapter.components
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.model.realm.*
import net.pokeranalytics.android.ui.fragment.components.BottomSheetType
@ -11,6 +16,12 @@ interface DynamicRowInterface {
var bottomSheetType: BottomSheetType
}
interface DynamicValues {
fun items(realm: Realm): RealmResults<*>
var sortingFieldName: String
var sorting: Sort
}
class SectionRow(stringRes: Int) : DynamicRowInterface {
var stringRes: Int = stringRes
@ -62,7 +73,7 @@ enum class BankrollRow(val resId: Int) : DynamicRowInterface {
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),
GAME(R.string.game),
LOCATION(R.string.location),
@ -75,4 +86,17 @@ enum class DataObjectRowType(val resId: Int) : DynamicRowInterface {
override var viewType: Int = RowViewType.TITLE.ordinal
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 io.realm.Realm
import io.realm.RealmObject
import io.realm.RealmResults
import io.realm.Sort
import kotlinx.android.synthetic.main.fragment_new_session.*
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.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? {
return inflater.inflate(R.layout.fragment_data_list, container, false)
@ -30,8 +31,8 @@ class DataListFragment : PokerAnalyticsFragment(), DataRowDelegate, DataRowCallb
initUI()
}
override fun data(position: Int): DisplayableData {
return (realmObjects[position] as DisplayableData)
override fun data(position: Int): DisplayableDataSource {
return (items[position] as DisplayableDataSource)
}
override fun onRowSelected(position: Int) {
@ -39,7 +40,7 @@ class DataListFragment : PokerAnalyticsFragment(), DataRowDelegate, DataRowCallb
}
override fun size(): Int {
return realmObjects.size
return items.size
}
private fun initData() {
@ -51,7 +52,7 @@ class DataListFragment : PokerAnalyticsFragment(), DataRowDelegate, DataRowCallb
private fun initUI() {
val viewManager = LinearLayoutManager(requireContext())
val dataListAdapter = DataListAdapter(this, this)
val dataListAdapter = DataListAdapter(this)
recyclerView.apply {
setHasFixedSize(true)
@ -65,15 +66,8 @@ class DataListFragment : PokerAnalyticsFragment(), DataRowDelegate, DataRowCallb
* Set fragment data
*/
fun setData(dataType: Int) {
this.dataType = DataObjectRowType.values()[dataType]
this.dataType = SettingRow.values()[dataType]
val realm = Realm.getDefaultInstance()
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)
})
this.items = this.dataType.items(realm)
}
}

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

Loading…
Cancel
Save