diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/ProgressReportActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/ProgressReportActivity.kt index ef9fa3bf..c01a5f83 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/ProgressReportActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/ProgressReportActivity.kt @@ -21,13 +21,16 @@ class ProgressReportActivity : ReportActivity() { * Default constructor */ fun newInstance(context: Context, report: Report, title: String, stat: Stat? = null, displayAggregationChoices: Boolean = true) { - ReportViewModel.parameters = ReportParameters(report, title, stat, showAggregationChoices = displayAggregationChoices) + + val parameters = ReportParameters(report, title, stat, showAggregationChoices = displayAggregationChoices) + ReportViewModel.defineParameters(parameters) val intent = Intent(context, ProgressReportActivity::class.java) context.startActivity(intent) } fun newInstanceForResult(fragment: Fragment, report: Report, title: String, stat: Stat? = null, displayAggregationChoices: Boolean = true) { - ReportViewModel.parameters = ReportParameters(report, title, stat, showAggregationChoices = displayAggregationChoices) + val parameters = ReportParameters(report, title, stat, showAggregationChoices = displayAggregationChoices) + ReportViewModel.defineParameters(parameters) val intent = Intent(fragment.context, ProgressReportActivity::class.java) fragment.startActivityForResult(intent, RequestCode.DEFAULT.value) } @@ -45,28 +48,9 @@ class ProgressReportActivity : ReportActivity() { */ private fun initUI() { - ReportViewModel.parameters?.let { - this.viewModel.report = it.report - this.viewModel.title = it.title - this.viewModel.stat = it.stat ?: it.report.options.stats.first() - this.viewModel.showAggregationChoices = it.showAggregationChoices - } - - ReportViewModel.parameters = null - -// -// parameters?.let { -// val report = it.report -// val stat = it.stat ?: report.options.stats.first() -// statisticDetailsFragment.setData(report, stat, it.showAggregationChoices, it.title) -// parameters = null -// } ?: run { -// throw PAIllegalStateException("Request to show Progress Activity with null ReportParameters") -// } - - val statisticDetailsFragment = ProgressReportFragment() + val progressFragment = ProgressReportFragment() val fragmentTransaction = supportFragmentManager.beginTransaction() - fragmentTransaction.add(R.id.statisticDetailsContainer, statisticDetailsFragment) + fragmentTransaction.add(R.id.statisticDetailsContainer, progressFragment) fragmentTransaction.commit() } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/components/ReportActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/components/ReportActivity.kt index ab2ec308..45794f6d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/components/ReportActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/components/ReportActivity.kt @@ -24,14 +24,16 @@ abstract class ReportActivity : PokerAnalyticsActivity() { */ fun newInstance(context: Context, report: Report, reportTitle: String, stat: Stat? = null) { val options = report.options - ReportViewModel.parameters = ReportParameters(report, reportTitle, stat) + val parameters = ReportParameters(report, reportTitle, stat) + ReportViewModel.defineParameters(parameters) val intent = Intent(context, options.display.activityClass) context.startActivity(intent) } fun newInstanceForResult(fragment: Fragment, report: Report, reportTitle: String, stat: Stat? = null) { val options = report.options - ReportViewModel.parameters = ReportParameters(report, reportTitle, stat) + val parameters = ReportParameters(report, reportTitle, stat) + ReportViewModel.defineParameters(parameters) val intent = Intent(fragment.requireContext(), options.display.activityClass) fragment.startActivityForResult(intent, RequestCode.DEFAULT.value) } @@ -40,17 +42,19 @@ abstract class ReportActivity : PokerAnalyticsActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + this.initViewModelWithParameters() + } + + fun initViewModelWithParameters() { ReportViewModel.parameters?.let { this.viewModel.report = it.report this.viewModel.title = it.title - this.viewModel.stat = it.stat + this.viewModel.stat = it.stat ?: it.report.options.stats.first() this.viewModel.showAggregationChoices = it.showAggregationChoices - } - - ReportViewModel.parameters = null + ReportViewModel.resetParameters() + } } - } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/AbstractReportFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/AbstractReportFragment.kt index c7636b84..378e628b 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/AbstractReportFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/report/AbstractReportFragment.kt @@ -31,9 +31,9 @@ abstract class AbstractReportFragment : DataManagerFragment() { } val stat: Stat - get() { - return this.viewModel.stat!! - } + get() { + return this.viewModel.stat!! + } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -62,7 +62,8 @@ abstract class AbstractReportFragment : DataManagerFragment() { // Inflate and set the layout for the dialog // Pass null as the parent view because its going in the dialog layout val view = inflater.inflate(net.pokeranalytics.android.R.layout.dialog_edit_text, null) - val nameEditText = view.findViewById(net.pokeranalytics.android.R.id.reportName) + val nameEditText = + view.findViewById(net.pokeranalytics.android.R.id.reportName) nameEditText.inputType = InputType.TYPE_TEXT_FLAG_CAP_SENTENCES this.primaryKey?.let { id -> @@ -84,12 +85,14 @@ abstract class AbstractReportFragment : DataManagerFragment() { val dialog = builder.create() dialog.setOnShowListener { nameEditText.requestFocus() - val s = ContextCompat.getSystemService(requireContext(), InputMethodManager::class.java) + val s = + ContextCompat.getSystemService(requireContext(), InputMethodManager::class.java) s?.toggleSoftInput(InputMethodManager.SHOW_FORCED, 0) } dialog.setOnDismissListener { - val s = ContextCompat.getSystemService(requireContext(), InputMethodManager::class.java) + val s = + ContextCompat.getSystemService(requireContext(), InputMethodManager::class.java) s?.toggleSoftInput(InputMethodManager.HIDE_IMPLICIT_ONLY, 0) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/ReportViewModel.kt b/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/ReportViewModel.kt index b1d31018..aeb71c03 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/ReportViewModel.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/viewmodel/ReportViewModel.kt @@ -8,8 +8,23 @@ import net.pokeranalytics.android.ui.activity.components.ReportParameters class ReportViewModel : ViewModel() { companion object { + // Unparcel fails when setting a custom Parcelable object on Entry so we use a static reference to passe objects - var parameters: ReportParameters? = null + private var _parameters: ReportParameters? = null + + val parameters: ReportParameters? + get() { + return this._parameters + } + + fun defineParameters(parameters: ReportParameters) { + this._parameters = parameters + } + + fun resetParameters() { + this._parameters = null + } + } var report: Report? = null