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

# Conflicts:
#	app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
dev_raz_wip
Aurelien Hubert 7 years ago
commit bd82713b4a
  1. 19
      app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt
  2. 21
      app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt
  3. 22
      app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt
  4. 2
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  5. 21
      app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt
  6. 21
      app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt
  7. 8
      app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DataListAdapter.kt
  8. 88
      app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt
  9. 9
      app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt
  10. 11
      app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt
  11. 3
      app/src/main/res/layout/fragment_data_list.xml

@ -38,11 +38,28 @@ open class Bankroll(name: String = "") : RealmObject(), DynamicRowDelegate, Disp
// @todo rate management
override var title: String = this.name
override val title: String get() = this.id
override val primaryKey: String get() = this.id
override fun adapterRows(): ArrayList<DynamicRowInterface> {
val rows = ArrayList<DynamicRowInterface>()
rows.addAll(BankrollRow.values())
return rows
}
override fun stringForRow(row: DynamicRowInterface): String {
return when (row) {
BankrollRow.NAME -> this.id
BankrollRow.LIVE -> if (this.live) "live" else "online"
BankrollRow.CURRENCY -> this.currency?.code?: ""
else -> return super.stringForRow(row)
}
}
override fun boolForRow(row: DynamicRowInterface): Boolean {
when (row) {
BankrollRow.LIVE -> return true
else -> return super.boolForRow(row)
}
}
}

@ -2,10 +2,7 @@ package net.pokeranalytics.android.model.realm
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.ui.adapter.components.BankrollRow
import net.pokeranalytics.android.ui.adapter.components.DisplayableDataSource
import net.pokeranalytics.android.ui.adapter.components.DynamicRowDelegate
import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
import net.pokeranalytics.android.ui.adapter.components.*
import java.util.*
open class Game : RealmObject(), DynamicRowDelegate, DisplayableDataSource {
@ -19,14 +16,20 @@ open class Game : RealmObject(), DynamicRowDelegate, DisplayableDataSource {
// A shorter name for the game
var shortName: String? = null
override var title: String = ""
get() {
return name
}
override val title: String get() = this.id
override val primaryKey: String get() = this.id
override fun adapterRows(): ArrayList<DynamicRowInterface> {
val rows = ArrayList<DynamicRowInterface>()
rows.addAll(BankrollRow.values())
rows.addAll(GameRow.values())
return rows
}
override fun stringForRow(row: DynamicRowInterface): String {
return when (row) {
GameRow.NAME -> this.id
else -> return super.stringForRow(row)
}
}
}

@ -2,10 +2,14 @@ package net.pokeranalytics.android.model.realm
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.ui.adapter.components.DisplayableDataSource
import net.pokeranalytics.android.ui.adapter.components.DynamicRowDelegate
import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
import net.pokeranalytics.android.ui.adapter.components.LocationRow
import java.util.*
open class Location : RealmObject() {
open class Location : RealmObject(), DynamicRowDelegate, DisplayableDataSource {
@PrimaryKey
var id = UUID.randomUUID().toString()
@ -19,4 +23,20 @@ open class Location : RealmObject() {
// the latitude of the location
var latitude: Double? = null
override val title: String get() = this.id
override val primaryKey: String get() = this.id
override fun adapterRows(): ArrayList<DynamicRowInterface> {
val rows = ArrayList<DynamicRowInterface>()
rows.addAll(LocationRow.values())
return rows
}
override fun stringForRow(row: DynamicRowInterface): String {
return when (row) {
LocationRow.NAME -> this.id
else -> return super.stringForRow(row)
}
}
}

@ -126,7 +126,6 @@ open class Session : RealmObject(), SessionInterface, DynamicRowDelegate, Displa
return 0.0
}
override fun adapterRows(): ArrayList<DynamicRowInterface> {
val rows = ArrayList<DynamicRowInterface>()
rows.addAll(SessionRow.values())
@ -147,6 +146,7 @@ open class Session : RealmObject(), SessionInterface, DynamicRowDelegate, Displa
}
override var title: String = "Change that: $creationDate"
override val primaryKey: String get() = this.id
override fun getBottomSheetData(row: DynamicRowInterface): ArrayList<BottomSheetData> {

@ -2,9 +2,13 @@ package net.pokeranalytics.android.model.realm
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.ui.adapter.components.DisplayableDataSource
import net.pokeranalytics.android.ui.adapter.components.DynamicRowDelegate
import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
import net.pokeranalytics.android.ui.adapter.components.TournamentFeatureRow
import java.util.*
open class TournamentFeature : RealmObject() {
open class TournamentFeature : RealmObject(), DynamicRowDelegate, DisplayableDataSource {
@PrimaryKey
var id = UUID.randomUUID().toString()
@ -12,4 +16,19 @@ open class TournamentFeature : RealmObject() {
// The name of the feature
var name: String = ""
override val title: String get() = this.id
override val primaryKey: String get() = this.id
override fun adapterRows(): ArrayList<DynamicRowInterface> {
val rows = ArrayList<DynamicRowInterface>()
rows.addAll(TournamentFeatureRow.values())
return rows
}
override fun stringForRow(row: DynamicRowInterface): String {
return when (row) {
TournamentFeatureRow.NAME -> this.id
else -> return super.stringForRow(row)
}
}
}

@ -2,10 +2,14 @@ package net.pokeranalytics.android.model.realm
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.ui.adapter.components.DisplayableDataSource
import net.pokeranalytics.android.ui.adapter.components.DynamicRowDelegate
import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
import net.pokeranalytics.android.ui.adapter.components.TransactionTypeRow
import java.util.*
open class TransactionType : RealmObject() {
open class TransactionType : RealmObject(), DynamicRowDelegate, DisplayableDataSource {
@PrimaryKey
var id = UUID.randomUUID().toString()
@ -22,6 +26,21 @@ open class TransactionType : RealmObject() {
// The predefined kind, if necessary, like: Withdrawal, deposit, or tips
var kind: Int? = null
override val title: String get() = this.id
override val primaryKey: String get() = this.id
override fun adapterRows(): ArrayList<DynamicRowInterface> {
val rows = ArrayList<DynamicRowInterface>()
rows.addAll(TransactionTypeRow.values())
return rows
}
override fun stringForRow(row: DynamicRowInterface): String {
return when (row) {
TransactionTypeRow.NAME -> this.id
else -> return super.stringForRow(row)
}
}
}
enum class TransactionKind {

@ -6,6 +6,7 @@ import android.view.ViewGroup
import androidx.appcompat.widget.AppCompatTextView
import androidx.constraintlayout.widget.ConstraintLayout
import androidx.recyclerview.widget.RecyclerView
import kotlinx.android.synthetic.main.fragment_data_list.view.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.fragment.components.BottomSheetData
@ -16,7 +17,8 @@ interface DisplayableDelegate {
}
interface DisplayableDataSource {
var title: String
val title: String
val primaryKey: String
}
interface EditableDataSource {
@ -27,9 +29,6 @@ class DataListAdapter(var delegate: DisplayableDelegate, var layout: Int? = null
inner class DataViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
fun bind(row: DisplayableDataSource, listener: View.OnClickListener) {
//itemView.title.text = row.title
//itemView.container.setOnClickListener(listener)
try {
itemView.findViewById<AppCompatTextView>(R.id.title).text = row.title
itemView.findViewById<ConstraintLayout>(R.id.container).setOnClickListener(listener)
@ -59,5 +58,4 @@ class DataListAdapter(var delegate: DisplayableDelegate, var layout: Int? = null
}
(holder as DataViewHolder).bind(this.delegate.data(position), listener)
}
}

@ -88,6 +88,94 @@ enum class BankrollRow(val resId: Int) : DynamicRowInterface {
}
}
enum class GameRow(val resId: Int) : DynamicRowInterface {
NAME(R.string.name);
override fun localizedTitle(context: Context): String {
return context.getString(this.resId)
}
override var viewType: Int = RowViewType.HEADER.ordinal
get() {
return when (this) {
NAME -> RowViewType.TITLE_VALUE.ordinal
}
}
override var bottomSheetType: BottomSheetType = BottomSheetType.NONE
get() {
return when (this) {
NAME -> BottomSheetType.EDIT_TEXT
}
}
}
enum class LocationRow(val resId: Int) : DynamicRowInterface {
NAME(R.string.name);
override fun localizedTitle(context: Context): String {
return context.getString(this.resId)
}
override var viewType: Int = RowViewType.HEADER.ordinal
get() {
return when (this) {
NAME -> RowViewType.TITLE_VALUE.ordinal
}
}
override var bottomSheetType: BottomSheetType = BottomSheetType.NONE
get() {
return when (this) {
NAME -> BottomSheetType.EDIT_TEXT
}
}
}
enum class TransactionTypeRow(val resId: Int) : DynamicRowInterface {
NAME(R.string.name);
override fun localizedTitle(context: Context): String {
return context.getString(this.resId)
}
override var viewType: Int = RowViewType.HEADER.ordinal
get() {
return when (this) {
NAME -> RowViewType.TITLE_VALUE.ordinal
}
}
override var bottomSheetType: BottomSheetType = BottomSheetType.NONE
get() {
return when (this) {
NAME -> BottomSheetType.EDIT_TEXT
}
}
}
enum class TournamentFeatureRow(val resId: Int) : DynamicRowInterface {
NAME(R.string.name);
override fun localizedTitle(context: Context): String {
return context.getString(this.resId)
}
override var viewType: Int = RowViewType.HEADER.ordinal
get() {
return when (this) {
NAME -> RowViewType.TITLE_VALUE.ordinal
}
}
override var bottomSheetType: BottomSheetType = BottomSheetType.NONE
get() {
return when (this) {
NAME -> BottomSheetType.EDIT_TEXT
}
}
}
enum class SettingRow(val resId: Int) : DynamicRowInterface, DynamicValues {
BANKROLL(R.string.bankroll),
GAME(R.string.game),

@ -6,12 +6,14 @@ import android.view.View
import android.view.ViewGroup
import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.Realm
import io.realm.RealmChangeListener
import io.realm.RealmResults
import kotlinx.android.synthetic.main.fragment_data_list.*
import net.pokeranalytics.android.R
import net.pokeranalytics.android.ui.activity.EditableDataActivity
import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import timber.log.Timber
class DataListFragment : PokerAnalyticsFragment(), DisplayableDelegate {
@ -34,7 +36,7 @@ class DataListFragment : PokerAnalyticsFragment(), DisplayableDelegate {
}
override fun onRowSelected(position: Int) {
EditableDataActivity.newInstance(requireContext(), this.dataType.ordinal, null)
EditableDataActivity.newInstance(requireContext(), this.dataType.ordinal, this.data(position).primaryKey)
}
override fun size(): Int {
@ -70,7 +72,12 @@ class DataListFragment : PokerAnalyticsFragment(), DisplayableDelegate {
*/
fun setData(dataType: Int) {
this.dataType = SettingRow.values()[dataType]
this.title.text = this.dataType.name.toLowerCase().capitalize()
val realm = Realm.getDefaultInstance()
this.items = this.dataType.items(realm)
this.items.addChangeListener { newItems ->
Timber.d("newItems: ${newItems.size}")
this.recyclerView.adapter?.notifyDataSetChanged()
}
}
}

@ -10,6 +10,7 @@ import io.realm.Realm
import io.realm.RealmObject
import kotlinx.android.synthetic.main.bottom_sheet_bankroll.*
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.realm.Bankroll
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
@ -77,13 +78,17 @@ class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback, Botto
}
}
realm.beginTransaction()
proxyItem?.let {
this.item = realm.copyFromRealm(it)
this.appBar.toolbar.title = "Update ${this.dataType.name.toLowerCase().capitalize()}"
} ?: run {
this.item = realm.createObject(Bankroll::class.java, UUID.randomUUID().toString())
}
realm.beginTransaction()
val t = realm.createObject(this.dataType.clazz(), UUID.randomUUID().toString())
realm.commitTransaction()
this.item = realm.copyFromRealm(t)
this.appBar.toolbar.title = "New ${this.dataType.name.toLowerCase().capitalize()}"
}
val dynamicListAdapter = DynamicListAdapter((this.item as DynamicRowDelegate), this)
this.recyclerView.adapter = dynamicListAdapter

@ -12,7 +12,7 @@
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:text="Data List"
tools:text="Data List"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
@ -38,4 +38,5 @@
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
Loading…
Cancel
Save