From 71a0dcfd7101497595fb98bfeaa9d4460c94798a Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Mon, 11 Mar 2019 15:05:47 +0100 Subject: [PATCH] multi selection on tournament features --- .../android/model/realm/Session.kt | 15 ++++++++------ .../BottomSheetMultiSelectionFragment.kt | 20 +++++++++++-------- .../android/ui/view/RowRepresentable.kt | 8 ++++++++ .../ui/view/rowrepresentable/SessionRow.kt | 3 ++- 4 files changed, 31 insertions(+), 15 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt index ef86acee..42d91b9d 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt @@ -559,12 +559,14 @@ open class Session : RealmObject(), SessionInterface, Manageable, StaticRowRepre } ?: run { NULL_TEXT } - SessionRow.TOURNAMENT_FEATURE -> tournamentFeatures?.let { - if (it.size > 2) { - "${it.size}" + SessionRow.TOURNAMENT_FEATURE -> { + if (tournamentFeatures.size > 2) { + "${tournamentFeatures.subList(0,2).joinToString { + it.name + }}, ..." } else { - it.joinToString {feature -> - feature.name + tournamentFeatures.joinToString { + it.name } } } @@ -807,7 +809,8 @@ open class Session : RealmObject(), SessionInterface, Manageable, StaticRowRepre SessionRow.TOURNAMENT_NAME -> tournamentName = value as TournamentName? SessionRow.TOURNAMENT_TYPE -> tournamentType = value as Int? SessionRow.TOURNAMENT_FEATURE -> value?.let { - tournamentFeatures.add(value as TournamentFeature) + tournamentFeatures = RealmList() + tournamentFeatures.addAll((it as ArrayList)) } } realm.commitTransaction() diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetMultiSelectionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetMultiSelectionFragment.kt index cee4e158..4d957fd2 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetMultiSelectionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetMultiSelectionFragment.kt @@ -2,8 +2,10 @@ package net.pokeranalytics.android.ui.fragment.components.bottomsheet import android.os.Bundle import android.view.View +import io.realm.RealmList import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType +import timber.log.Timber /** * Manage multiple items selection in a bottom sheet list @@ -12,12 +14,6 @@ open class BottomSheetMultiSelectionFragment : BottomSheetListFragment() { private val selectedRows: ArrayList = ArrayList() - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initData() - initUI() - } - override fun viewTypeForPosition(position: Int): Int { return RowViewType.TITLE_CHECK.ordinal } @@ -28,13 +24,11 @@ open class BottomSheetMultiSelectionFragment : BottomSheetListFragment() { } override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { - if (selectedRows.contains(row)) { selectedRows.remove(row) } else { selectedRows.add(row) } - dataAdapter.refreshRow(row) /* @@ -52,4 +46,14 @@ open class BottomSheetMultiSelectionFragment : BottomSheetListFragment() { return selectedRows.contains(row) } + override fun initData() { + super.initData() + getData().first().defaultValue?.let { + + (it as RealmList<*>).forEach{row -> + selectedRows.add(row as RowRepresentable) + } + } + } + } \ No newline at end of file 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 5902addc..a8298de4 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 @@ -14,6 +14,14 @@ interface RowRepresentable : Displayable { return NULL_TEXT } + var isSelected: Boolean + get() { + return false + } + set(value) { + + } + } /** 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 e6ed1888..14400072 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 @@ -132,7 +132,8 @@ enum class SessionRow : RowRepresentable { BLINDS -> BottomSheetType.DOUBLE_EDIT_TEXT GAME -> BottomSheetType.LIST_GAME TOURNAMENT_TYPE -> BottomSheetType.LIST_STATIC - LOCATION, BANKROLL, TOURNAMENT_NAME, TOURNAMENT_FEATURE -> BottomSheetType.LIST + LOCATION, BANKROLL, TOURNAMENT_NAME -> BottomSheetType.LIST + TOURNAMENT_FEATURE -> BottomSheetType.MULTI_SELECTION TABLE_SIZE -> BottomSheetType.GRID COMMENT -> BottomSheetType.EDIT_TEXT_MULTI_LINES else -> BottomSheetType.NONE