Cleanup + fix attempt of report crashing on resuming

od
Laurent 6 years ago
parent ad9aff52a9
commit 58c6838949
  1. 5
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/PokerAnalyticsFragment.kt
  2. 112
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetFragment.kt
  3. 17
      app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetType.kt
  4. 10
      app/src/main/java/net/pokeranalytics/android/ui/fragment/report/AbstractReportFragment.kt

@ -38,6 +38,11 @@ open class PokerAnalyticsFragment : Fragment() {
Crashlytics.log("$this.localClassName onDestroy") Crashlytics.log("$this.localClassName onDestroy")
} }
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
Crashlytics.log("$this.localClassName onActivityCreated")
}
/** /**
* Method called when the activity override onBackPressed and send the information to the fragment * Method called when the activity override onBackPressed and send the information to the fragment
*/ */

@ -42,6 +42,23 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
const val REQUEST_CODE_ADD_NEW_OBJECT = 100 const val REQUEST_CODE_ADD_NEW_OBJECT = 100
private fun newInstance(bottomSheetType: BottomSheetType): BottomSheetFragment {
return when (bottomSheetType) {
BottomSheetType.NONE -> BottomSheetFragment()
BottomSheetType.LIST -> BottomSheetListFragment()
BottomSheetType.LIST_STATIC -> BottomSheetStaticListFragment()
BottomSheetType.LIST_GAME -> BottomSheetListGameFragment()
BottomSheetType.DOUBLE_LIST -> BottomSheetListGameFragment()
BottomSheetType.MULTI_SELECTION -> BottomSheetMultiSelectionFragment()
BottomSheetType.GRID -> BottomSheetTableSizeGridFragment()
BottomSheetType.EDIT_TEXT -> BottomSheetEditTextFragment()
BottomSheetType.EDIT_TEXT_MULTI_LINES -> BottomSheetEditTextMultiLinesFragment()
BottomSheetType.DOUBLE_EDIT_TEXT -> BottomSheetDoubleEditTextFragment()
BottomSheetType.NUMERIC_TEXT -> BottomSheetNumericTextFragment()
BottomSheetType.SUM -> BottomSheetSumFragment()
}
}
fun create( fun create(
fragmentManager: FragmentManager?, fragmentManager: FragmentManager?,
row: RowRepresentable, row: RowRepresentable,
@ -52,7 +69,7 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
isDeletable: Boolean? = false, isDeletable: Boolean? = false,
valueHasPlaceholder: Boolean? = null valueHasPlaceholder: Boolean? = null
): BottomSheetFragment { ): BottomSheetFragment {
val bottomSheetFragment = row.bottomSheetType.newInstance() val bottomSheetFragment = newInstance(row.bottomSheetType)
bottomSheetFragment.show(fragmentManager, "bottomSheet") bottomSheetFragment.show(fragmentManager, "bottomSheet")
bottomSheetFragment.row = row bottomSheetFragment.row = row
bottomSheetFragment.delegate = delegate bottomSheetFragment.delegate = delegate
@ -76,7 +93,6 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
initUI() initUI()
} }
override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) {
super.onActivityResult(requestCode, resultCode, data) super.onActivityResult(requestCode, resultCode, data)
@ -103,57 +119,57 @@ open class BottomSheetFragment : BottomSheetDialogFragment() {
* Init UI * Init UI
*/ */
private fun initUI() { private fun initUI() {
row.let {
bottomSheetToolbar.title = row.localizedTitle(requireContext())
bottomSheetToolbar.inflateMenu(R.menu.toolbar_bottom_sheet)
bottomSheetToolbar.setOnMenuItemClickListener {
false
}
bottomSheetToolbar.menu.findItem(R.id.actionCheck).isVisible = row.bottomSheetType.validationRequired
bottomSheetToolbar.menu.findItem(R.id.actionClear).isVisible = row.bottomSheetType.clearRequired
bottomSheetToolbar.menu.findItem(R.id.actionAdd).isVisible = row.bottomSheetType.addRequired
// Menu
bottomSheetToolbar.menu.findItem(R.id.actionClear).setOnMenuItemClickListener {
delegate.onRowValueChanged(null, row)
dismiss()
true
}
bottomSheetToolbar.menu.findItem(R.id.actionDelete).setOnMenuItemClickListener { bottomSheetToolbar.title = row.localizedTitle(requireContext())
delegate.onRowDeleted(row) bottomSheetToolbar.inflateMenu(R.menu.toolbar_bottom_sheet)
dismiss() bottomSheetToolbar.setOnMenuItemClickListener {
true false
} }
bottomSheetToolbar.menu.findItem(R.id.actionCheck).isVisible = row.bottomSheetType.validationRequired
bottomSheetToolbar.menu.findItem(R.id.actionClear).isVisible = row.bottomSheetType.clearRequired
bottomSheetToolbar.menu.findItem(R.id.actionAdd).isVisible = row.bottomSheetType.addRequired
bottomSheetToolbar.menu.findItem(R.id.actionAdd).setOnMenuItemClickListener { // Menu
val liveData = when (row) { bottomSheetToolbar.menu.findItem(R.id.actionClear).setOnMenuItemClickListener {
SessionRow.GAME -> LiveData.GAME delegate.onRowValueChanged(null, row)
SessionRow.BANKROLL, TransactionRow.BANKROLL -> LiveData.BANKROLL dismiss()
SessionRow.LOCATION -> LiveData.LOCATION true
SessionRow.TOURNAMENT_NAME -> LiveData.TOURNAMENT_NAME }
SessionRow.TOURNAMENT_FEATURE -> LiveData.TOURNAMENT_FEATURE
TransactionRow.TYPE -> LiveData.TRANSACTION_TYPE bottomSheetToolbar.menu.findItem(R.id.actionDelete).setOnMenuItemClickListener {
else -> throw PAIllegalStateException("row $row does not have an associated LiveData value") delegate.onRowDeleted(row)
} dismiss()
true
EditableDataActivity.newInstanceForResult( }
this,
liveData, bottomSheetToolbar.menu.findItem(R.id.actionAdd).setOnMenuItemClickListener {
requestCode = REQUEST_CODE_ADD_NEW_OBJECT val liveData = when (row) {
) SessionRow.GAME -> LiveData.GAME
SessionRow.BANKROLL, TransactionRow.BANKROLL -> LiveData.BANKROLL
true SessionRow.LOCATION -> LiveData.LOCATION
} SessionRow.TOURNAMENT_NAME -> LiveData.TOURNAMENT_NAME
bottomSheetToolbar.menu.findItem(R.id.actionCheck).setOnMenuItemClickListener { SessionRow.TOURNAMENT_FEATURE -> LiveData.TOURNAMENT_FEATURE
this.delegate.onRowValueChanged(getValue(), row) TransactionRow.TYPE -> LiveData.TRANSACTION_TYPE
dismiss() else -> throw PAIllegalStateException("row $row does not have an associated LiveData value")
true
} }
bottomSheetToolbar.menu.findItem(R.id.actionClear).isVisible = isClearable EditableDataActivity.newInstanceForResult(
bottomSheetToolbar.menu.findItem(R.id.actionDelete).isVisible = isDeletable this,
liveData,
requestCode = REQUEST_CODE_ADD_NEW_OBJECT
)
true
}
bottomSheetToolbar.menu.findItem(R.id.actionCheck).setOnMenuItemClickListener {
this.delegate.onRowValueChanged(getValue(), row)
dismiss()
true
} }
bottomSheetToolbar.menu.findItem(R.id.actionClear).isVisible = isClearable
bottomSheetToolbar.menu.findItem(R.id.actionDelete).isVisible = isDeletable
} }
/** /**

@ -14,23 +14,6 @@ enum class BottomSheetType {
NUMERIC_TEXT, NUMERIC_TEXT,
SUM; SUM;
fun newInstance(): BottomSheetFragment {
return when (this) {
NONE -> BottomSheetFragment()
LIST -> BottomSheetListFragment()
LIST_STATIC -> BottomSheetStaticListFragment()
LIST_GAME -> BottomSheetListGameFragment()
DOUBLE_LIST -> BottomSheetListGameFragment()
MULTI_SELECTION -> BottomSheetMultiSelectionFragment()
GRID -> BottomSheetTableSizeGridFragment()
EDIT_TEXT -> BottomSheetEditTextFragment()
EDIT_TEXT_MULTI_LINES -> BottomSheetEditTextMultiLinesFragment()
DOUBLE_EDIT_TEXT -> BottomSheetDoubleEditTextFragment()
NUMERIC_TEXT -> BottomSheetNumericTextFragment()
SUM -> BottomSheetSumFragment()
}
}
val validationRequired: Boolean val validationRequired: Boolean
get() = when (this) { get() = when (this) {
LIST, LIST_GAME, LIST_STATIC, GRID, DOUBLE_LIST -> false LIST, LIST_GAME, LIST_STATIC, GRID, DOUBLE_LIST -> false

@ -8,6 +8,7 @@ import android.widget.EditText
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import kotlinx.android.synthetic.main.fragment_progress_report.* import kotlinx.android.synthetic.main.fragment_progress_report.*
import net.pokeranalytics.android.calculus.Calculator
import net.pokeranalytics.android.calculus.Report import net.pokeranalytics.android.calculus.Report
import net.pokeranalytics.android.exceptions.PAIllegalStateException import net.pokeranalytics.android.exceptions.PAIllegalStateException
import net.pokeranalytics.android.model.CustomFieldCriteria import net.pokeranalytics.android.model.CustomFieldCriteria
@ -41,6 +42,15 @@ abstract class AbstractReportFragment : DataManagerFragment() {
this.deleteButtonShouldAppear = (this.primaryKey != null) this.deleteButtonShouldAppear = (this.primaryKey != null)
} }
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
if (!this::_selectedReport.isInitialized) {
this._selectedReport = Report(Calculator.Options())
}
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)

Loading…
Cancel
Save