diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index df424857..dc02fbf9 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -21,7 +21,9 @@
-
+
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 b40bbf78..86ccd723 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,13 +2,25 @@ package net.pokeranalytics.android.model.realm
import io.realm.RealmList
import io.realm.RealmObject
+import io.realm.annotations.PrimaryKey
+import java.util.*
open class Bankroll(name: String = "") : RealmObject() {
- var live: Boolean = true
+ @PrimaryKey
+ var id = UUID.randomUUID().toString()
+
+ // the name of the bankroll
var name: String = name
+
+ // Indicates whether the bankroll is live or online
+ var live: Boolean = true
+
+ // The list of transactions of the bankroll
var transactions: RealmList = RealmList()
+
+ // The currency of the bankroll
var currency: Currency? = null
// @todo rate management
diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Currency.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Currency.kt
index 86dd44a8..5f3baf30 100644
--- a/app/src/main/java/net/pokeranalytics/android/model/realm/Currency.kt
+++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Currency.kt
@@ -1,11 +1,19 @@
package net.pokeranalytics.android.model.realm
import io.realm.RealmObject
+import io.realm.annotations.PrimaryKey
+import java.util.*
open class Currency : RealmObject() {
+ @PrimaryKey
+ var id = UUID.randomUUID().toString()
+
+ // The currency code of the currency, i.e. USD, EUR...
var code: String? = null
+
+ // The rate of the currency with the main currency
var rate: Double? = null
}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/CustomField.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/CustomField.kt
index a8fccb86..32361079 100644
--- a/app/src/main/java/net/pokeranalytics/android/model/realm/CustomField.kt
+++ b/app/src/main/java/net/pokeranalytics/android/model/realm/CustomField.kt
@@ -1,10 +1,19 @@
package net.pokeranalytics.android.model.realm
import io.realm.RealmObject
+import io.realm.annotations.PrimaryKey
+import java.util.*
open class CustomField : RealmObject() {
- // @todo
+
+ @PrimaryKey
+ var id = UUID.randomUUID().toString()
+
+ // The name of the currency field
var name: String = ""
+ // @todo
+
+
}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt
index 4ca7f437..26ed01d6 100644
--- a/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt
+++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Filter.kt
@@ -2,19 +2,24 @@ package net.pokeranalytics.android.model.realm
import io.realm.MutableRealmInteger
import io.realm.RealmObject
+import io.realm.annotations.PrimaryKey
+import java.util.*
+
//import net.pokeranalytics.android.FilterComponent
open class Filter : RealmObject() {
+ @PrimaryKey
+ var id = UUID.randomUUID().toString()
+
+ // the filter name
var name: String = ""
- // see https://realm.io/docs/java/latest/#counters
+ // the number of use of the filter,
+ // for MutableRealmInteger, see https://realm.io/docs/java/latest/#counters
val usageCount: MutableRealmInteger = MutableRealmInteger.valueOf(0)
-
-
-
// var components: List = listOf()
}
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 c480ca76..46b1285e 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,10 +1,18 @@
package net.pokeranalytics.android.model.realm
import io.realm.RealmObject
+import io.realm.annotations.PrimaryKey
+import java.util.*
open class Game : RealmObject() {
+ @PrimaryKey
+ var id = UUID.randomUUID().toString()
+
+ // The name of the game
var name: String = ""
+
+ // A shorter name for the game
var shortName: String? = null
}
diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/HandHistory.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/HandHistory.kt
index 70d8a676..c65264f9 100644
--- a/app/src/main/java/net/pokeranalytics/android/model/realm/HandHistory.kt
+++ b/app/src/main/java/net/pokeranalytics/android/model/realm/HandHistory.kt
@@ -1,11 +1,16 @@
package net.pokeranalytics.android.model.realm
import io.realm.RealmObject
+import io.realm.annotations.PrimaryKey
import java.util.*
open class HandHistory : RealmObject() {
- // @todo
+
+ @PrimaryKey
+ var id = UUID.randomUUID().toString()
+
+ // the date of the hand history
var date: Date = Date()
}
\ No newline at end of file
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 cdfc2c7f..e066b8f4 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
@@ -1,11 +1,22 @@
package net.pokeranalytics.android.model.realm
import io.realm.RealmObject
+import io.realm.annotations.PrimaryKey
+import java.util.*
open class Location : RealmObject() {
+
+ @PrimaryKey
+ var id = UUID.randomUUID().toString()
+
+ // The name of the location
var name: String = ""
+
+ // the longitude of the location
var longitude: Double? = null
+
+ // the latitude of the location
var latitude: Double? = null
}
diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Player.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Player.kt
index 0f8d019d..7323e151 100644
--- a/app/src/main/java/net/pokeranalytics/android/model/realm/Player.kt
+++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Player.kt
@@ -1,8 +1,15 @@
package net.pokeranalytics.android.model.realm
import io.realm.RealmObject
+import io.realm.annotations.PrimaryKey
+import java.util.*
open class Player : RealmObject() {
+
+ @PrimaryKey
+ var id = UUID.randomUUID().toString()
+
+ // The name of the player
var name: String = ""
}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Report.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Report.kt
index 6ed16ff3..abf711a9 100644
--- a/app/src/main/java/net/pokeranalytics/android/model/realm/Report.kt
+++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Report.kt
@@ -2,6 +2,8 @@ package net.pokeranalytics.android.model.realm
import io.realm.RealmList
import io.realm.RealmObject
+import io.realm.annotations.PrimaryKey
+import java.util.*
enum class ReportDisplay {
TABLE,
@@ -10,13 +12,22 @@ enum class ReportDisplay {
}
open class Report : RealmObject() {
+
+ @PrimaryKey
+ var id = UUID.randomUUID().toString()
+
+ // The name of the report
var name: String = ""
+
+ // The type of display of the report
var display: Int = ReportDisplay.TABLE.ordinal
// @todo define the configuration options
// var comparators: List = listOf()
// var stats: List = listOf()
+
+ // The filters associated with the report
var filters: RealmList = RealmList()
}
diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Result.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Result.kt
index 75726fa1..f0fa0f89 100644
--- a/app/src/main/java/net/pokeranalytics/android/model/realm/Result.kt
+++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Result.kt
@@ -2,19 +2,56 @@ package net.pokeranalytics.android.model.realm
import io.realm.RealmList
import io.realm.RealmObject
+import io.realm.annotations.PrimaryKey
+import java.util.*
open class Result : RealmObject() {
+
+ @PrimaryKey
+ var id = UUID.randomUUID().toString()
+
+ // the user associated to this session result
+ var player: Player? = null
+
+ // The buyin amount
var buyin: Double? = null
+ set(value) {
+ field = value
+ this.computeNet()
+ }
+
+ // the cashed out amount
var cashout: Double? = null
+ set(value) {
+ field = value
+ this.computeNet()
+ }
+
+ // The net result
var netResult: Double? = null
+ set(value) {
+ field = value
+ this.computeNet()
+ }
+
+ // The net (readonly)
var net: Double? = null
+ // The transactions associated with the Result, impacting the result
var transactions: RealmList = RealmList()
+ set(value) {
+ field = value
+ this.computeNet()
+ }
- // @todo tips?
+ // The tournament final position, if applicable
+ var tournamentFinalPosition: Int? = null
- var finalPosition: Int? = null
+ // Computes the Net
+ fun computeNet() {
+// this.net = ...
+ }
-// var player: Player? = null
+ // @todo tips?
}
\ No newline at end of file
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 a211e62b..0536b0ad 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
@@ -15,46 +15,71 @@ import java.util.UUID.randomUUID
open class Session(comment: String = "") : RealmObject() {
-
- // A comment written by the user
-
- // The date of creation of the session
-
-
@PrimaryKey
var id = UUID.randomUUID().toString()
+ // The time frame of the Session, i.e. the start & end date
+ var timeFrame: TimeFrame? = null
+
+ // The time frame group, which can contain multiple sessions
+ var timeFrameGroup: TimeFrameGroup? = null
+
+ // the date of creation of the app
var creationDate: Date = Date()
+
+ // The limit type: NL, PL...
var limit: Int? = null
+
+ // The number of tables played at the same time
var numberOfTables: Int = 1
+
+ // The number of players at the table
var tableSize: Int? = null
+ // The game played during the Session
var game: Game? = null
+
+ // The bankroll hosting the results
var bankroll: Bankroll? = null
+ // The hands list associated with the Session
var hands: RealmList = RealmList()
- var timeFrame: TimeFrame? = null
- var timeFrameGroup: TimeFrameGroup? = null
-
+ // the location where the session is played
var location: Location? = null
+ // The result of the main user
var result: Result? = null
+ // The list of opponents who participated to the session
var opponents: RealmList = RealmList()
- // @todo serie
+ // A comment written by the user
+ var comment: String = ""
- // Blinds
+ // Cash Game
+
+ // The small blind value
var cgSmallBlind: Double? = null
+
+ // The big blind value
var cgBigBlind: Double? = null
// Tournament
- var entryFee: Double? = null
- var numberOfPlayers: Int? = null
+ // The entry fee of the tournament
+ var tournamentEntryFee: Double? = null
+
+ // The total number of players who participated in the tournament
+ var tournamentNumberOfPlayers: Int? = null
+
+ // The name of the tournament
var tournamentType: TournamentName? = null
+
+ // The kind of the tournament, MTT or SnG
var tournamentKind: Int? = null
+
+ // The features of the tournament, like Knockout, Shootout, Turbo...
var tournamentFeatures: RealmList = RealmList()
}
diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TimeFrame.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TimeFrame.kt
index 71e3a540..886028a7 100644
--- a/app/src/main/java/net/pokeranalytics/android/model/realm/TimeFrame.kt
+++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TimeFrame.kt
@@ -1,15 +1,24 @@
package net.pokeranalytics.android.model.realm
import io.realm.RealmObject
+import io.realm.annotations.PrimaryKey
import java.util.*
open class TimeFrame : RealmObject() {
+ // A start date
var startDate: Date = Date()
+
+ // An end date
var endDate: Date? = null
+ // The break duration
var breakDuration: Double = 0.0
+
+ // the total duration
var duration: Double = 0.0
+
+ // indicates a state of pause
var paused: Boolean = false
}
diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TimeFrameGroup.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TimeFrameGroup.kt
index 3affa464..4cd6726e 100644
--- a/app/src/main/java/net/pokeranalytics/android/model/realm/TimeFrameGroup.kt
+++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TimeFrameGroup.kt
@@ -2,13 +2,20 @@ 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 java.util.*
open class TimeFrameGroup() : RealmObject() {
+ // The timeframe of the group, i.e. its start & end date
var timeFrame: TimeFrame? = null
+
+ // The list of Session played within the group, i.e. played within the same time frame
var timeFrames: RealmList = RealmList()
+ @Ignore // a duration shortcut
var duration: Double = 0.0
}
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 01170007..cb4dfdf0 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
@@ -1,9 +1,15 @@
package net.pokeranalytics.android.model.realm
import io.realm.RealmObject
+import io.realm.annotations.PrimaryKey
+import java.util.*
open class TournamentFeature : RealmObject() {
+ @PrimaryKey
+ var id = UUID.randomUUID().toString()
+
+ // The name of the feature
var name: String = ""
}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentName.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentName.kt
index e57747e7..1f4776ce 100644
--- a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentName.kt
+++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentName.kt
@@ -1,14 +1,16 @@
package net.pokeranalytics.android.model.realm
import io.realm.RealmObject
+import io.realm.annotations.PrimaryKey
+import java.util.*
open class TournamentName() : RealmObject() {
-// constructor() : this() {
-//
-// }
+ @PrimaryKey
+ var id = UUID.randomUUID().toString()
+ // The name of the tournament
var name: String = ""
}
diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Transaction.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Transaction.kt
index de19c050..370d5f30 100644
--- a/app/src/main/java/net/pokeranalytics/android/model/realm/Transaction.kt
+++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Transaction.kt
@@ -1,18 +1,26 @@
package net.pokeranalytics.android.model.realm
import io.realm.RealmObject
+import io.realm.annotations.PrimaryKey
import java.util.*
open class Transaction : RealmObject() {
- var value: Double = 0.0
+
+ @PrimaryKey
+ var id = UUID.randomUUID().toString()
+
+ // The amount of the transaction
+ var amount: Double = 0.0
+
+ // The date of the transaction
var date: Date = Date()
- var comment: String? = null
+
+ // The type of the transaction
var type: TransactionType? = null
-}
+ // A user comment
+ var comment: String = ""
-enum class TransactionKind {
- WITHDRAWAL,
- DEPOSIT
}
+
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 77259b40..0ac2fc0c 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
@@ -1,13 +1,30 @@
package net.pokeranalytics.android.model.realm
import io.realm.RealmObject
+import io.realm.annotations.PrimaryKey
+import java.util.*
open class TransactionType : RealmObject() {
+ @PrimaryKey
+ var id = UUID.randomUUID().toString()
+
+ // The name of the transaction type
var name: String = ""
+
+ // Whether or not the amount is added, or subtracted to the bankroll total
var additive: Boolean = false
+
+ // Whether or not the type can be deleted by the user
var lock: Boolean = false
+
+ // The predefined kind, if necessary, like: Withdrawal, deposit, or tips
var kind: Int? = null
-}
\ No newline at end of file
+}
+
+enum class TransactionKind {
+ WITHDRAWAL,
+ DEPOSIT
+}
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicListAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicListAdapter.kt
new file mode 100644
index 00000000..ef13d20e
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicListAdapter.kt
@@ -0,0 +1,58 @@
+package net.pokeranalytics.android.ui.adapter.components
+
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+
+enum class RowType {
+
+
+
+}
+
+//interface RowDelegate {
+//
+// fun groupedRow() : ArrayList()
+// fun (row: DynamicRowInterface) : String
+//}
+
+
+class DynamicListAdapter : RecyclerView.Adapter() {
+
+ var groupedRows = ArrayList()
+
+ override fun getItemViewType(position: Int): Int {
+
+ var sectionIndex: Int = 0
+ var rowIndex: Int = position
+ while (rowIndex >= this.groupedRows[sectionIndex].size + 1) {
+ rowIndex -= (groupedRows[sectionIndex].size + 1)
+ sectionIndex++
+ }
+
+ if (rowIndex == 0) {
+ return this.groupedRows[sectionIndex].viewType
+ } else {
+ return this.groupedRows[sectionIndex].rows[rowIndex - 1].viewType
+ }
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
+ val rowViewType: RowViewType = RowViewType.values()[viewType]
+ return rowViewType.viewHolder(parent)
+ }
+
+ override fun getItemCount(): Int {
+
+ return this.groupedRows.size + this.groupedRows.fold(0) { acc: Int, group: RowGroup ->
+ return acc + group.size
+ }
+
+ }
+
+
+
+ override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
+ TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt
new file mode 100644
index 00000000..da7fc074
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt
@@ -0,0 +1,67 @@
+package net.pokeranalytics.android.ui.adapter.components
+
+import android.content.Context
+import net.pokeranalytics.android.R
+
+
+class RowGroup(stringRes: Int?, rows: ArrayList) : DynamicRowInterface {
+
+ var stringRes: Int? = stringRes
+ var rows: ArrayList = rows
+
+ var size: Int = 0
+ get() {
+ return this.rows.size
+ }
+
+
+ override fun localizedTitle(context: Context): String? {
+ stringRes?.let {
+ return context.getString(it)
+ }
+ return null
+ }
+
+ override var viewType: Int = 0
+
+}
+
+interface DynamicRowInterface {
+
+ fun localizedTitle(context: Context): String?
+ var viewType: Int
+
+}
+
+enum class SessionRow(val resId: Int) : DynamicRowInterface {
+ BLINDS(R.string.app_name),
+ GAME(R.string.app_name),
+ DATE(R.string.app_name);
+
+ override fun localizedTitle(context: Context): String? {
+ return context.getString(this.resId)
+ }
+
+ override var viewType: Int = RowViewType.HEADER.ordinal
+ get() {
+ return when (this) {
+ BLINDS -> 1
+ GAME -> 2
+ DATE -> 1
+ }
+ }
+
+}
+
+enum class BankrollRow(val resId: Int) : DynamicRowInterface {
+ NAME(R.string.app_name),
+ LIVE(R.string.app_name),
+ CURRENCY(R.string.app_name);
+
+ override fun localizedTitle(context: Context): String? {
+ return context.getString(this.resId)
+ }
+
+ override var viewType: Int = 1
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/RowViewType.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/RowViewType.kt
new file mode 100644
index 00000000..d9a5d0c4
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/RowViewType.kt
@@ -0,0 +1,19 @@
+package net.pokeranalytics.android.ui.adapter.components
+
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+
+enum class RowViewType {
+ HEADER,
+ TEXTFIELD;
+
+ inner class PlaceholderViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+
+ }
+
+ fun viewHolder(parent: ViewGroup) : RecyclerView.ViewHolder {
+ return PlaceholderViewHolder(parent)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/DynamicListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/DynamicListFragment.kt
new file mode 100644
index 00000000..73825311
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/DynamicListFragment.kt
@@ -0,0 +1,10 @@
+package net.pokeranalytics.android.ui.fragment.components
+
+import androidx.recyclerview.widget.RecyclerView
+import net.pokeranalytics.android.util.PokerAnalyticsFragment
+
+open class DynamicListFragment : PokerAnalyticsFragment() {
+
+
+
+}
\ No newline at end of file