|
|
|
@ -10,22 +10,23 @@ import android.view.View |
|
|
|
import android.view.ViewGroup |
|
|
|
import android.view.ViewGroup |
|
|
|
import android.view.WindowManager |
|
|
|
import android.view.WindowManager |
|
|
|
import androidx.appcompat.view.ContextThemeWrapper |
|
|
|
import androidx.appcompat.view.ContextThemeWrapper |
|
|
|
import androidx.fragment.app.FragmentManager |
|
|
|
import androidx.lifecycle.ViewModelProvider |
|
|
|
import androidx.lifecycle.ViewModelProviders |
|
|
|
|
|
|
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment |
|
|
|
import com.google.android.material.bottomsheet.BottomSheetDialogFragment |
|
|
|
import kotlinx.android.synthetic.main.fragment_bottom_sheet.* |
|
|
|
import kotlinx.android.synthetic.main.fragment_bottom_sheet.* |
|
|
|
import net.pokeranalytics.android.R |
|
|
|
import net.pokeranalytics.android.R |
|
|
|
import net.pokeranalytics.android.exceptions.PAIllegalStateException |
|
|
|
import net.pokeranalytics.android.exceptions.PAIllegalStateException |
|
|
|
import net.pokeranalytics.android.model.LiveData |
|
|
|
import net.pokeranalytics.android.model.LiveData |
|
|
|
import net.pokeranalytics.android.ui.modules.data.EditableDataActivity |
|
|
|
|
|
|
|
import net.pokeranalytics.android.ui.activity.components.BaseActivity |
|
|
|
import net.pokeranalytics.android.ui.activity.components.BaseActivity |
|
|
|
|
|
|
|
import net.pokeranalytics.android.ui.activity.components.RootBottomSheetViewModel |
|
|
|
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter |
|
|
|
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter |
|
|
|
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate |
|
|
|
import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate |
|
|
|
|
|
|
|
import net.pokeranalytics.android.ui.modules.data.EditableDataActivity |
|
|
|
import net.pokeranalytics.android.ui.view.RowRepresentable |
|
|
|
import net.pokeranalytics.android.ui.view.RowRepresentable |
|
|
|
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor |
|
|
|
import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor |
|
|
|
import net.pokeranalytics.android.ui.view.rowrepresentable.SessionRow |
|
|
|
import net.pokeranalytics.android.ui.view.rowrepresentable.SessionRow |
|
|
|
import net.pokeranalytics.android.ui.view.rowrepresentable.TransactionRow |
|
|
|
import net.pokeranalytics.android.ui.view.rowrepresentable.TransactionRow |
|
|
|
import net.pokeranalytics.android.ui.viewmodel.BottomSheetViewModel |
|
|
|
import net.pokeranalytics.android.ui.viewmodel.BottomSheetViewModel |
|
|
|
|
|
|
|
import net.pokeranalytics.android.ui.viewmodel.BottomSheetViewModelFactory |
|
|
|
import java.util.* |
|
|
|
import java.util.* |
|
|
|
|
|
|
|
|
|
|
|
class BottomSheetConfig(var row: RowRepresentable, |
|
|
|
class BottomSheetConfig(var row: RowRepresentable, |
|
|
|
@ -40,12 +41,9 @@ class BottomSheetConfig(var row: RowRepresentable, |
|
|
|
|
|
|
|
|
|
|
|
open class BottomSheetFragment : BottomSheetDialogFragment() { |
|
|
|
open class BottomSheetFragment : BottomSheetDialogFragment() { |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
protected lateinit var model: BottomSheetViewModel |
|
|
|
* A view model used to store potential bottom sheet values |
|
|
|
|
|
|
|
*/ |
|
|
|
private lateinit var bottomSheetViewModel: RootBottomSheetViewModel |
|
|
|
protected val model: BottomSheetViewModel by lazy { |
|
|
|
|
|
|
|
ViewModelProviders.of(this).get(BottomSheetViewModel::class.java) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private var delegate: RowRepresentableDelegate? = null |
|
|
|
private var delegate: RowRepresentableDelegate? = null |
|
|
|
|
|
|
|
|
|
|
|
@ -58,7 +56,7 @@ open class BottomSheetFragment : BottomSheetDialogFragment() { |
|
|
|
const val REQUEST_CODE_ADD_NEW_OBJECT = 100 |
|
|
|
const val REQUEST_CODE_ADD_NEW_OBJECT = 100 |
|
|
|
|
|
|
|
|
|
|
|
fun create( |
|
|
|
fun create( |
|
|
|
fragmentManager: FragmentManager, |
|
|
|
activity: BaseActivity, |
|
|
|
row: RowRepresentable, |
|
|
|
row: RowRepresentable, |
|
|
|
delegate: RowRepresentableDelegate, |
|
|
|
delegate: RowRepresentableDelegate, |
|
|
|
rowRepresentableEditDescriptors: List<RowRepresentableEditDescriptor>?, |
|
|
|
rowRepresentableEditDescriptors: List<RowRepresentableEditDescriptor>?, |
|
|
|
@ -69,7 +67,8 @@ open class BottomSheetFragment : BottomSheetDialogFragment() { |
|
|
|
alternativeLabels: Boolean = false |
|
|
|
alternativeLabels: Boolean = false |
|
|
|
): BottomSheetFragment { |
|
|
|
): BottomSheetFragment { |
|
|
|
val bottomSheetFragment = newInstance(row.bottomSheetType) |
|
|
|
val bottomSheetFragment = newInstance(row.bottomSheetType) |
|
|
|
bottomSheetFragment.show(fragmentManager, "bottomSheet") |
|
|
|
activity.setBottomSheetParameters(row, delegate) |
|
|
|
|
|
|
|
bottomSheetFragment.show(activity.supportFragmentManager, "bottomSheet") |
|
|
|
this.config = BottomSheetConfig(row, delegate, rowRepresentableEditDescriptors, isClearable, currentCurrency, isDeletable, valueHasPlaceholder, alternativeLabels) |
|
|
|
this.config = BottomSheetConfig(row, delegate, rowRepresentableEditDescriptors, isClearable, currentCurrency, isDeletable, valueHasPlaceholder, alternativeLabels) |
|
|
|
return bottomSheetFragment |
|
|
|
return bottomSheetFragment |
|
|
|
} |
|
|
|
} |
|
|
|
@ -99,6 +98,21 @@ open class BottomSheetFragment : BottomSheetDialogFragment() { |
|
|
|
return inflater.cloneInContext(contextThemeWrapper).inflate(R.layout.fragment_bottom_sheet, container, false) |
|
|
|
return inflater.cloneInContext(contextThemeWrapper).inflate(R.layout.fragment_bottom_sheet, container, false) |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
override fun onCreate(savedInstanceState: Bundle?) { |
|
|
|
|
|
|
|
super.onCreate(savedInstanceState) |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val row = config?.row |
|
|
|
|
|
|
|
?: (requireActivity() as? BaseActivity)?.bottomSheetViewModel?.rowRepresentable |
|
|
|
|
|
|
|
?: throw PAIllegalStateException("row not found") |
|
|
|
|
|
|
|
val delegate = config?.delegate |
|
|
|
|
|
|
|
?: (requireActivity() as? BaseActivity)?.bottomSheetViewModel?.delegate |
|
|
|
|
|
|
|
?: throw PAIllegalStateException("delegate not found") |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
val factory = BottomSheetViewModelFactory(row, delegate) |
|
|
|
|
|
|
|
this.model = ViewModelProvider(requireActivity(), factory).get(BottomSheetViewModel::class.java) |
|
|
|
|
|
|
|
this.model.clear() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { |
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { |
|
|
|
super.onViewCreated(view, savedInstanceState) |
|
|
|
super.onViewCreated(view, savedInstanceState) |
|
|
|
|
|
|
|
|
|
|
|
|