From 3d64dc35a149b74f5e776e6c505c1a2f5033fd7d Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 26 Feb 2019 14:25:22 +0100 Subject: [PATCH] Update Header management --- .../android/model/realm/Session.kt | 35 +++++++++--- .../android/ui/view/RowRepresentable.kt | 53 ++----------------- .../ui/view/RowRepresentableDiffCallback.kt | 2 +- .../android/ui/view/RowViewType.kt | 19 ++++++- .../res/layout/row_bottom_sheet_title.xml | 2 +- 5 files changed, 50 insertions(+), 61 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 2e51ecf6..2bcfedfe 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 @@ -282,13 +282,22 @@ open class Session : RealmObject(), SessionInterface, Savable, // Headers when (getState()) { - SessionState.STARTED, SessionState.PAUSED -> { - rows.add(HeaderRowRepresentable.HEADER_SESSION_DURATION) + SessionState.STARTED -> { + rows.add(HeaderRowRepresentable(title = getDuration(), value = result?.net.toString())) + } + SessionState.PAUSED -> { + rows.add(HeaderRowRepresentable(resId = R.string.pause, value = result?.net.toString())) } SessionState.FINISHED -> { - rows.add(HeaderRowRepresentable.HEADER_SESSION_DURATION) - rows.add(HeaderRowRepresentable.HEADER_SESSION_NET_HOURLY_RATE) - rows.add(HeaderRowRepresentable.HEADER_SESSION_BANKROLL_VARIATION) + rows.add( + HeaderRowRepresentable(title = getDuration(), value = result?.net.toString()) + ) + rows.add( + HeaderRowRepresentable(resId = R.string.hour_rate_without_pauses, value = result?.net.toString()) + ) + rows.add( + HeaderRowRepresentable(resId = R.string.bankroll_variation, value = result?.net.toString()) + ) } else -> { } @@ -382,8 +391,20 @@ open class Session : RealmObject(), SessionInterface, Savable, data.add(RowRepresentableEditDescriptor(bankroll, data = LiveData.BANKROLL.items(realm))) } SessionRow.BLINDS -> { - data.add(RowRepresentableEditDescriptor(cgSmallBlind?.round(), R.string.smallblind, InputType.TYPE_CLASS_NUMBER)) - data.add(RowRepresentableEditDescriptor(cgBigBlind?.round(), R.string.bigblind, InputType.TYPE_CLASS_NUMBER)) + data.add( + RowRepresentableEditDescriptor( + cgSmallBlind?.round(), + R.string.smallblind, + InputType.TYPE_CLASS_NUMBER + ) + ) + data.add( + RowRepresentableEditDescriptor( + cgBigBlind?.round(), + R.string.bigblind, + InputType.TYPE_CLASS_NUMBER + ) + ) } SessionRow.COMMENT -> { data.add(RowRepresentableEditDescriptor(comment, R.string.comment, InputType.TYPE_CLASS_TEXT)) 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 33cdceca..632f4209 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 @@ -4,8 +4,6 @@ import android.content.Context import net.pokeranalytics.android.R import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.model.extensions.SessionState -import net.pokeranalytics.android.model.extensions.getState -import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetType /** @@ -78,56 +76,11 @@ interface Displayable: Localizable { } /** - * An enum to display headers as row representable + * A class to display headers as row representable */ -enum class HeaderRowRepresentable : RowRepresentable { - - HEADER_SESSION_DURATION, - HEADER_SESSION_NET_HOURLY_RATE, - HEADER_SESSION_BANKROLL_VARIATION; - - override val resId: Int? - get() { - return when (this) { - HEADER_SESSION_DURATION -> R.string.duration - HEADER_SESSION_NET_HOURLY_RATE -> R.string.hour_rate_without_pauses - HEADER_SESSION_BANKROLL_VARIATION -> R.string.bankroll_variation - } - } - - override val viewType: Int - get() { - return when (this) { - HEADER_SESSION_DURATION, HEADER_SESSION_NET_HOURLY_RATE, HEADER_SESSION_BANKROLL_VARIATION -> { - RowViewType.HEADER_DOUBLE_VALUES.ordinal - } - } - } - - fun getTitle(context: Context, data: Any) : String { - return when (this) { - HEADER_SESSION_DURATION -> { - if (data is Session) { - if (data.getState() == SessionState.PAUSED) context.getString(R.string.pause) else data.getDuration() - } else { - localizedTitle(context) - } - } - else -> localizedTitle(context) - } - } - - fun getAmount(context: Context, data: Any) : Double { - when (this) { - HEADER_SESSION_DURATION -> { - if (data is Session) { - return data.result?.net ?: 0.0 - } - } - } - return 0.0 - } +class HeaderRowRepresentable(override var resId: Int? = null, var title: String? = null, var value: String? = null) : RowRepresentable { + override val viewType: Int = RowViewType.HEADER_DOUBLE_VALUES.ordinal override var displayHeader: Boolean = false override var headerValues: ArrayList = ArrayList() diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentableDiffCallback.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentableDiffCallback.kt index 54ad05d3..4ce6cec5 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentableDiffCallback.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentableDiffCallback.kt @@ -15,7 +15,7 @@ class RowRepresentableDiffCallback(var newRows: List, var oldR } override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { - return oldRows[oldItemPosition] === newRows[newItemPosition] + return oldRows[oldItemPosition].viewType == newRows[newItemPosition].viewType } override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt index e3ac82f5..9b3e2464 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt @@ -131,15 +131,30 @@ enum class RowViewType { override fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) { if (row is HeaderRowRepresentable) { - itemView.rowHeaderTitleValue_title.text = row.getTitle(itemView.context, adapter.dataSource) + + if (row.resId != null) { + itemView.rowHeaderTitleValue_title.text = row.localizedTitle(itemView.context) + } else if (row.title != null) { + itemView.rowHeaderTitleValue_title.text = row.title + } + itemView.rowHeaderTitleValue_value.isCurrency = true + itemView.rowHeaderTitleValue_value.text = row.value + /* when (row) { HeaderRowRepresentable.HEADER_SESSION_DURATION -> { itemView.rowHeaderTitleValue_value.amount = row.getAmount(itemView.context, adapter.dataSource) } + HeaderRowRepresentable.HEADER_SESSION_NET_HOURLY_RATE -> { + adapter.dataSource.let { + if (it is Session) { + it.sessionSet?.hourlyRate + } + } + } } + */ } - } } diff --git a/app/src/main/res/layout/row_bottom_sheet_title.xml b/app/src/main/res/layout/row_bottom_sheet_title.xml index f0f16eb7..aae86c3d 100644 --- a/app/src/main/res/layout/row_bottom_sheet_title.xml +++ b/app/src/main/res/layout/row_bottom_sheet_title.xml @@ -5,7 +5,6 @@ android:id="@+id/rowBottomSheet_container" android:layout_width="match_parent" android:layout_height="wrap_content" - android:background="@color/kaki_light" android:foreground="?selectableItemBackground" android:padding="8dp"> @@ -16,6 +15,7 @@ android:layout_marginStart="8dp" android:layout_marginTop="8dp" android:layout_marginEnd="8dp" + android:textSize="16sp" android:layout_marginBottom="8dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"