From 5689b8dfe481f0ce7e0870432a72b26baeac4033 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Fri, 28 Jun 2019 14:14:04 +0200 Subject: [PATCH] wip refactoring editDescriptor --- .../android/ui/fragment/SessionFragment.kt | 1 + .../android/ui/view/RowRepresentable.kt | 5 ++ .../ui/view/rowrepresentable/BankrollRow.kt | 6 ++ .../ui/view/rowrepresentable/SessionRow.kt | 57 +++++++++++++++++++ 4 files changed, 69 insertions(+) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt index e62eabc5..47bec97f 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt @@ -158,6 +158,7 @@ class SessionFragment : RealmFragment(), RowRepresentableDelegate { Toast.makeText(requireContext(), "Action for row: $row", Toast.LENGTH_SHORT).show() return } + //row.startEditing(currentSession, this) val data = currentSession.editDescriptors(row) when (row) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt index 1f6ce50f..7ce8b628 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt @@ -1,7 +1,9 @@ package net.pokeranalytics.android.ui.view import android.content.Context +import androidx.fragment.app.Fragment import net.pokeranalytics.android.model.LiveData +import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetFragment import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType import net.pokeranalytics.android.util.NULL_TEXT @@ -19,6 +21,9 @@ interface EditDataSource { fun editingDescriptors(map: Map): ArrayList? { return null } + + fun startEditing(dataSource:Any?, parent:Fragment?) { + } } interface DefaultEditDataSource : EditDataSource, Localizable { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt index 1e3b3152..31472eeb 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/BankrollRow.kt @@ -1,6 +1,7 @@ package net.pokeranalytics.android.ui.view.rowrepresentable import android.text.InputType +import io.realm.RealmObject import net.pokeranalytics.android.R import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType import net.pokeranalytics.android.ui.view.DefaultEditDataSource @@ -68,4 +69,9 @@ enum class BankrollRow : RowRepresentable, DefaultEditDataSource { else -> super.editingDescriptors(map) } } + + + fun editDefaultValue(entity:RealmObject): Any? { + return null + } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt index 643e3fd9..1eeb65e8 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/rowrepresentable/SessionRow.kt @@ -1,17 +1,26 @@ package net.pokeranalytics.android.ui.view.rowrepresentable import android.text.InputType +import android.widget.Toast +import androidx.fragment.app.Fragment import io.realm.RealmResults import net.pokeranalytics.android.R import net.pokeranalytics.android.model.TournamentType import net.pokeranalytics.android.model.extensions.SessionState import net.pokeranalytics.android.model.extensions.getState +import net.pokeranalytics.android.model.realm.Bankroll import net.pokeranalytics.android.model.realm.Session +import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate +import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetFragment import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType +import net.pokeranalytics.android.ui.helpers.DateTimePickerManager import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowViewType import net.pokeranalytics.android.util.extensions.round +import net.pokeranalytics.android.util.extensions.sorted +import java.util.* +import kotlin.collections.ArrayList enum class SessionRow : RowRepresentable { @@ -175,6 +184,54 @@ enum class SessionRow : RowRepresentable { } + override fun startEditing(dataSource: Any?, parent: Fragment?) { + if (dataSource == null) return + if (dataSource !is Session) return + if (parent == null) return + if (parent !is RowRepresentableDelegate) return + + when (this) { + START_DATE -> DateTimePickerManager.create(parent.requireContext(), this, parent, dataSource.startDate) + END_DATE -> { + + if (dataSource.startDate == null) { + Toast.makeText(parent.context, R.string.session_missing_start_date, Toast.LENGTH_SHORT).show() + } else { + DateTimePickerManager.create( + parent.requireContext(), + this, + parent, + dataSource.endDate ?: dataSource.startDate ?: Date(), + dataSource.startDate + ) + } + + } + BANKROLL -> { + BottomSheetFragment.create(parent.fragmentManager, this, parent, this.editingData(dataSource), false, dataSource.currency) + } + else -> BottomSheetFragment.create( + parent.fragmentManager, + this, + parent, + this.editingData(dataSource), + currentCurrency = dataSource.currency + ) + } + } + + private fun editingData(session:Session): ArrayList? { + return when (this) { + BANKROLL -> { + arrayListOf( + RowRepresentableEditDescriptor(session.bankroll, data = session.realm.sorted() as RealmResults) + ) + } + else -> null + } + } + + override fun editingDescriptors(map: Map): ArrayList? { return when (this) { BLINDS -> {