From 75248ffdecf882031d3627afe088b738df34bbdd Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Fri, 7 Jun 2019 09:56:10 +0200 Subject: [PATCH] Add Players view --- .../pokeranalytics/android/model/LiveData.kt | 5 ++ .../android/model/realm/Player.kt | 67 +++++++++++++++++-- .../android/ui/fragment/MoreFragment.kt | 3 + .../ui/view/rowrepresentable/MoreTabRow.kt | 3 + .../main/res/drawable/ic_outline_people.xml | 9 +++ 5 files changed, 81 insertions(+), 6 deletions(-) create mode 100644 app/src/main/res/drawable/ic_outline_people.xml diff --git a/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt b/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt index ba7658ff..384e1382 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt @@ -20,6 +20,7 @@ enum class LiveData : Localizable { TRANSACTION, TRANSACTION_TYPE, FILTER, + PLAYER, CUSTOM_FIELD, REPORT_SETUP; @@ -36,6 +37,7 @@ enum class LiveData : Localizable { TRANSACTION -> Transaction::class.java TRANSACTION_TYPE -> TransactionType::class.java FILTER -> Filter::class.java + PLAYER -> Player::class.java CUSTOM_FIELD -> CustomField::class.java REPORT_SETUP -> ReportSetup::class.java } @@ -76,6 +78,7 @@ enum class LiveData : Localizable { TRANSACTION -> R.string.operation TRANSACTION_TYPE -> R.string.operation_type FILTER -> R.string.filter + PLAYER -> R.string.player CUSTOM_FIELD -> R.string.custom_field REPORT_SETUP -> R.string.custom } @@ -92,6 +95,7 @@ enum class LiveData : Localizable { TRANSACTION -> R.string.operations TRANSACTION_TYPE -> R.string.operation_types FILTER -> R.string.filters + PLAYER -> R.string.players CUSTOM_FIELD -> R.string.custom_fields REPORT_SETUP -> R.string.custom } @@ -108,6 +112,7 @@ enum class LiveData : Localizable { TRANSACTION -> R.string.new_operation TRANSACTION_TYPE -> R.string.new_operation_type FILTER -> R.string.new_filter + PLAYER -> R.string.new_friend CUSTOM_FIELD -> R.string.new_custom_field REPORT_SETUP -> R.string.new_report } 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 7323e151..a75bcc9f 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,15 +1,70 @@ package net.pokeranalytics.android.model.realm +import android.content.Context +import io.realm.Realm import io.realm.RealmObject import io.realm.annotations.PrimaryKey +import net.pokeranalytics.android.model.interfaces.Deletable +import net.pokeranalytics.android.model.interfaces.DeleteValidityStatus +import net.pokeranalytics.android.model.interfaces.NameManageable +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.rowrepresentable.SimpleRow +import net.pokeranalytics.android.util.NULL_TEXT import java.util.* -open class Player : RealmObject() { +open class Player : RealmObject(), NameManageable, Deletable, StaticRowRepresentableDataSource, RowRepresentable { - @PrimaryKey - var id = UUID.randomUUID().toString() + companion object { + val rowRepresentation: List by lazy { + val rows = ArrayList() + rows.add(SimpleRow.NAME) + rows + } + } - // The name of the player - var name: String = "" + @PrimaryKey + override var id = UUID.randomUUID().toString() - } \ No newline at end of file + // The name of the player + override var name: String = "" + + + override fun isValidForDelete(realm: Realm): Boolean { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + override fun getFailedDeleteMessage(status: DeleteValidityStatus): Int { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + override fun adapterRows(): List? { + return rowRepresentation + } + + override fun getDisplayName(context: Context): String { + return this.name + } + + override fun stringForRow(row: RowRepresentable): String { + return when (row) { + SimpleRow.NAME -> if (this.name.isNotEmpty()) this.name else NULL_TEXT + else -> return super.stringForRow(row) + } + } + + override fun editDescriptors(row: RowRepresentable): ArrayList? { + return when (row) { + SimpleRow.NAME -> row.editingDescriptors(mapOf("defaultValue" to this.name)) + else -> null + } + } + + override fun updateValue(value: Any?, row: RowRepresentable) { + when (row) { + SimpleRow.NAME -> this.name = value as String? ?: "" + } + } + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/MoreFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/MoreFragment.kt index 997ff82c..83a8a6fe 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/MoreFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/MoreFragment.kt @@ -7,7 +7,9 @@ import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import kotlinx.android.synthetic.main.fragment_more.* import net.pokeranalytics.android.R +import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.ui.activity.BankrollActivity +import net.pokeranalytics.android.ui.activity.DataListActivity import net.pokeranalytics.android.ui.activity.SettingsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate @@ -62,6 +64,7 @@ class MoreFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, super.onRowSelected(position, row, fromAction) when(row) { MoreTabRow.BANKROLL -> BankrollActivity.newInstance(requireContext()) + MoreTabRow.PLAYERS -> DataListActivity.newInstance(requireContext(), LiveData.PLAYER.ordinal) MoreTabRow.SETTINGS -> SettingsActivity.newInstance(requireContext()) } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/MoreTabRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/MoreTabRow.kt index 4e2fe8bc..35a84d31 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/MoreTabRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/MoreTabRow.kt @@ -9,12 +9,14 @@ import net.pokeranalytics.android.ui.view.RowViewType */ enum class MoreTabRow : RowRepresentable { BANKROLL, + PLAYERS, SETTINGS; override val resId: Int? get() { return when(this) { BANKROLL -> R.string.bankroll + PLAYERS -> R.string.players SETTINGS -> R.string.services } } @@ -23,6 +25,7 @@ enum class MoreTabRow : RowRepresentable { get() { return when(this) { BANKROLL -> R.drawable.ic_outline_lock + PLAYERS -> R.drawable.ic_outline_people SETTINGS -> R.drawable.ic_outline_settings } } diff --git a/app/src/main/res/drawable/ic_outline_people.xml b/app/src/main/res/drawable/ic_outline_people.xml new file mode 100644 index 00000000..1a2f6f89 --- /dev/null +++ b/app/src/main/res/drawable/ic_outline_people.xml @@ -0,0 +1,9 @@ + + +