From 105f56ce0a71de3113663cd301ee80db935b0e9d Mon Sep 17 00:00:00 2001 From: Laurent Date: Wed, 4 Mar 2020 11:36:22 +0100 Subject: [PATCH] Player selection improvements --- .../ui/activity/EditableDataActivity.kt | 4 +- .../android/ui/activity/components/Codes.kt | 9 ++-- .../ui/fragment/data/DataManagerFragment.kt | 7 ++- .../ui/modules/datalist/DataListActivity.kt | 16 ++++-- .../ui/modules/datalist/DataListFragment.kt | 50 +++++++++++++++---- .../modules/handhistory/HandHistoryAdapter.kt | 3 +- .../handhistory/HandHistoryFragment.kt | 6 +-- .../handhistory/model/HandHistoryViewModel.kt | 4 +- .../android/ui/view/PlayerImageView.kt | 20 +++++--- .../android/ui/view/RowViewType.kt | 2 +- build.gradle | 2 +- gradle/wrapper/gradle-wrapper.properties | 4 +- 12 files changed, 86 insertions(+), 41 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/EditableDataActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/EditableDataActivity.kt index c540be6b..4cb5404d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/EditableDataActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/EditableDataActivity.kt @@ -22,9 +22,9 @@ class EditableDataActivity : MediaActivity() { /** * Default constructor */ - fun newInstance(context: Context, dataType: Int, primaryKey: String? = null) { + fun newInstance(context: Context, dataType: LiveData, primaryKey: String? = null) { val intent = Intent(context, EditableDataActivity::class.java) - intent.putExtra(IntentKey.DATA_TYPE.keyName, dataType) + intent.putExtra(IntentKey.DATA_TYPE.keyName, dataType.ordinal) primaryKey?.let { intent.putExtra(IntentKey.PRIMARY_KEY.keyName, it) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/components/Codes.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/components/Codes.kt index e9cd8ca3..e91359dd 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/components/Codes.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/components/Codes.kt @@ -8,10 +8,11 @@ enum class RequestCode(var value: Int) { BANKROLL_DETAILS(700), BANKROLL_CREATE(701), BANKROLL_EDIT(702), - NEW_SESSION(800), - NEW_TRANSACTION(801), - NEW_REPORT(802), - NEW_HAND_HISTORY(803), + NEW_DATA(800), + NEW_SESSION(801), + NEW_TRANSACTION(802), + NEW_REPORT(803), + NEW_HAND_HISTORY(804), IMPORT(900), SUBSCRIPTION(901), CURRENCY(902), diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/DataManagerFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/DataManagerFragment.kt index c45a4cff..aeec0866 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/DataManagerFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/data/DataManagerFragment.kt @@ -13,9 +13,9 @@ import net.pokeranalytics.android.R import net.pokeranalytics.android.exceptions.ConfigurationException import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.model.interfaces.SaveValidityStatus -import net.pokeranalytics.android.ui.modules.datalist.DataListActivity import net.pokeranalytics.android.ui.activity.EditableDataActivity import net.pokeranalytics.android.ui.fragment.components.RealmFragment +import net.pokeranalytics.android.ui.modules.datalist.DataListActivity import net.pokeranalytics.android.ui.viewmodel.DataManagerViewModel open class DataManagerFragment : RealmFragment() { @@ -41,7 +41,6 @@ open class DataManagerFragment : RealmFragment() { this.updateMenuUI() } - private var editableMenu: Menu? = null override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -58,8 +57,8 @@ open class DataManagerFragment : RealmFragment() { } /** - * Update menu UI - */ + * Update menu UI + */ private fun updateMenuUI() { editableMenu?.findItem(R.id.delete)?.isVisible = this.deleteButtonShouldAppear editableMenu?.findItem(R.id.save)?.isVisible = this.saveButtonShouldAppear diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/datalist/DataListActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/datalist/DataListActivity.kt index 239a5dc0..71b4463a 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/datalist/DataListActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/datalist/DataListActivity.kt @@ -53,14 +53,20 @@ class DataListActivity : BaseActivity() { getIntent( context, dataType.ordinal, - false, - true, - selection, - itemIds + showAddButton = true, + dialog = true, + selection = selection, + itemIds = itemIds ), RequestCode.PLAYER_SELECTION.ordinal) } - private fun getIntent(context: Context, dataType: Int, showAddButton: Boolean = true, dialog: Boolean = false, selection: Boolean = false, itemIds: Array? = null): Intent { + private fun getIntent(context: Context, + dataType: Int, + showAddButton: Boolean = true, + dialog: Boolean = false, + selection: Boolean = false, + itemIds: Array? = null): Intent { + val intent = Intent(context, DataListActivity::class.java) intent.putExtra(IntentKey.DATA_TYPE.keyName, dataType) intent.putExtra(IntentKey.SHOW_ADD_BUTTON.keyName, showAddButton) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/datalist/DataListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/datalist/DataListFragment.kt index f0c261c9..d3e5acd3 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/datalist/DataListFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/datalist/DataListFragment.kt @@ -20,6 +20,7 @@ import net.pokeranalytics.android.model.interfaces.Identifiable import net.pokeranalytics.android.model.realm.Filter import net.pokeranalytics.android.ui.activity.EditableDataActivity import net.pokeranalytics.android.ui.activity.FiltersActivity +import net.pokeranalytics.android.ui.activity.components.RequestCode import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.extensions.removeMargins @@ -113,11 +114,19 @@ open class DataListFragment : DeletableItemFragment(), RowRepresentableDelegate } this.addButton.setOnClickListener { - EditableDataActivity.newInstance( - requireContext(), - dataType = this.model.dataType.ordinal, - primaryKey = null - ) + + EditableDataActivity.newInstanceForResult(this, + dataType = this.model.dataType, + primaryKey = null, + requestCode = RequestCode.NEW_DATA.value + ) + + +// EditableDataActivity.newInstance( +// requireContext(), +// dataType = this.model.dataType, +// primaryKey = null +// ) } this.addButton.isVisible = this.model.showAddButton @@ -154,14 +163,37 @@ open class DataListFragment : DeletableItemFragment(), RowRepresentableDelegate super.onCreateOptionsMenu(menu, inflater) } + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + when (requestCode) { + RequestCode.NEW_DATA.value -> { + if (this.model.isSelectionInstance) { + + data?.getStringExtra(BundleKey.PRIMARY_KEY.value)?.let { id -> + finishActivityWithSelection(id) + } ?: throw PAIllegalStateException("identifier not found") + + } + } + } + } + + private fun finishActivityWithSelection(identifier: String) { + val intent = Intent() + intent.putExtra(BundleKey.PRIMARY_KEY.value, identifier) + this.activity?.setResult(Activity.RESULT_OK, intent) + this.activity?.finish() + } + override fun onRowSelected(position: Int, row: RowRepresentable, tag: Int) { if (this.model.isSelectionInstance) { // Ends the activity and go back to previous screen val identifier = (row as Identifiable).id - val intent = Intent() - intent.putExtra(BundleKey.PRIMARY_KEY.value, identifier) - this.activity?.setResult(Activity.RESULT_OK, intent) - this.activity?.finish() + finishActivityWithSelection(identifier) +// val intent = Intent() +// intent.putExtra(BundleKey.PRIMARY_KEY.value, identifier) +// this.activity?.setResult(Activity.RESULT_OK, intent) +// this.activity?.finish() } else { when (this.model.dataType) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryAdapter.kt index 5616257f..98736bb4 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryAdapter.kt @@ -35,6 +35,7 @@ import net.pokeranalytics.android.ui.extensions.px import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType import net.pokeranalytics.android.ui.modules.handhistory.model.* import net.pokeranalytics.android.ui.modules.handhistory.views.PositionAdapter +import net.pokeranalytics.android.ui.view.PlayerImageView import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.holder.RowViewHolder import net.pokeranalytics.android.ui.view.rowrepresentable.ViewIdentifier @@ -534,7 +535,7 @@ class HandHistoryAdapter( } itemView.playerImage.setOnImageClickListener(listener) row.playerSetup?.player?.let { player -> - itemView.playerImage.setPlayer(player, isClickable = true) + itemView.playerImage.setPlayer(player, PlayerImageView.Size.SMALL) } // Title diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryFragment.kt index 36d13cae..79effa96 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/HandHistoryFragment.kt @@ -91,9 +91,9 @@ class HandHistoryFragment : RealmFragment(), RowRepresentableDelegate, KeyboardL initData() initUI() - if (this.model.isEdited) { - this.findNextActionToEdit(0) - } +// if (this.model.isEdited) { +// this.findNextActionToEdit(0) +// } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/HandHistoryViewModel.kt b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/HandHistoryViewModel.kt index a305dc9d..77198509 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/HandHistoryViewModel.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/modules/handhistory/model/HandHistoryViewModel.kt @@ -930,7 +930,9 @@ class HandHistoryViewModel : ViewModel(), RowRepresentableDataSource, CardCentra when (val row = this.rowRepresentables[position]) { is PlayerSetupRow -> { val playerSetup = row.playerSetup ?: this.handHistory.createPlayerSetup(position) - playerSetup.player = player + player.realm.executeTransaction { + playerSetup.player = player + } } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/PlayerImageView.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/PlayerImageView.kt index 72bd1537..46b25e90 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/PlayerImageView.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/PlayerImageView.kt @@ -75,7 +75,7 @@ class PlayerImageView : FrameLayout { /** * Set the session data to the view */ - fun setPlayer(player: Player, size: Size = Size.NORMAL, isClickable: Boolean = true) { + fun setPlayer(player: Player, size: Size = Size.NORMAL) { // Initial val playerInitial = if (player.name.isNotEmpty()) { @@ -119,18 +119,17 @@ class PlayerImageView : FrameLayout { } // Stroke & initial - val drawable = playerImageView.playerStroke.background as GradientDrawable? + val drawable = this.playerImageView.playerStroke.background as GradientDrawable? drawable?.setStroke(size.getStrokeSize(), color) - playerImageView.playerInitial.setTextColor(color) - + this.playerImageView.playerInitial.setTextColor(color) // Click listener - if (isClickable) { - playerImageView.playerImageSelection.setOnClickListener { - onImageClickListener?.onClick(it) + if (this.onImageClickListener != null) { + this.playerImageView.playerImageSelection.setOnClickListener { + this.onImageClickListener?.onClick(it) } } else { - playerImageView.playerImageSelection.background = null + this.playerImageView.playerImageSelection.background = null } } @@ -139,6 +138,11 @@ class PlayerImageView : FrameLayout { */ fun setOnImageClickListener(onImageClickListener: OnClickListener) { this.onImageClickListener = onImageClickListener + + this.playerImageView.playerImageSelection.setOnClickListener { + this.onImageClickListener?.onClick(it) + } + } } \ No newline at end of file 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 c1c06fa6..5173c661 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 @@ -533,7 +533,7 @@ enum class RowViewType(private var layoutRes: Int) : ViewIdentifier { if (row is Player) { itemView.findViewById(R.id.playerImage)?.let { playerImageView -> - playerImageView.setPlayer(row, PlayerImageView.Size.SMALL, false) + playerImageView.setPlayer(row, PlayerImageView.Size.SMALL) } itemView.findViewById(R.id.playerName)?.let { textView -> textView.text = row.name diff --git a/build.gradle b/build.gradle index 1d0eadaa..03f38088 100644 --- a/build.gradle +++ b/build.gradle @@ -10,7 +10,7 @@ buildscript { } } dependencies { - classpath 'com.android.tools.build:gradle:3.5.3' + classpath 'com.android.tools.build:gradle:3.6.1' classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version" classpath 'io.realm:realm-gradle-plugin:5.8.0' classpath 'com.google.gms:google-services:4.2.0' diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 6ba7b0db..bd2ca7b0 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ -#Mon Aug 26 10:00:03 CEST 2019 +#Wed Mar 04 11:24:53 CET 2020 distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip