Update Header management

feature/top10
Aurelien Hubert 7 years ago
parent 9c08a3fa90
commit 3d64dc35a1
  1. 35
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  2. 53
      app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentable.kt
  3. 2
      app/src/main/java/net/pokeranalytics/android/ui/view/RowRepresentableDiffCallback.kt
  4. 19
      app/src/main/java/net/pokeranalytics/android/ui/view/RowViewType.kt
  5. 2
      app/src/main/res/layout/row_bottom_sheet_title.xml

@ -282,13 +282,22 @@ open class Session : RealmObject(), SessionInterface, Savable,
// Headers // Headers
when (getState()) { when (getState()) {
SessionState.STARTED, SessionState.PAUSED -> { SessionState.STARTED -> {
rows.add(HeaderRowRepresentable.HEADER_SESSION_DURATION) rows.add(HeaderRowRepresentable(title = getDuration(), value = result?.net.toString()))
}
SessionState.PAUSED -> {
rows.add(HeaderRowRepresentable(resId = R.string.pause, value = result?.net.toString()))
} }
SessionState.FINISHED -> { SessionState.FINISHED -> {
rows.add(HeaderRowRepresentable.HEADER_SESSION_DURATION) rows.add(
rows.add(HeaderRowRepresentable.HEADER_SESSION_NET_HOURLY_RATE) HeaderRowRepresentable(title = getDuration(), value = result?.net.toString())
rows.add(HeaderRowRepresentable.HEADER_SESSION_BANKROLL_VARIATION) )
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 -> { else -> {
} }
@ -382,8 +391,20 @@ open class Session : RealmObject(), SessionInterface, Savable,
data.add(RowRepresentableEditDescriptor(bankroll, data = LiveData.BANKROLL.items(realm))) data.add(RowRepresentableEditDescriptor(bankroll, data = LiveData.BANKROLL.items(realm)))
} }
SessionRow.BLINDS -> { SessionRow.BLINDS -> {
data.add(RowRepresentableEditDescriptor(cgSmallBlind?.round(), R.string.smallblind, InputType.TYPE_CLASS_NUMBER)) data.add(
data.add(RowRepresentableEditDescriptor(cgBigBlind?.round(), R.string.bigblind, InputType.TYPE_CLASS_NUMBER)) RowRepresentableEditDescriptor(
cgSmallBlind?.round(),
R.string.smallblind,
InputType.TYPE_CLASS_NUMBER
)
)
data.add(
RowRepresentableEditDescriptor(
cgBigBlind?.round(),
R.string.bigblind,
InputType.TYPE_CLASS_NUMBER
)
)
} }
SessionRow.COMMENT -> { SessionRow.COMMENT -> {
data.add(RowRepresentableEditDescriptor(comment, R.string.comment, InputType.TYPE_CLASS_TEXT)) data.add(RowRepresentableEditDescriptor(comment, R.string.comment, InputType.TYPE_CLASS_TEXT))

@ -4,8 +4,6 @@ import android.content.Context
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.extensions.SessionState 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 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 { class HeaderRowRepresentable(override var resId: Int? = null, var title: String? = null, var value: String? = null) : 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
}
override val viewType: Int = RowViewType.HEADER_DOUBLE_VALUES.ordinal
override var displayHeader: Boolean = false override var displayHeader: Boolean = false
override var headerValues: ArrayList<String> = ArrayList() override var headerValues: ArrayList<String> = ArrayList()

@ -15,7 +15,7 @@ class RowRepresentableDiffCallback(var newRows: List<RowRepresentable>, var oldR
} }
override fun areItemsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean { 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 { override fun areContentsTheSame(oldItemPosition: Int, newItemPosition: Int): Boolean {

@ -131,15 +131,30 @@ enum class RowViewType {
override fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) { override fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) {
if (row is HeaderRowRepresentable) { 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.isCurrency = true
itemView.rowHeaderTitleValue_value.text = row.value
/*
when (row) { when (row) {
HeaderRowRepresentable.HEADER_SESSION_DURATION -> { HeaderRowRepresentable.HEADER_SESSION_DURATION -> {
itemView.rowHeaderTitleValue_value.amount = row.getAmount(itemView.context, adapter.dataSource) 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
}
}
}
} }
*/
} }
} }
} }

@ -5,7 +5,6 @@
android:id="@+id/rowBottomSheet_container" android:id="@+id/rowBottomSheet_container"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="wrap_content" android:layout_height="wrap_content"
android:background="@color/kaki_light"
android:foreground="?selectableItemBackground" android:foreground="?selectableItemBackground"
android:padding="8dp"> android:padding="8dp">
@ -16,6 +15,7 @@
android:layout_marginStart="8dp" android:layout_marginStart="8dp"
android:layout_marginTop="8dp" android:layout_marginTop="8dp"
android:layout_marginEnd="8dp" android:layout_marginEnd="8dp"
android:textSize="16sp"
android:layout_marginBottom="8dp" android:layout_marginBottom="8dp"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintEnd_toEndOf="parent"

Loading…
Cancel
Save