From 7a9f5a8364fc19df08fa05048752529c21fb6960 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 2 May 2019 16:30:00 +0200 Subject: [PATCH] Improve Bankroll management --- .../ui/fragment/BankrollDetailsFragment.kt | 43 +++++++++++------ .../ui/fragment/BankrollEditDataFragment.kt | 7 +++ .../android/ui/fragment/BankrollFragment.kt | 46 +++++++++++-------- 3 files changed, 64 insertions(+), 32 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt index c50a58f1..c2a49935 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt @@ -1,5 +1,7 @@ package net.pokeranalytics.android.ui.fragment +import android.app.Activity.RESULT_OK +import android.content.Intent import android.os.Bundle import android.view.* import androidx.recyclerview.widget.LinearLayoutManager @@ -10,6 +12,7 @@ import net.pokeranalytics.android.calculus.ComputedStat import net.pokeranalytics.android.calculus.Stat import net.pokeranalytics.android.calculus.bankroll.BankrollReport import net.pokeranalytics.android.model.LiveData +import net.pokeranalytics.android.ui.activity.DataListActivity import net.pokeranalytics.android.ui.activity.EditableDataActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter @@ -19,7 +22,6 @@ import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.ui.view.rowrepresentable.CustomizableRowRepresentable -import timber.log.Timber class BankrollDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSource, RowRepresentableDelegate { @@ -56,6 +58,18 @@ class BankrollDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable initData() } + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { + super.onActivityResult(requestCode, resultCode, data) + if (requestCode == REQUEST_CODE_EDIT && resultCode == RESULT_OK) { + if (data != null && data.getBooleanExtra(DataListActivity.IntentKey.ITEM_DELETED.keyName, false)) { + activity?.setResult(RESULT_OK, data) + activity?.finish() + } else { + updateMenuUI() + } + } + } + override fun adapterRows(): List? { return rows } @@ -107,21 +121,13 @@ class BankrollDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable parentActivity = activity as PokerAnalyticsActivity + // Avoid a bug during setting the title + toolbar.title = "" + parentActivity.setSupportActionBar(toolbar) parentActivity.supportActionBar?.setDisplayHomeAsUpEnabled(true) setHasOptionsMenu(true) - - Timber.d("bankrollReport: ${bankrollReport.setup.bankroll} ${bankrollReport.setup.virtualBankroll}") - - if (bankrollReport.setup.virtualBankroll) { - toolbar.title = getString(R.string.total) - bankrollDetailsMenu?.findItem(R.id.settings)?.isVisible = false - } else { - toolbar.title = bankrollReport.setup.bankroll?.name - bankrollDetailsMenu?.findItem(R.id.settings)?.isVisible = true - } - - toolbar.title = if (bankrollReport.setup.virtualBankroll) getString(R.string.total) else bankrollReport.setup.bankroll?.name + updateMenuUI() bankrollAdapter = RowRepresentableAdapter(this, this) @@ -138,7 +144,16 @@ class BankrollDetailsFragment : PokerAnalyticsFragment(), StaticRowRepresentable * Update menu UI */ private fun updateMenuUI() { - bankrollDetailsMenu?.findItem(R.id.settings)?.isVisible = !bankrollReport.setup.virtualBankroll + if (bankrollReport.setup.virtualBankroll) { + toolbar.title = getString(R.string.total) + collapsingToolbar.title = getString(R.string.total) + bankrollDetailsMenu?.findItem(R.id.settings)?.isVisible = false + } else { + toolbar.title = bankrollReport.setup.bankroll?.name + collapsingToolbar.title = bankrollReport.setup.bankroll?.name + bankrollDetailsMenu?.findItem(R.id.settings)?.isVisible = true + } + } /** diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollEditDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollEditDataFragment.kt index bdecaa46..67947540 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollEditDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollEditDataFragment.kt @@ -3,6 +3,8 @@ package net.pokeranalytics.android.ui.fragment import android.app.Activity.RESULT_OK import android.content.Intent import android.os.Bundle +import android.view.Menu +import android.view.MenuInflater import android.view.View import net.pokeranalytics.android.R import net.pokeranalytics.android.api.CurrencyConverterApi @@ -54,6 +56,11 @@ class BankrollEditDataFragment : EditableDataFragment(), StaticRowRepresentableD } ?: false } + override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { + super.onCreateOptionsMenu(menu, inflater) + menu?.findItem(R.id.delete)?.isVisible = false + } + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt index 3bf48d3b..442c6bab 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt @@ -6,7 +6,6 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import androidx.appcompat.app.AlertDialog import androidx.recyclerview.widget.LinearLayoutManager import com.google.android.material.snackbar.Snackbar import io.realm.Realm @@ -28,7 +27,6 @@ import net.pokeranalytics.android.calculus.bankroll.BankrollCalculator import net.pokeranalytics.android.calculus.bankroll.BankrollReport import net.pokeranalytics.android.calculus.bankroll.BankrollReportSetup import net.pokeranalytics.android.model.LiveData -import net.pokeranalytics.android.model.interfaces.Deletable import net.pokeranalytics.android.model.realm.Bankroll import net.pokeranalytics.android.ui.activity.BankrollDetailsActivity import net.pokeranalytics.android.ui.activity.DataListActivity @@ -97,6 +95,9 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou } } } + + initData() + //TODO: Refresh bankroll } override fun adapterRows(): List? { @@ -117,6 +118,7 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou else -> { if (bankrollReportForRow.containsKey(row)) { bankrollReportForRow[row]?.let { bankrollReport -> + lastItemClickedPosition = position BankrollDetailsActivity.newInstanceForResult(this, bankrollReport, REQUEST_CODE_DETAILS) } } @@ -166,7 +168,6 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou bankrollReportForRow[row] = bankrollReport } - if (!isDetached) { bankrollAdapter.notifyDataSetChanged() } @@ -213,32 +214,41 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou */ private fun deleteItem(position: Int) { + //TODO: Get bankroll from bankrollReport and delete it + + /* if (isDetached || activity == null) { return } // Save the delete position & create a copy of the object - val mRecentlyDeletedItem = rowRepresentableForPosition(position) + var mRecentlyDeletedItem = rowRepresentableForPosition(position) lastDeletedItemPosition = position - if (mRecentlyDeletedItem is RealmObject) { - // Check if the object is valid for the deletion - if ((mRecentlyDeletedItem as Deletable).isValidForDelete(this.getRealm())) { - deletedItem = getRealm().copyFromRealm(mRecentlyDeletedItem) - getRealm().executeTransaction { - mRecentlyDeletedItem.deleteFromRealm() + if (mRecentlyDeletedItem is BankrollReport) { + + if (mRecentlyDeletedItem is RealmObject) { + // Check if the object is valid for the deletion + if ((mRecentlyDeletedItem as Deletable).isValidForDelete(this.getRealm())) { + deletedItem = getRealm().copyFromRealm(mRecentlyDeletedItem) + getRealm().executeTransaction { + mRecentlyDeletedItem.deleteFromRealm() + } + bankrollAdapter.notifyItemRemoved(position) + showUndoSnackBar() + } else { + bankrollAdapter.notifyItemChanged(position) + val builder = AlertDialog.Builder(requireContext()) + .setMessage((mRecentlyDeletedItem as Deletable).getFailedDeleteMessage()) + .setNegativeButton(R.string.ok, null) + builder.show() } - bankrollAdapter.notifyItemRemoved(position) - showUndoSnackBar() - } else { - bankrollAdapter.notifyItemChanged(position) - val builder = AlertDialog.Builder(requireContext()) - .setMessage((mRecentlyDeletedItem as Deletable).getFailedDeleteMessage()) - .setNegativeButton(R.string.ok, null) - builder.show() } + } + */ + } /**