diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetFragment.kt index 000924b8..0524bc86 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetFragment.kt @@ -27,6 +27,15 @@ import net.pokeranalytics.android.ui.view.rowrepresentable.TransactionRow import net.pokeranalytics.android.ui.viewmodel.BottomSheetViewModel import java.util.* +class BottomSheetConfig(var row: RowRepresentable, + var delegate: RowRepresentableDelegate, + var rowRepresentableEditDescriptors: ArrayList?, + var isClearable: Boolean? = true, + var currentCurrency: Currency? = null, + var isDeletable: Boolean? = false, + var valueHasPlaceholder: Boolean? = null) { +} + open class BottomSheetFragment : BottomSheetDialogFragment() { @@ -37,17 +46,10 @@ open class BottomSheetFragment : BottomSheetDialogFragment() { ViewModelProviders.of(this).get(BottomSheetViewModel::class.java) } - var row: RowRepresentable? = null - var delegate: RowRepresentableDelegate? = null - var currentCurrency: Currency? = null - var valueAsPlaceholder: Boolean = false - - private var isClearable: Boolean = true - private var isDeletable: Boolean = false - private var rowRepresentableEditDescriptors: ArrayList? = null - companion object { + private var config: BottomSheetConfig? = null + const val REQUEST_CODE_ADD_NEW_OBJECT = 100 fun create( @@ -62,14 +64,7 @@ open class BottomSheetFragment : BottomSheetDialogFragment() { ): BottomSheetFragment { val bottomSheetFragment = newInstance(row.bottomSheetType) bottomSheetFragment.show(fragmentManager, "bottomSheet") -// bottomSheetFragment.configure(row, delegate, rowRepresentableEditDescriptors, isClearable, currentCurrency, isDeletable, valueHasPlaceholder) - bottomSheetFragment.row = row - bottomSheetFragment.delegate = delegate - bottomSheetFragment.rowRepresentableEditDescriptors = rowRepresentableEditDescriptors - bottomSheetFragment.isClearable = isClearable ?: true - bottomSheetFragment.isDeletable = isDeletable ?: true - bottomSheetFragment.valueAsPlaceholder = valueHasPlaceholder ?: true - bottomSheetFragment.currentCurrency = currentCurrency + this.config = BottomSheetConfig(row, delegate, rowRepresentableEditDescriptors, isClearable, currentCurrency, isDeletable, valueHasPlaceholder) return bottomSheetFragment } @@ -92,24 +87,6 @@ open class BottomSheetFragment : BottomSheetDialogFragment() { } - private fun configure(row: RowRepresentable, - delegate: RowRepresentableDelegate, - rowRepresentableEditDescriptors: ArrayList?, - isClearable: Boolean? = true, - currentCurrency: Currency? = null, - isDeletable: Boolean? = false, - valueHasPlaceholder: Boolean? = null) { - - this.viewModel.row = row - this.viewModel.delegate = delegate - this.viewModel.rowRepresentableEditDescriptors = rowRepresentableEditDescriptors - this.viewModel.isClearable = isClearable ?: true - this.viewModel.currentCurrency = currentCurrency - this.viewModel.isDeletable = isDeletable ?: false - this.viewModel.valueAsPlaceholder = valueHasPlaceholder ?: false - - } - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { //TODO: When dependency 'com.google.android.material:material:1.1.0' will be available in stable version, upgrade and remove that val contextThemeWrapper = ContextThemeWrapper(activity, R.style.PokerAnalyticsTheme) @@ -118,11 +95,28 @@ open class BottomSheetFragment : BottomSheetDialogFragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - this.configure(this.row!!, this.delegate!!, this.rowRepresentableEditDescriptors, this.isClearable, this.currentCurrency, this.isDeletable, this.valueAsPlaceholder) + + config?.let { + this.configure(it) + config = null + } + this.viewModel.load() initUI() } + private fun configure(configuration: BottomSheetConfig) { + + this.viewModel.row = configuration.row + this.viewModel.delegate = configuration.delegate + this.viewModel.rowRepresentableEditDescriptors = configuration.rowRepresentableEditDescriptors + this.viewModel.isClearable = configuration.isClearable ?: true + this.viewModel.currentCurrency = configuration.currentCurrency + this.viewModel.isDeletable = configuration.isDeletable ?: false + this.viewModel.valueAsPlaceholder = configuration.valueHasPlaceholder ?: false + + } + override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { super.onActivityResult(requestCode, resultCode, data)