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