Fixes a crash when creating a custom progress reprot

od
Laurent 6 years ago
parent 909c9d8b50
commit daf567e716
  1. 30
      app/src/main/java/net/pokeranalytics/android/ui/activity/ProgressReportActivity.kt
  2. 18
      app/src/main/java/net/pokeranalytics/android/ui/activity/components/ReportActivity.kt
  3. 9
      app/src/main/java/net/pokeranalytics/android/ui/fragment/report/AbstractReportFragment.kt
  4. 17
      app/src/main/java/net/pokeranalytics/android/ui/viewmodel/ReportViewModel.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()
}

@ -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()
}
}
}

@ -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<EditText>(net.pokeranalytics.android.R.id.reportName)
val nameEditText =
view.findViewById<EditText>(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)
}

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

Loading…
Cancel
Save