diff --git a/app/src/main/java/net/pokeranalytics/android/model/interfaces/Manageable.kt b/app/src/main/java/net/pokeranalytics/android/model/interfaces/Manageable.kt index 4a6c077d..2429a776 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/interfaces/Manageable.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/interfaces/Manageable.kt @@ -5,7 +5,6 @@ import io.realm.Realm import io.realm.RealmModel import net.pokeranalytics.android.R import net.pokeranalytics.android.exceptions.ModelException -import net.pokeranalytics.android.ui.view.RowRepresentable enum class SaveValidityStatus { VALID, @@ -23,7 +22,7 @@ enum class DeleteValidityStatus { /** * An interface to group object which are managed by the database */ -interface Manageable : Savable, Deletable, Editable +interface Manageable : Savable, Deletable interface NameManageable : Manageable { var name: String @@ -68,17 +67,6 @@ interface Identifiable : RealmModel { } } -/** - * An interface to update the fields of an object - */ -interface Editable : Identifiable { - /** - * a method to handle the modification of the object. - * Through [RowRepresentable] the object is able to update the right variable with the new value. - */ - fun updateValue(value: Any?, row: RowRepresentable) -} - /** * An interface to easily handle the validity of any object we want to save */ diff --git a/app/src/main/java/net/pokeranalytics/android/model/interfaces/CountableUsage.kt b/app/src/main/java/net/pokeranalytics/android/model/interfaces/UsageCountable.kt similarity index 86% rename from app/src/main/java/net/pokeranalytics/android/model/interfaces/CountableUsage.kt rename to app/src/main/java/net/pokeranalytics/android/model/interfaces/UsageCountable.kt index 10a5137b..cdce3e82 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/interfaces/CountableUsage.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/interfaces/UsageCountable.kt @@ -5,7 +5,7 @@ import io.realm.RealmModel /** * An interface to be able to track the usage of an object */ -interface CountableUsage : Identifiable { +interface UsageCountable : Identifiable { var useCount: Int get() { return 0 } set(_) {} 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 3ad24c5e..ad66120c 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 @@ -14,6 +14,7 @@ import net.pokeranalytics.android.model.interfaces.Identifiable import net.pokeranalytics.android.model.interfaces.NameManageable import net.pokeranalytics.android.model.interfaces.SaveValidityStatus import net.pokeranalytics.android.ui.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowUpdatable import net.pokeranalytics.android.ui.view.rowrepresentable.BankrollPropertiesRow import net.pokeranalytics.android.ui.view.rowrepresentable.SessionPropertiesRow import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow @@ -22,7 +23,8 @@ import net.pokeranalytics.android.util.UserDefaults import java.util.* enum class ResultCaptureType { - BUYIN_CASHEDOUT, + + BUYIN_CASHED_OUT, NET_RESULT; companion object { @@ -33,13 +35,13 @@ enum class ResultCaptureType { val rowRepresentables: List get() { return when (this) { - BUYIN_CASHEDOUT -> buyinCashedOutFields + BUYIN_CASHED_OUT -> buyinCashedOutFields NET_RESULT -> netResultFields } } } -open class Bankroll : RealmObject(), NameManageable, RowRepresentable { +open class Bankroll : RealmObject(), NameManageable, RowUpdatable { @PrimaryKey override var id = UUID.randomUUID().toString() @@ -66,29 +68,6 @@ open class Bankroll : RealmObject(), NameManageable, RowRepresentable { return this.currency?.rate ?: Currency.DEFAULT_RATE } - override fun getDisplayName(context: Context): String { - return this.name - } - - override fun updateValue(value: Any?, row: RowRepresentable) { - when (row) { - SimpleRow.NAME -> this.name = value as String? ?: "" - BankrollPropertiesRow.ONLINE -> { - this.live = if (value is Boolean) !value else false - } - BankrollPropertiesRow.INITIAL_VALUE -> { - this.initialValue = value as Double? ?: 0.0 - } - BankrollPropertiesRow.CURRENCY -> { - //TODO handle a use default currency option - this.currency?.code = value as String? - } - BankrollPropertiesRow.RATE -> { - this.currency?.rate = value as Double? - } - } - } - override fun isValidForDelete(realm: Realm): Boolean { return realm.where().equalTo("bankroll.id", id).findAll().isEmpty() && realm.where().equalTo("bankroll.id", id).findAll().isEmpty() @@ -124,7 +103,7 @@ open class Bankroll : RealmObject(), NameManageable, RowRepresentable { return Preferences.getResultCaptureType(this, context) ?: run { when (this.live) { - true -> ResultCaptureType.BUYIN_CASHEDOUT + true -> ResultCaptureType.BUYIN_CASHED_OUT else -> ResultCaptureType.NET_RESULT } } @@ -151,6 +130,25 @@ open class Bankroll : RealmObject(), NameManageable, RowRepresentable { } + override fun updateValue(value: Any?, row: RowRepresentable) { + when (row) { + SimpleRow.NAME -> this.name = value as String? ?: "" + BankrollPropertiesRow.ONLINE -> { + this.live = if (value is Boolean) !value else false + } + BankrollPropertiesRow.INITIAL_VALUE -> { + this.initialValue = value as Double? ?: 0.0 + } + BankrollPropertiesRow.CURRENCY -> { + //TODO handle a use default currency option + this.currency?.code = value as String? + } + BankrollPropertiesRow.RATE -> { + this.currency?.rate = value as Double? + } + } + } + val utilCurrency: java.util.Currency get() { this.currency?.code?.let { diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Comment.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Comment.kt index 0e94c26e..bfe08c1b 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Comment.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Comment.kt @@ -13,11 +13,12 @@ import net.pokeranalytics.android.model.interfaces.Manageable import net.pokeranalytics.android.model.interfaces.SaveValidityStatus import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType import net.pokeranalytics.android.ui.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowUpdatable import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.util.NULL_TEXT import java.util.* -open class Comment : RealmObject(), Manageable, RowRepresentable { +open class Comment : RealmObject(), Manageable, RowRepresentable, RowUpdatable { @PrimaryKey override var id = UUID.randomUUID().toString() 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 6ce02720..a0fabe59 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 @@ -18,6 +18,7 @@ import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor +import net.pokeranalytics.android.ui.view.RowUpdatable import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.rowrepresentable.CustomFieldPropertiesRow import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable @@ -28,7 +29,7 @@ import java.util.* import kotlin.collections.ArrayList -open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDataSource, RowRepresentable { +open class CustomField : RealmObject(), RowRepresentable, RowUpdatable, NameManageable, StaticRowRepresentableDataSource { companion object { @@ -111,13 +112,9 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa @Ignore private var entriesToDelete: ArrayList = ArrayList() - @Ignore - override var viewType: Int = RowViewType.TITLE_VALUE_ARROW.ordinal - @Ignore private var rowRepresentation: List = mutableListOf() - //helper val isListType: Boolean @@ -130,14 +127,6 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa return this.type == Type.AMOUNT.uniqueIdentifier } - override fun localizedTitle(context: Context): String { - return this.name - } - - override fun getDisplayName(context: Context): String { - return this.name - } - override fun adapterRows(): List? { return rowRepresentation } @@ -178,13 +167,6 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa return R.string.cf_entry_delete_popup_message } - override val bottomSheetType: BottomSheetType - get() { - return when (type) { - Type.LIST.uniqueIdentifier -> BottomSheetType.LIST_STATIC - else -> BottomSheetType.NUMERIC_TEXT - } - } override fun deleteDependencies(realm: Realm) { if (isValid) { @@ -204,28 +186,6 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa } } - override fun editingDescriptors(map: Map): ArrayList? { - return when (type) { - Type.LIST.uniqueIdentifier -> { - val defaultValue: Any? by map - val data: RealmList? by map - arrayListOf( - RowRepresentableEditDescriptor(defaultValue, staticData = data) - ) - } - else -> { - val defaultValue: Double? by map - arrayListOf( - RowRepresentableEditDescriptor( - defaultValue, inputType = InputType.TYPE_CLASS_NUMBER - or InputType.TYPE_NUMBER_FLAG_DECIMAL - or InputType.TYPE_NUMBER_FLAG_SIGNED - ) - ) - } - } - } - /** * Update the row representation */ @@ -343,4 +303,45 @@ open class CustomField : RealmObject(), NameManageable, StaticRowRepresentableDa } } + @Ignore + override var viewType: Int = RowViewType.TITLE_VALUE_ARROW.ordinal + + override fun localizedTitle(context: Context): String { + return this.name + } + + override fun getDisplayName(context: Context): String { + return this.name + } + + override val bottomSheetType: BottomSheetType + get() { + return when (this.type) { + Type.LIST.uniqueIdentifier -> BottomSheetType.LIST_STATIC + else -> BottomSheetType.NUMERIC_TEXT + } + } + + override fun editingDescriptors(map: Map): ArrayList { + return when (this.type) { + Type.LIST.uniqueIdentifier -> { + val defaultValue: Any? by map + val data: RealmList? by map + arrayListOf( + RowRepresentableEditDescriptor(defaultValue, staticData = data) + ) + } + else -> { + val defaultValue: Double? by map + arrayListOf( + RowRepresentableEditDescriptor( + defaultValue, inputType = InputType.TYPE_CLASS_NUMBER + or InputType.TYPE_NUMBER_FLAG_DECIMAL + or InputType.TYPE_NUMBER_FLAG_SIGNED + ) + ) + } + } + } + } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/CustomFieldEntry.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/CustomFieldEntry.kt index 9a98cfc1..5c889291 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/CustomFieldEntry.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/CustomFieldEntry.kt @@ -18,6 +18,7 @@ import net.pokeranalytics.android.model.interfaces.SaveValidityStatus import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor +import net.pokeranalytics.android.ui.view.RowUpdatable import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.util.NULL_TEXT import net.pokeranalytics.android.util.extensions.toCurrency @@ -26,7 +27,7 @@ import java.util.* import java.util.Currency -open class CustomFieldEntry : RealmObject(), NameManageable, RowRepresentable { +open class CustomFieldEntry : RealmObject(), NameManageable, RowRepresentable, RowUpdatable { @Ignore override val realmObjectClass: Class = CustomFieldEntry::class.java 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 883c9535..3d00c007 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 @@ -12,10 +12,7 @@ import net.pokeranalytics.android.model.filter.QueryCondition import net.pokeranalytics.android.model.interfaces.* import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType import net.pokeranalytics.android.ui.modules.filter.FilterableType -import net.pokeranalytics.android.ui.view.ImageDecorator -import net.pokeranalytics.android.ui.view.RowRepresentable -import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor -import net.pokeranalytics.android.ui.view.RowViewType +import net.pokeranalytics.android.ui.view.* import net.pokeranalytics.android.ui.view.rowrepresentable.FilterCategoryRow import net.pokeranalytics.android.ui.view.rowrepresentable.FilterItemRow import timber.log.Timber @@ -26,7 +23,7 @@ import java.util.* * It contains a list of [FilterCondition] describing the complete query to launch * The [Filter] is working closely with a [Filterable] interface providing the entity we want the query being launched on */ -open class Filter : RealmObject(), RowRepresentable, Editable, Deletable, CountableUsage, ImageDecorator { +open class Filter : RealmObject(), RowRepresentable, RowUpdatable, Deletable, UsageCountable, ImageDecorator { @Ignore override val realmObjectClass: Class = Filter::class.java 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 fa02d658..f4bb3a4c 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 @@ -8,20 +8,21 @@ import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey import io.realm.kotlin.where import net.pokeranalytics.android.R -import net.pokeranalytics.android.model.interfaces.CountableUsage +import net.pokeranalytics.android.model.interfaces.UsageCountable import net.pokeranalytics.android.model.interfaces.Identifiable import net.pokeranalytics.android.model.interfaces.NameManageable import net.pokeranalytics.android.model.interfaces.SaveValidityStatus import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor +import net.pokeranalytics.android.ui.view.RowUpdatable import net.pokeranalytics.android.ui.view.rowrepresentable.GamePropertiesRow import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import net.pokeranalytics.android.util.NULL_TEXT import java.util.* import kotlin.collections.ArrayList -open class Game : RealmObject(), NameManageable, StaticRowRepresentableDataSource, RowRepresentable, CountableUsage { +open class Game : RealmObject(), NameManageable, StaticRowRepresentableDataSource, RowRepresentable, RowUpdatable, UsageCountable { @Ignore override val realmObjectClass: Class = Game::class.java 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 9f64f7fb..fdfa7739 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 @@ -12,11 +12,12 @@ import net.pokeranalytics.android.model.interfaces.Identifiable import net.pokeranalytics.android.model.interfaces.NameManageable import net.pokeranalytics.android.model.interfaces.SaveValidityStatus import net.pokeranalytics.android.ui.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowUpdatable import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import java.util.* -open class Location : RealmObject(), NameManageable, RowRepresentable { +open class Location : RealmObject(), NameManageable, RowRepresentable, RowUpdatable { @Ignore override val realmObjectClass: Class = Location::class.java 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 40592a58..b6e7d07c 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 @@ -12,6 +12,7 @@ import net.pokeranalytics.android.model.interfaces.* import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor +import net.pokeranalytics.android.ui.view.RowUpdatable import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable import net.pokeranalytics.android.ui.view.rowrepresentable.PlayerPropertiesRow @@ -23,7 +24,7 @@ import net.pokeranalytics.android.util.extensions.mediumDate import java.util.* import kotlin.collections.ArrayList -open class Player : RealmObject(), NameManageable, Savable, Deletable, StaticRowRepresentableDataSource, RowRepresentable { +open class Player : RealmObject(), NameManageable, Savable, Deletable, StaticRowRepresentableDataSource, RowRepresentable, RowUpdatable { @PrimaryKey override var id = UUID.randomUUID().toString() 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 2b2e20b2..6cd199ef 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 @@ -42,7 +42,7 @@ import java.util.Currency typealias BB = Double -open class Session : RealmObject(), Savable, Editable, RowRepresentable, Timed, +open class Session : RealmObject(), Savable, RowUpdatable, RowRepresentable, Timed, TimeFilterable, Filterable, DatedBankrollGraphEntry { enum class Type(val value: String) { 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 9d48fd6a..3d8e35bd 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 @@ -8,21 +8,21 @@ import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey import io.realm.kotlin.where import net.pokeranalytics.android.R -import net.pokeranalytics.android.model.interfaces.CountableUsage +import net.pokeranalytics.android.model.interfaces.UsageCountable import net.pokeranalytics.android.model.interfaces.Identifiable import net.pokeranalytics.android.model.interfaces.NameManageable import net.pokeranalytics.android.model.interfaces.SaveValidityStatus import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor +import net.pokeranalytics.android.ui.view.RowUpdatable import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import net.pokeranalytics.android.ui.view.rowrepresentable.TournamentFeatureRow import net.pokeranalytics.android.util.NULL_TEXT import java.util.* import kotlin.collections.ArrayList -open class TournamentFeature : RealmObject(), NameManageable, StaticRowRepresentableDataSource, RowRepresentable, - CountableUsage { +open class TournamentFeature : RealmObject(), RowRepresentable, RowUpdatable, NameManageable, StaticRowRepresentableDataSource, UsageCountable { companion object { val rowRepresentation : List by lazy { 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 fb703d04..6cb15af9 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 @@ -13,6 +13,7 @@ import net.pokeranalytics.android.model.interfaces.SaveValidityStatus import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor +import net.pokeranalytics.android.ui.view.RowUpdatable import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import net.pokeranalytics.android.ui.view.rowrepresentable.TournamentNameRow import net.pokeranalytics.android.util.NULL_TEXT @@ -20,7 +21,8 @@ import java.util.* import kotlin.collections.ArrayList -open class TournamentName : RealmObject(), NameManageable, StaticRowRepresentableDataSource, RowRepresentable { +open class TournamentName : RealmObject(), NameManageable, StaticRowRepresentableDataSource, + RowUpdatable, RowRepresentable { companion object { val rowRepresentation : List by lazy { val rows = ArrayList() 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 a4e1ca3a..71b9c355 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 @@ -12,10 +12,7 @@ import net.pokeranalytics.android.model.filter.QueryCondition import net.pokeranalytics.android.model.interfaces.* import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.graph.Graph -import net.pokeranalytics.android.ui.view.DefaultLegendValues -import net.pokeranalytics.android.ui.view.LegendContent -import net.pokeranalytics.android.ui.view.RowRepresentable -import net.pokeranalytics.android.ui.view.RowViewType +import net.pokeranalytics.android.ui.view.* import net.pokeranalytics.android.ui.view.rowrepresentable.TransactionPropertiesRow import net.pokeranalytics.android.util.TextFormat import net.pokeranalytics.android.util.extensions.findById @@ -24,7 +21,7 @@ import java.util.* import kotlin.collections.ArrayList -open class Transaction : RealmObject(), Manageable, StaticRowRepresentableDataSource, RowRepresentable, TimeFilterable, +open class Transaction : RealmObject(), RowRepresentable, RowUpdatable, Manageable, StaticRowRepresentableDataSource, TimeFilterable, Filterable, DatedBankrollGraphEntry { companion object { 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 09561a96..a2c335b1 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 @@ -13,6 +13,7 @@ import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.view.Localizable import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor +import net.pokeranalytics.android.ui.view.RowUpdatable import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import net.pokeranalytics.android.ui.view.rowrepresentable.TransactionTypePropertiesRow import net.pokeranalytics.android.util.enumerations.IntIdentifiable @@ -21,8 +22,8 @@ import java.util.* import kotlin.collections.ArrayList -open class TransactionType : RealmObject(), NameManageable, StaticRowRepresentableDataSource, RowRepresentable, - CountableUsage { +open class TransactionType : RealmObject(), RowRepresentable, RowUpdatable, NameManageable, StaticRowRepresentableDataSource, + UsageCountable { enum class Value(override var uniqueIdentifier: Int, val additive: Boolean) : IntIdentifiable, Localizable { diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/rows/BankrollRow.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/rows/BankrollRow.kt new file mode 100644 index 00000000..dc5a570d --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/rows/BankrollRow.kt @@ -0,0 +1,17 @@ +package net.pokeranalytics.android.model.realm.rows + +import android.content.Context +import net.pokeranalytics.android.model.realm.Bankroll +import net.pokeranalytics.android.ui.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowUpdatable +import net.pokeranalytics.android.ui.view.rowrepresentable.BankrollPropertiesRow +import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow + +class BankrollRow(var bankroll: Bankroll) : RowRepresentable { + + override fun getDisplayName(context: Context): String { + return this.bankroll.name + } + + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/rows/CustomFieldRow.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/rows/CustomFieldRow.kt new file mode 100644 index 00000000..44d67424 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/rows/CustomFieldRow.kt @@ -0,0 +1,57 @@ +package net.pokeranalytics.android.model.realm.rows + +import android.content.Context +import android.text.InputType +import io.realm.RealmList +import io.realm.annotations.Ignore +import net.pokeranalytics.android.model.realm.CustomField +import net.pokeranalytics.android.model.realm.CustomFieldEntry +import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType +import net.pokeranalytics.android.ui.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor +import net.pokeranalytics.android.ui.view.RowViewType + +class CustomFieldRow(var customField: CustomField) : RowRepresentable { + + @Ignore + override var viewType: Int = RowViewType.TITLE_VALUE_ARROW.ordinal + + override fun localizedTitle(context: Context): String { + return this.customField.name + } + + override fun getDisplayName(context: Context): String { + return this.customField.name + } + + override val bottomSheetType: BottomSheetType + get() { + return when (this.customField.type) { + CustomField.Type.LIST.uniqueIdentifier -> BottomSheetType.LIST_STATIC + else -> BottomSheetType.NUMERIC_TEXT + } + } + + override fun editingDescriptors(map: Map): ArrayList { + return when (this.customField.type) { + CustomField.Type.LIST.uniqueIdentifier -> { + val defaultValue: Any? by map + val data: RealmList? by map + arrayListOf( + RowRepresentableEditDescriptor(defaultValue, staticData = data) + ) + } + else -> { + val defaultValue: Double? by map + arrayListOf( + RowRepresentableEditDescriptor( + defaultValue, inputType = InputType.TYPE_CLASS_NUMBER + or InputType.TYPE_NUMBER_FLAG_DECIMAL + or InputType.TYPE_NUMBER_FLAG_SIGNED + ) + ) + } + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStaticListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStaticListFragment.kt index 471ac008..82d9063f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStaticListFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetStaticListFragment.kt @@ -38,7 +38,7 @@ class BottomSheetStaticListFragment : BottomSheetFragment(), StaticRowRepresenta // dataAdapter.notifyDataSetChanged() } - override fun adapterRows(): List? { + override fun adapterRows(): List { return this.model.staticRows } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/data/BankrollDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/data/BankrollDataFragment.kt index d96e8a39..58113494 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/data/BankrollDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/data/BankrollDataFragment.kt @@ -129,7 +129,7 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS override fun isSelected(position: Int, row: RowRepresentable, tag: Int): Boolean { return when (row) { - BankrollPropertiesRow.CAPTURE_BUYIN_CASHED_OUT -> this.bankrollModel.selectedCaptureType.value == ResultCaptureType.BUYIN_CASHEDOUT + BankrollPropertiesRow.CAPTURE_BUYIN_CASHED_OUT -> this.bankrollModel.selectedCaptureType.value == ResultCaptureType.BUYIN_CASHED_OUT BankrollPropertiesRow.CAPTURE_NET_RESULT -> this.bankrollModel.selectedCaptureType.value == ResultCaptureType.NET_RESULT else -> false } @@ -188,7 +188,7 @@ class BankrollDataFragment : EditableDataFragment(), StaticRowRepresentableDataS RequestCode.CURRENCY.value ) BankrollPropertiesRow.REFRESH_RATE -> refreshRate() - BankrollPropertiesRow.CAPTURE_BUYIN_CASHED_OUT -> this.bankrollModel.selectedCaptureType.value = ResultCaptureType.BUYIN_CASHEDOUT + BankrollPropertiesRow.CAPTURE_BUYIN_CASHED_OUT -> this.bankrollModel.selectedCaptureType.value = ResultCaptureType.BUYIN_CASHED_OUT BankrollPropertiesRow.CAPTURE_NET_RESULT -> this.bankrollModel.selectedCaptureType.value = ResultCaptureType.NET_RESULT else -> super.onRowSelected(position, row, tag) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/data/EditableDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/data/EditableDataFragment.kt index 9428f646..b63398db 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/data/EditableDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/data/EditableDataFragment.kt @@ -10,13 +10,13 @@ import androidx.recyclerview.widget.RecyclerView import io.realm.RealmModel import net.pokeranalytics.android.R import net.pokeranalytics.android.exceptions.PAIllegalStateException -import net.pokeranalytics.android.model.interfaces.Editable import net.pokeranalytics.android.model.interfaces.NameManageable import net.pokeranalytics.android.model.utils.CrashLogging import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.view.RowRepresentable +import net.pokeranalytics.android.ui.view.RowUpdatable open class EditableDataFragment : DataManagerFragment(), RowRepresentableDelegate { @@ -69,7 +69,7 @@ open class EditableDataFragment : DataManagerFragment(), RowRepresentableDelegat override fun onRowValueChanged(value: Any?, row: RowRepresentable) { getRealm().executeTransaction { try { - (this.model.item as Editable).updateValue(value, row) + (this.model.item as RowUpdatable).updateValue(value, row) } catch (e: Exception) { CrashLogging.log("Exception caught: row = $row, value=$value, class=${this.javaClass}") throw e diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/datalist/DataListViewModel.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/datalist/DataListViewModel.kt index eaa8a6b8..3b6a2838 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/datalist/DataListViewModel.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/datalist/DataListViewModel.kt @@ -35,7 +35,7 @@ class DataListViewModel : ViewModel(), LiveRowRepresentableDataSource { var showAddButton: Boolean = false - override fun rowRepresentableForPosition(position: Int): RowRepresentable? { + override fun rowRepresentableForPosition(position: Int): RowRepresentable { return this.items[position] as RowRepresentable } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/feed/FeedFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/feed/FeedFragment.kt index 43d6ff87..ad496014 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/feed/FeedFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/feed/FeedFragment.kt @@ -18,7 +18,6 @@ import net.pokeranalytics.android.R import net.pokeranalytics.android.databinding.FragmentFeedBinding import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.model.LiveData -import net.pokeranalytics.android.model.interfaces.Editable import net.pokeranalytics.android.model.realm.Filter import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.model.realm.Transaction @@ -229,7 +228,7 @@ class FeedFragment : FilterableFragment(), RowRepresentableDelegate, PurchaseLis when (row) { is Session -> SessionActivity.newInstance( requireContext(), - sessionId = (row as Editable).id + sessionId = row.id ) is Transaction -> { selectedTransaction = row diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/session/ResultCaptureSelectionPopup.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/session/ResultCaptureSelectionPopup.kt index 771a7db4..cf5773a1 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/session/ResultCaptureSelectionPopup.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/session/ResultCaptureSelectionPopup.kt @@ -39,7 +39,7 @@ class ResultCaptureSelectionPopup( netResultChip.isCheckedIconVisible = true val buyinCashoutChip = view.findViewById(R.id.chip_buyin_cashout) - buyinCashoutChip.isChecked = type == ResultCaptureType.BUYIN_CASHEDOUT + buyinCashoutChip.isChecked = type == ResultCaptureType.BUYIN_CASHED_OUT buyinCashoutChip.isCheckedIconVisible = true val buttonSessionOnly = view.findViewById