From ab6f102df08fef15293c43ff523b65604e2642b2 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 2 May 2019 14:57:57 +0200 Subject: [PATCH] Link Bankroll & Bankroll details --- app/src/main/AndroidManifest.xml | 5 + .../ui/activity/BankrollDetailsActivity.kt | 48 ++++++ .../ui/fragment/BankrollDetailsFragment.kt | 151 ++++++++++++++++++ .../android/ui/fragment/BankrollFragment.kt | 38 +++-- .../res/layout/activity_bankroll_details.xml | 7 + .../res/layout/fragment_bankroll_details.xml | 56 +++++++ .../res/menu/toolbar_bankroll_details.xml | 11 ++ 7 files changed, 299 insertions(+), 17 deletions(-) create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/activity/BankrollDetailsActivity.kt create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollDetailsFragment.kt create mode 100644 app/src/main/res/layout/activity_bankroll_details.xml create mode 100644 app/src/main/res/layout/fragment_bankroll_details.xml create mode 100644 app/src/main/res/menu/toolbar_bankroll_details.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8c2989ed..7ef8c9cd 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -40,6 +40,11 @@ android:launchMode="singleTop" android:screenOrientation="portrait" /> + + = ArrayList() + + // Life Cycle + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.fragment_bankroll_details, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initUI() + initData() + } + + override fun adapterRows(): List? { + return rows + } + + override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { + + } + + override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { + menu?.clear() + inflater?.inflate(R.menu.toolbar_comparison_chart, menu) + this.bankrollDetailsMenu = menu + updateMenuUI() + super.onCreateOptionsMenu(menu, inflater) + } + + override fun onOptionsItemSelected(item: MenuItem?): Boolean { + when (item!!.itemId) { + R.id.settings -> editBankroll() + } + return true + } + + // Business + + /** + * Init data + */ + private fun initData() { + + rows.clear() + + rows.add(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = R.string.global)) + + val totalComputedStat = ComputedStat(Stat.NET_RESULT, bankrollReport.total) + val netComputedStat = ComputedStat(Stat.NET_RESULT, bankrollReport.netResult) + val netBankedComputedStat = ComputedStat(Stat.NET_RESULT, bankrollReport.netBanked) + + rows.add(CustomizableRowRepresentable(RowViewType.TITLE_VALUE, resId = R.string.bankroll, computedStat = totalComputedStat)) + rows.add(CustomizableRowRepresentable(RowViewType.TITLE_VALUE, resId = R.string.net_result, computedStat = netComputedStat)) + rows.add(CustomizableRowRepresentable(RowViewType.TITLE_VALUE, resId = R.string.net_banked, computedStat = netBankedComputedStat)) + + } + + /** + * Init UI + */ + private fun initUI() { + + parentActivity = activity as PokerAnalyticsActivity + + 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 + + bankrollAdapter = RowRepresentableAdapter(this, this) + + val viewManager = LinearLayoutManager(requireContext()) + + recyclerView.apply { + setHasFixedSize(true) + layoutManager = viewManager + adapter = bankrollAdapter + } + } + + /** + * Update menu UI + */ + private fun updateMenuUI() { + bankrollDetailsMenu?.findItem(R.id.settings)?.isVisible = !bankrollReport.setup.virtualBankroll + } + + /** + * Open Bankroll edit activity + */ + private fun editBankroll() { + EditableDataActivity.newInstanceForResult(this, LiveData.BANKROLL.ordinal, bankrollReport.setup.bankroll?.id, REQUEST_CODE_EDIT) + } + +} \ No newline at end of file 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 dd25a45f..53bf74e9 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 @@ -32,6 +32,7 @@ import net.pokeranalytics.android.model.Criteria 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 import net.pokeranalytics.android.ui.activity.EditableDataActivity import net.pokeranalytics.android.ui.activity.StatisticDetailsActivity @@ -39,8 +40,6 @@ import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.adapter.StaticRowRepresentableDataSource -import net.pokeranalytics.android.ui.extensions.toast -import net.pokeranalytics.android.ui.fragment.DataListFragment.Companion.REQUEST_CODE_DETAILS import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType @@ -54,6 +53,8 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou companion object { + const val REQUEST_CODE_DETAILS = 1000 + /** * Create new instance */ @@ -106,7 +107,7 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { Timber.d("onRowSelected: $row") - when(row) { + when (row) { is GraphRow -> { row.report.results.firstOrNull()?.group?.let { computableGroup -> StatisticDetailsActivity.newInstance(requireContext(), row.stat, computableGroup, row.report, false, row.title) @@ -114,8 +115,9 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou } else -> { if (bankrollReportForRow.containsKey(row)) { - val bankrollReport = bankrollReportForRow[row] - toast("${bankrollReport?.total}") + bankrollReportForRow[row]?.let { bankrollReport -> + BankrollDetailsActivity.newInstanceForResult(this, bankrollReport, REQUEST_CODE_DETAILS) + } } } } @@ -156,22 +158,24 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou // Bankrolls rows.add(CustomizableRowRepresentable(RowViewType.HEADER_TITLE, resId = R.string.bankrolls)) - val bankrolls = LiveData.BANKROLL.items(realm) as RealmResults - - bankrolls.forEach { - val bankrollReportSetup = BankrollReportSetup(it) - val bankrollReport = BankrollCalculator.computeReport(bankrollReportSetup) - val computedStat = ComputedStat(Stat.NET_RESULT, bankrollReport.total) - val row = CustomizableRowRepresentable(RowViewType.TITLE_VALUE_ARROW, title = it.name, computedStat = computedStat, isSelectable = true) - - rows.add(row) - bankrollReportForRow[row] = bankrollReport - } - realm.close() Timber.d("initData: ${System.currentTimeMillis() - startDate.time}ms") launch(Dispatchers.Main) { + + val bankrolls = LiveData.BANKROLL.items(getRealm()) as RealmResults + + bankrolls.forEach { + val bankrollReportSetup = BankrollReportSetup(it) + val bankrollReport = BankrollCalculator.computeReport(bankrollReportSetup) + val computedStat = ComputedStat(Stat.NET_RESULT, bankrollReport.total) + val row = CustomizableRowRepresentable(RowViewType.TITLE_VALUE_ARROW, title = it.name, computedStat = computedStat, isSelectable = true) + + rows.add(row) + bankrollReportForRow[row] = bankrollReport + } + + if (!isDetached) { bankrollAdapter.notifyDataSetChanged() } diff --git a/app/src/main/res/layout/activity_bankroll_details.xml b/app/src/main/res/layout/activity_bankroll_details.xml new file mode 100644 index 00000000..70454fb9 --- /dev/null +++ b/app/src/main/res/layout/activity_bankroll_details.xml @@ -0,0 +1,7 @@ + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_bankroll_details.xml b/app/src/main/res/layout/fragment_bankroll_details.xml new file mode 100644 index 00000000..0cf1c9b1 --- /dev/null +++ b/app/src/main/res/layout/fragment_bankroll_details.xml @@ -0,0 +1,56 @@ + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/menu/toolbar_bankroll_details.xml b/app/src/main/res/menu/toolbar_bankroll_details.xml new file mode 100644 index 00000000..2132026e --- /dev/null +++ b/app/src/main/res/menu/toolbar_bankroll_details.xml @@ -0,0 +1,11 @@ + + + + + + \ No newline at end of file