Fix player creation / edition

feature/players
Aurelien Hubert 6 years ago
parent 599c29989a
commit 3fa447e26c
  1. 11
      app/src/main/java/net/pokeranalytics/android/model/realm/Player.kt
  2. 21
      app/src/main/java/net/pokeranalytics/android/ui/fragment/data/PlayerDataFragment.kt
  3. 2
      app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt
  4. 2
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/GameRow.kt
  5. 41
      app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/PlayerRow.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<RowRepresentable> by lazy {
val rows = ArrayList<RowRepresentable>()
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? ?: ""
}
}

@ -45,8 +45,8 @@ class PlayerDataFragment : EditableDataFragment(), StaticRowRepresentableDataSou
override fun getPhotos(files: ArrayList<File>) {
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)
}
}
}

@ -663,7 +663,7 @@ enum class RowViewType(private var layoutRes: Int) {
override fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) {
itemView.findViewById<PlayerImageView?>(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)

@ -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 {

@ -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<String, Any?>): ArrayList<RowRepresentableEditDescriptor>? {

Loading…
Cancel
Save