diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BottomSheetFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BottomSheetFragment.kt deleted file mode 100644 index b306cdfd..00000000 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BottomSheetFragment.kt +++ /dev/null @@ -1,157 +0,0 @@ -package net.pokeranalytics.android.ui.fragment - -import android.app.DatePickerDialog -import android.os.Bundle -import com.google.android.material.bottomsheet.BottomSheetDialogFragment -import android.content.DialogInterface -import android.view.* -import androidx.constraintlayout.widget.ConstraintLayout -import kotlinx.android.synthetic.main.bottom_sheet_blinds.* -import kotlinx.android.synthetic.main.bottom_sheet_date.* -import kotlinx.android.synthetic.main.fragment_bottom_sheet.* -import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* -import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface -import net.pokeranalytics.android.ui.adapter.components.EditableDataDelegate -import net.pokeranalytics.android.ui.fragment.components.BottomSheetType -import timber.log.Timber -import android.widget.DatePicker -import net.pokeranalytics.android.util.DatePickerFragment -import net.pokeranalytics.android.util.TimePickerFragment -import java.util.* - - -class BottomSheetFragment : BottomSheetDialogFragment() { - - private var row: DynamicRowInterface? = null - private var valueDelegate: EditableDataDelegate? = null - - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - - val view = inflater.inflate( - net.pokeranalytics.android.R.layout.fragment_bottom_sheet, - container, - false - ) as ConstraintLayout - - row?.let { - when (it.bottomSheetType) { - BottomSheetType.BANKROLL -> inflater.inflate( - net.pokeranalytics.android.R.layout.bottom_sheet_bankroll, - view.bottomSheetContainer, - true - ) - BottomSheetType.BLINDS -> inflater.inflate( - net.pokeranalytics.android.R.layout.bottom_sheet_blinds, - view.bottomSheetContainer, - true - ) - BottomSheetType.DATE -> inflater.inflate( - net.pokeranalytics.android.R.layout.bottom_sheet_date, - view.bottomSheetContainer, - true - ) - BottomSheetType.GAME -> inflater.inflate( - net.pokeranalytics.android.R.layout.bottom_sheet_game, - view.bottomSheetContainer, - true - ) - BottomSheetType.LOCATION -> inflater.inflate( - net.pokeranalytics.android.R.layout.bottom_sheet_location, - view.bottomSheetContainer, - true - ) - BottomSheetType.TABLE_SIZE -> inflater.inflate( - net.pokeranalytics.android.R.layout.bottom_sheet_table_size, - view.bottomSheetContainer, - true - ) - else -> { - } - } - } - - return view - } - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initUI() - } - - override fun onActivityCreated(savedInstanceState: Bundle?) { - super.onActivityCreated(savedInstanceState) - // To display correctly the keyboard - dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE) - } - - override fun onStart() { - super.onStart() - - // Open the keyboard - row?.let { - when (it.bottomSheetType) { - BottomSheetType.BLINDS -> { - smallBlind.requestFocus() - } - else -> { - } - } - } - } - - override fun onDismiss(dialog: DialogInterface?) { - super.onDismiss(dialog) - - // Return the value - row?.let { - valueDelegate?.setValue("Test", it) - } - } - - /** - * Init UI - */ - private fun initUI() { - - row?.let { - //bottomSheetToolbar.title = row?.localizedTitle(requireContext()) - bottomSheetToolbar.inflateMenu(net.pokeranalytics.android.R.menu.bottom_sheet_menu) - bottomSheetToolbar.setOnMenuItemClickListener { - false - } - } - - row?.let { - when (it.bottomSheetType) { - BottomSheetType.DATE -> initDateUI() - else -> {} - } - } - } - - /** - * Init date UI - */ - private fun initDateUI() { - - startDate.setOnClickListener { - val dateFragment = DatePickerFragment() - dateFragment.show(fragmentManager, "datePicker") - } - - endDate.setOnClickListener { - val timeFragment = TimePickerFragment() - timeFragment.show(fragmentManager, "timePicker") - } - - } - - /** - * Init - */ - fun init(row: DynamicRowInterface, valueDelegate: EditableDataDelegate) { - this.row = row - this.valueDelegate = valueDelegate - } - -} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt index 2daa7e57..845b1835 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt @@ -5,20 +5,16 @@ import android.view.LayoutInflater import android.view.View import android.view.ViewGroup import android.widget.Toast -import androidx.recyclerview.widget.GridLayoutManager import androidx.recyclerview.widget.LinearLayoutManager import kotlinx.android.synthetic.main.fragment_new_session.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch import net.pokeranalytics.android.R import net.pokeranalytics.android.model.realm.Session -import net.pokeranalytics.android.ui.adapter.NewSessionAdapter import net.pokeranalytics.android.ui.adapter.components.DynamicListAdapter import net.pokeranalytics.android.ui.adapter.components.DynamicRowCallback import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface import net.pokeranalytics.android.ui.adapter.components.EditableDataDelegate +import net.pokeranalytics.android.ui.fragment.components.BottomSheetFragment +import net.pokeranalytics.android.ui.fragment.components.BottomSheetType import net.pokeranalytics.android.util.PokerAnalyticsFragment class NewSessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, EditableDataDelegate { @@ -36,8 +32,15 @@ class NewSessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, Editabl } override fun onRowSelected(row: DynamicRowInterface) { - val bottomSheetFragment = openBottomSheet() - bottomSheetFragment.init(row, this) + + val data = when (row.bottomSheetType) { + BottomSheetType.BLINDS -> newSession + BottomSheetType.DATE -> newSession.timeFrame + BottomSheetType.GAME -> newSession.game + else -> Any() + } + + BottomSheetFragment.create(fragmentManager, row, this, data) } override fun setValue(value: Any, row: DynamicRowInterface) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetBlindsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetBlindsFragment.kt new file mode 100644 index 00000000..cd2fd118 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetBlindsFragment.kt @@ -0,0 +1,44 @@ +package net.pokeranalytics.android.ui.fragment.components + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* +import net.pokeranalytics.android.R +import net.pokeranalytics.android.model.realm.Session +import net.pokeranalytics.android.ui.fragment.components.BottomSheetFragment + +class BottomSheetBlindsFragment : BottomSheetFragment() { + + private var session: Session = Session() + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initData() + initUI() + } + + override fun clickOnCheck() { + super.clickOnCheck() + valueDelegate.setValue(session, row) + dismiss() + } + + /** + * Init data + */ + private fun initData() { + val data = getData() + session = if (data is Session) data else Session() + } + + /** + * Init UI + */ + private fun initUI() { + + LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_blinds, view?.bottomSheetContainer, true) + + } + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetDateFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetDateFragment.kt new file mode 100644 index 00000000..377da2c8 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetDateFragment.kt @@ -0,0 +1,61 @@ +package net.pokeranalytics.android.ui.fragment.components + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import kotlinx.android.synthetic.main.bottom_sheet_date.* +import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* +import net.pokeranalytics.android.R +import net.pokeranalytics.android.model.realm.TimeFrame +import net.pokeranalytics.android.ui.fragment.components.BottomSheetFragment +import net.pokeranalytics.android.util.DatePickerFragment +import net.pokeranalytics.android.util.TimePickerFragment + +class BottomSheetDateFragment : BottomSheetFragment() { + + private var timeFrame: TimeFrame = TimeFrame() + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initData() + initUI() + } + + override fun clickOnCheck() { + super.clickOnCheck() + valueDelegate.setValue(timeFrame, row) + dismiss() + } + + /** + * Init data + */ + private fun initData() { + val data = getData() + timeFrame = if (data is TimeFrame) data else TimeFrame() + } + + /** + * Init UI + */ + private fun initUI() { + + LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_date, view?.bottomSheetContainer, true) + + setAddButtonVisible(false) + + startDate.setOnClickListener { + val dateFragment = DatePickerFragment() + dateFragment.show(fragmentManager, "datePicker") + } + + endDate.setOnClickListener { + val timeFragment = TimePickerFragment() + timeFragment.show(fragmentManager, "timePicker") + } + + //data.startDate = Date() + //data.endDate = Date() + } + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetFragment.kt new file mode 100644 index 00000000..2604736d --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetFragment.kt @@ -0,0 +1,143 @@ +package net.pokeranalytics.android.ui.fragment.components + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import android.view.WindowManager +import androidx.constraintlayout.widget.ConstraintLayout +import androidx.fragment.app.FragmentManager +import com.google.android.material.bottomsheet.BottomSheetDialogFragment +import kotlinx.android.synthetic.main.fragment_bottom_sheet.* +import net.pokeranalytics.android.R +import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface +import net.pokeranalytics.android.ui.adapter.components.EditableDataDelegate + +enum class BottomSheetType { + NONE, + GAME, + BLINDS, + LOCATION, + BANKROLL, + TABLE_SIZE, + DATE +} + +interface BottomSheetInterface { + fun clickOnClear() + fun clickOnCheck() + fun clickOnAdd() +} + +open class BottomSheetFragment : BottomSheetDialogFragment(), BottomSheetInterface { + + lateinit var row: DynamicRowInterface + lateinit var valueDelegate: EditableDataDelegate + + private var data: Any? = null + + companion object { + fun create( fragmentManager: FragmentManager?, row: DynamicRowInterface, valueDelegate: EditableDataDelegate, data: Any?): BottomSheetFragment { + + val bottomSheetFragment = when (row.bottomSheetType) { + BottomSheetType.BLINDS -> BottomSheetBlindsFragment() + BottomSheetType.DATE -> BottomSheetDateFragment() + BottomSheetType.GAME -> BottomSheetGameFragment() + else -> BottomSheetFragment() + } + + bottomSheetFragment.show(fragmentManager, "bottomSheet") + bottomSheetFragment.row = row + bottomSheetFragment.valueDelegate = valueDelegate + bottomSheetFragment.data = data + return bottomSheetFragment + } + } + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + val view = inflater.inflate( + net.pokeranalytics.android.R.layout.fragment_bottom_sheet, + container, + false + ) as ConstraintLayout + + return view + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initUI() + } + + override fun onActivityCreated(savedInstanceState: Bundle?) { + super.onActivityCreated(savedInstanceState) + + // To display correctly the keyboard + dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE) + } + + override fun clickOnClear() { + } + + override fun clickOnCheck() { + } + + override fun clickOnAdd() { + } + + /** + * Init UI + */ + private fun initUI() { + row.let { + bottomSheetToolbar.title = row.localizedTitle(requireContext()) + bottomSheetToolbar.inflateMenu(net.pokeranalytics.android.R.menu.bottom_sheet_menu) + bottomSheetToolbar.setOnMenuItemClickListener { + false + } + } + + // Menu + bottomSheetToolbar.menu.findItem(R.id.actionClear).setOnMenuItemClickListener { + clickOnClear() + true + } + bottomSheetToolbar.menu.findItem(R.id.actionAdd).setOnMenuItemClickListener { + clickOnAdd() + true + } + bottomSheetToolbar.menu.findItem(R.id.actionCheck).setOnMenuItemClickListener { + clickOnCheck() + true + } + } + + /** + * Return the data object + */ + fun getData() : Any? { + return data + } + + /** + * Set clear button visibility + */ + fun setClearButtonVisibile(visible: Boolean) { + bottomSheetToolbar.menu.findItem(R.id.actionClear).isVisible = visible + } + + /** + * Set check button visibility + */ + fun setCheckButtonVisibile(visible: Boolean) { + bottomSheetToolbar.menu.findItem(R.id.actionCheck).isVisible = visible + } + + /** + * Set add button visibility + */ + fun setAddButtonVisible(visible: Boolean) { + bottomSheetToolbar.menu.findItem(R.id.actionAdd).isVisible = visible + } + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetGameFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetGameFragment.kt new file mode 100644 index 00000000..f0ae80a7 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetGameFragment.kt @@ -0,0 +1,42 @@ +package net.pokeranalytics.android.ui.fragment.components + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* +import net.pokeranalytics.android.R +import net.pokeranalytics.android.model.realm.Game +import net.pokeranalytics.android.ui.fragment.components.BottomSheetFragment + +class BottomSheetGameFragment : BottomSheetFragment() { + + private var game: Game = Game() + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initData() + initUI() + } + + override fun clickOnCheck() { + super.clickOnCheck() + valueDelegate.setValue(game, row) + dismiss() + } + + /** + * Init data + */ + private fun initData() { + val data = getData() + game = if (data is Game) data else Game() + } + + /** + * Init UI + */ + private fun initUI() { + LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_game, view?.bottomSheetContainer, true) + } + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetType.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetType.kt deleted file mode 100644 index 61127db5..00000000 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetType.kt +++ /dev/null @@ -1,13 +0,0 @@ -package net.pokeranalytics.android.ui.fragment.components - -enum class BottomSheetType { - - NONE, - GAME, - BLINDS, - LOCATION, - BANKROLL, - TABLE_SIZE, - DATE - -} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/util/PokerAnalyticsFragment.kt b/app/src/main/java/net/pokeranalytics/android/util/PokerAnalyticsFragment.kt index 754429c3..ac67fe13 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/PokerAnalyticsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/PokerAnalyticsFragment.kt @@ -3,8 +3,6 @@ package net.pokeranalytics.android.util import android.os.Bundle import androidx.fragment.app.Fragment import io.realm.Realm -import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface -import net.pokeranalytics.android.ui.fragment.BottomSheetFragment open class PokerAnalyticsFragment: Fragment() { @@ -24,13 +22,4 @@ open class PokerAnalyticsFragment: Fragment() { return pokerAnalyticsActivity.getRealm() } - /** - * Open the bottom sheet - */ - fun openBottomSheet(): BottomSheetFragment { - val bottomSheetFragment = BottomSheetFragment() - bottomSheetFragment.show(fragmentManager, "bottomSheet") - return bottomSheetFragment - } - } \ No newline at end of file diff --git a/app/src/main/res/menu/bottom_sheet_menu.xml b/app/src/main/res/menu/bottom_sheet_menu.xml index f1301ad6..e2351f4e 100644 --- a/app/src/main/res/menu/bottom_sheet_menu.xml +++ b/app/src/main/res/menu/bottom_sheet_menu.xml @@ -15,7 +15,7 @@ android:title="Search" app:showAsAction="ifRoom" />