From 3fa447e26c2e034976c8596f3da6e59e482d5a9a Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 4 Jul 2019 11:18:18 +0200 Subject: [PATCH] Fix player creation / edition --- .../android/model/realm/Player.kt | 11 +++-- .../ui/fragment/data/PlayerDataFragment.kt | 21 +++++----- .../android/ui/view/RowViewType.kt | 2 +- .../ui/view/rowrepresentable/GameRow.kt | 2 +- .../ui/view/rowrepresentable/PlayerRow.kt | 41 +++++++++++++++++-- 5 files changed, 56 insertions(+), 21 deletions(-) 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 4e174202..54ae9faa 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 @@ -14,7 +14,6 @@ import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.rowrepresentable.PlayerRow -import net.pokeranalytics.android.ui.view.rowrepresentable.SimpleRow import net.pokeranalytics.android.util.NULL_TEXT import java.util.* @@ -23,8 +22,8 @@ open class Player : RealmObject(), NameManageable, Deletable, StaticRowRepresent companion object { val rowRepresentation: List by lazy { val rows = ArrayList() - rows.add(PlayerRow.PLAYER_IMAGE) - rows.add(SimpleRow.NAME) + rows.add(PlayerRow.IMAGE) + rows.add(PlayerRow.NAME) rows.add(PlayerRow.SUMMARY) rows } @@ -68,7 +67,7 @@ open class Player : RealmObject(), NameManageable, Deletable, StaticRowRepresent override fun stringForRow(row: RowRepresentable): String { return when (row) { - SimpleRow.NAME -> if (this.name.isNotEmpty()) this.name else NULL_TEXT + PlayerRow.NAME -> if (this.name.isNotEmpty()) this.name else NULL_TEXT else -> return super.stringForRow(row) } } @@ -85,9 +84,9 @@ open class Player : RealmObject(), NameManageable, Deletable, StaticRowRepresent override fun updateValue(value: Any?, row: RowRepresentable) { when (row) { - SimpleRow.NAME -> this.name = value as String? ?: "" + PlayerRow.NAME -> this.name = value as String? ?: "" PlayerRow.SUMMARY -> this.summary = value as String? ?: "" - PlayerRow.PLAYER_IMAGE -> this.picture = value as String? ?: "" + PlayerRow.IMAGE -> this.picture = value as String? ?: "" } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt index fc84d14a..518f200b 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt @@ -45,8 +45,8 @@ class PlayerDataFragment : EditableDataFragment(), StaticRowRepresentableDataSou override fun getPhotos(files: ArrayList) { super.getPhotos(files) files.firstOrNull()?.let { picture -> - player.updateValue(picture.absolutePath, PlayerRow.PLAYER_IMAGE) - rowRepresentableAdapter.refreshRow(PlayerRow.PLAYER_IMAGE) + player.updateValue(picture.absolutePath, PlayerRow.IMAGE) + rowRepresentableAdapter.refreshRow(PlayerRow.IMAGE) } } @@ -74,7 +74,7 @@ class PlayerDataFragment : EditableDataFragment(), StaticRowRepresentableDataSou override fun stringForRow(row: RowRepresentable): String { return when (row) { - SimpleRow.NAME -> if (player.name.isNotEmpty()) player.name else NULL_TEXT + PlayerRow.NAME -> if (player.name.isNotEmpty()) player.name else NULL_TEXT PlayerRow.SUMMARY -> if (player.summary.isNotEmpty()) player.summary else NULL_TEXT else -> super.stringForRow(row) } @@ -94,23 +94,24 @@ class PlayerDataFragment : EditableDataFragment(), StaticRowRepresentableDataSou override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { Timber.d("onRowSelected") when (row) { - PlayerRow.PLAYER_IMAGE -> { - openPictureDialog() - } + PlayerRow.IMAGE -> openPictureDialog() + /* PlayerRow.SUMMARY -> { /* val data = editDescriptors(row) InputFragment.buildAndShow(fragmentManager, row, this, data, isClearable = false, isDeletable = true) */ } - SimpleRow.NAME -> super.onRowSelected(position, row, fromAction) + PlayerRow.NAME -> super.onRowSelected(position, row, fromAction) + */ + else -> super.onRowSelected(position, row, fromAction) } } override fun onRowValueChanged(value: Any?, row: RowRepresentable) { super.onRowValueChanged(value, row) when (row) { - SimpleRow.NAME -> rowRepresentableAdapter.refreshRow(PlayerRow.PLAYER_IMAGE) + PlayerRow.NAME -> rowRepresentableAdapter.refreshRow(PlayerRow.IMAGE) } } @@ -147,8 +148,8 @@ class PlayerDataFragment : EditableDataFragment(), StaticRowRepresentableDataSou 0 -> mediaActivity?.openImageCaptureIntent(false) 1 -> mediaActivity?.openImageGalleryIntent(false) 2 -> { - player.updateValue(null, PlayerRow.PLAYER_IMAGE) - rowRepresentableAdapter.refreshRow(PlayerRow.PLAYER_IMAGE) + player.updateValue(null, PlayerRow.IMAGE) + rowRepresentableAdapter.refreshRow(PlayerRow.IMAGE) } } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt index 2c9e7a85..ddb44101 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt @@ -663,7 +663,7 @@ enum class RowViewType(private var layoutRes: Int) { override fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) { itemView.findViewById(R.id.playerImageView)?.let { playerImageView -> val listener = View.OnClickListener { - adapter.delegate?.onRowSelected(position, PlayerRow.PLAYER_IMAGE) + adapter.delegate?.onRowSelected(position, PlayerRow.IMAGE) } playerImageView.setPlayer(row as Player) playerImageView.setOnImageClickListener(listener) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/GameRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/GameRow.kt index 770c2bd3..9fd21e94 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/GameRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/GameRow.kt @@ -6,8 +6,8 @@ import net.pokeranalytics.android.model.realm.Game import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.fragment.components.input.InputFragment import net.pokeranalytics.android.ui.fragment.components.input.InputFragmentType -import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowEditableDataSource +import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType enum class GameRow : RowRepresentable { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/PlayerRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/PlayerRow.kt index 3d181bd3..ea3960d7 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/PlayerRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/PlayerRow.kt @@ -1,6 +1,13 @@ package net.pokeranalytics.android.ui.view.rowrepresentable +import androidx.fragment.app.Fragment import net.pokeranalytics.android.R +import net.pokeranalytics.android.exceptions.PokerAnalyticsException +import net.pokeranalytics.android.model.realm.Player +import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate +import net.pokeranalytics.android.ui.fragment.components.input.InputFragment +import net.pokeranalytics.android.ui.fragment.components.input.InputFragmentType +import net.pokeranalytics.android.ui.view.RowEditableDataSource import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType @@ -8,13 +15,15 @@ import net.pokeranalytics.android.ui.view.RowViewType * An enum managing the player rows */ enum class PlayerRow : RowRepresentable { - PLAYER_IMAGE, + IMAGE, + NAME, SUMMARY; override val resId: Int? get() { return when (this) { - PLAYER_IMAGE -> R.string.app_name + IMAGE -> R.string.app_name + NAME -> R.string.name SUMMARY -> R.string.summary } } @@ -22,11 +31,37 @@ enum class PlayerRow : RowRepresentable { override val viewType: Int get() { return when (this) { - PLAYER_IMAGE -> RowViewType.ROW_PLAYER_IMAGE.ordinal + IMAGE -> RowViewType.ROW_PLAYER_IMAGE.ordinal + NAME -> RowViewType.TITLE_VALUE.ordinal SUMMARY -> RowViewType.TITLE_VALUE.ordinal } } + override val inputFragmentType: InputFragmentType + get() { + return when (this) { + IMAGE-> InputFragmentType.NONE + NAME -> InputFragmentType.EDIT_TEXT + SUMMARY-> InputFragmentType.EDIT_TEXT_MULTI_LINES + } + } + + override fun startEditing(dataSource: Any?, parent: Fragment?) { + if (dataSource == null) return + if (dataSource !is Player) return + if (parent == null) return + if (parent !is RowRepresentableDelegate) return + val data = RowEditableDataSource() + when (this) { + NAME -> data.append(dataSource.name) + SUMMARY -> data.append(dataSource.summary) + else -> PokerAnalyticsException.InputFragmentException + } + InputFragment.buildAndShow(this, parent, data) + } + + + //TODO:Aurel /* override fun editingDescriptors(map: Map): ArrayList? {