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 574dc576..00b5b87b 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 @@ -2,7 +2,6 @@ package net.pokeranalytics.android.model.realm import android.content.Context import android.text.InputType -import com.google.android.material.tabs.TabLayout import io.realm.RealmList import io.realm.RealmObject import io.realm.annotations.Ignore @@ -16,6 +15,7 @@ import net.pokeranalytics.android.model.extensions.SessionState import net.pokeranalytics.android.model.extensions.getState import net.pokeranalytics.android.model.interfaces.Savable import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource +import net.pokeranalytics.android.ui.view.HeaderRowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.SessionRow @@ -23,7 +23,6 @@ import net.pokeranalytics.android.util.getDuration import net.pokeranalytics.android.util.round import net.pokeranalytics.android.util.shortDateTime import net.pokeranalytics.android.util.toCurrency -import timber.log.Timber import java.util.* import kotlin.collections.ArrayList @@ -153,17 +152,17 @@ open class Session : RealmObject(), SessionInterface, Savable, /** * Return the duration of the current session */ - fun getDuration(context: Context): String { + fun getDuration(): String { val startDate = timeFrame?.startDate ?: Date() val enDate = timeFrame?.endDate ?: Date() - return startDate.getDuration(context, enDate) + return startDate.getDuration(enDate) } /** * Return the formatted blinds */ fun getBlinds(): String { - return if (cgSmallBlind == null) "--" else "$${cgSmallBlind?.round()}/${cgBigBlind?.round()}" + return if (cgSmallBlind == null) "--" else "${cgSmallBlind?.toCurrency()}/${cgBigBlind?.round()}" } /** @@ -275,6 +274,22 @@ open class Session : RealmObject(), SessionInterface, Savable, override fun adapterRows(): ArrayList { val rows = ArrayList() + + // Headers + when (getState()) { + SessionState.STARTED, SessionState.PAUSED -> { + rows.add(HeaderRowRepresentable.HEADER_SESSION_DURATION) + } + SessionState.FINISHED -> { + rows.add(HeaderRowRepresentable.HEADER_SESSION_DURATION) + rows.add(HeaderRowRepresentable.HEADER_SESSION_NET_HOURLY_RATE) + rows.add(HeaderRowRepresentable.HEADER_SESSION_BANKROLL_VARIATION) + } + else -> { + } + } + + // Rows rows.addAll(SessionRow.getRowsForState(getState())) return rows } @@ -283,9 +298,11 @@ open class Session : RealmObject(), SessionInterface, Savable, return false } - override fun stringForRow(row: RowRepresentable, context:Context): String { + override fun stringForRow(row: RowRepresentable, context: Context): String { return when (row) { + SessionRow.CASHED_OUT -> result?.cashout?.toCurrency() ?: "--" SessionRow.BUY_IN -> buyin.toCurrency() + SessionRow.TIPS -> result?.tips?.toCurrency() ?: "--" SessionRow.BLINDS -> getBlinds() SessionRow.GAME -> getGameTitle() SessionRow.LOCATION -> location?.name ?: "--" @@ -312,7 +329,11 @@ open class Session : RealmObject(), SessionInterface, Savable, val data = ArrayList() when (row) { - + SessionRow.CASHED_OUT -> { + data.add( + RowRepresentableEditDescriptor(result?.cashout?.round(), inputType = InputType.TYPE_CLASS_NUMBER) + ) + } SessionRow.BUY_IN -> { // Add first & second buttons values, current value & set the 2 edit texts data.add(RowRepresentableEditDescriptor(100.0 * (cgBigBlind ?: 0.0))) @@ -331,32 +352,13 @@ open class Session : RealmObject(), SessionInterface, Savable, ) ) } - SessionRow.CASHED_OUT -> { - data.add( - RowRepresentableEditDescriptor( - result?.cashout, - inputType = InputType.TYPE_CLASS_NUMBER - ) - ) - } SessionRow.TIPS -> { // Disable the buttons with value = 0, add current value & set the 2 edit texts - // TODO: manage tips data.add(RowRepresentableEditDescriptor(cgSmallBlind ?: 0.0)) data.add(RowRepresentableEditDescriptor(cgBigBlind ?: 0.0)) - data.add(RowRepresentableEditDescriptor(0)) - data.add( - RowRepresentableEditDescriptor( - "", - inputType = InputType.TYPE_CLASS_NUMBER - ) - ) - data.add( - RowRepresentableEditDescriptor( - "", - inputType = InputType.TYPE_CLASS_NUMBER - ) - ) + data.add(RowRepresentableEditDescriptor(result?.tips ?: 0.0)) + data.add(RowRepresentableEditDescriptor("", inputType = InputType.TYPE_CLASS_NUMBER)) + data.add(RowRepresentableEditDescriptor("", inputType = InputType.TYPE_CLASS_NUMBER)) } SessionRow.TABLE_SIZE -> { data.add(RowRepresentableEditDescriptor(tableSize)) @@ -368,46 +370,18 @@ open class Session : RealmObject(), SessionInterface, Savable, } SessionRow.LOCATION -> { // Add current location and locations list - data.add( - RowRepresentableEditDescriptor( - location, - data = LiveData.LOCATION.items(realm) - ) - ) + data.add(RowRepresentableEditDescriptor(location, data = LiveData.LOCATION.items(realm))) } SessionRow.BANKROLL -> { // Add current bankroll and bankrolls list - data.add( - RowRepresentableEditDescriptor( - bankroll, - data = LiveData.BANKROLL.items(realm) - ) - ) + data.add(RowRepresentableEditDescriptor(bankroll, data = LiveData.BANKROLL.items(realm))) } SessionRow.BLINDS -> { - data.add( - RowRepresentableEditDescriptor( - cgSmallBlind, - R.string.smallblind, - InputType.TYPE_CLASS_NUMBER - ) - ) - data.add( - RowRepresentableEditDescriptor( - cgBigBlind, - R.string.bigblind, - InputType.TYPE_CLASS_NUMBER - ) - ) + data.add(RowRepresentableEditDescriptor(cgSmallBlind, R.string.smallblind, InputType.TYPE_CLASS_NUMBER)) + data.add(RowRepresentableEditDescriptor(cgBigBlind, R.string.bigblind, InputType.TYPE_CLASS_NUMBER)) } SessionRow.COMMENT -> { - data.add( - RowRepresentableEditDescriptor( - comment, - R.string.comment, - InputType.TYPE_CLASS_TEXT - ) - ) + data.add(RowRepresentableEditDescriptor(comment, R.string.comment, InputType.TYPE_CLASS_TEXT)) } } @@ -427,11 +401,14 @@ open class Session : RealmObject(), SessionInterface, Savable, localResult.cashout = if (value == null) null else (value as String).toDouble() result = localResult } + SessionRow.TIPS -> { + val localResult = if (result != null) result as Result else realm.createObject(Result::class.java) + localResult.tips = value as Double? + result = localResult + } SessionRow.TABLE_SIZE -> tableSize = value as Int? SessionRow.GAME -> { if (value is ArrayList<*>) { - Timber.d("${value[0]}") - Timber.d("${value[1]}") limit = try { (value[0] as Int?) } catch (e: Exception) { @@ -465,7 +442,6 @@ open class Session : RealmObject(), SessionInterface, Savable, } } } - //TODO: Update SessionRow.START_DATE -> if (value is Date?) { if (value == null) { timeFrame = null @@ -476,7 +452,6 @@ open class Session : RealmObject(), SessionInterface, Savable, timeFrame = timeFrameToUpdate } } - //TODO: Update SessionRow.END_DATE -> if (value is Date?) { val timeFrameToUpdate = if (timeFrame != null) timeFrame as TimeFrame else realm.createObject(TimeFrame::class.java) 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 2fcb471c..22a70618 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 @@ -1,6 +1,7 @@ package net.pokeranalytics.android.ui.fragment import android.os.Bundle +import android.os.Handler import android.view.* import android.view.animation.OvershootInterpolator import android.widget.Toast @@ -26,7 +27,6 @@ import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowRepresentableDiffCallback import net.pokeranalytics.android.ui.view.SessionRow import net.pokeranalytics.android.ui.view.SmoothScrollLinearLayoutManager -import net.pokeranalytics.android.util.px import net.pokeranalytics.android.util.toast import timber.log.Timber import java.util.* @@ -37,6 +37,13 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott private lateinit var sessionAdapter: RowRepresentableAdapter private var sessionMenu: Menu? = null private val oldRows: ArrayList = ArrayList() + private val handler: Handler = Handler() + private val refreshTimer: Runnable = object: Runnable { + override fun run() { + sessionAdapter.notifyItemChanged(0) + handler.postDelayed(this, 30000) + } + } override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_session, container, false) @@ -47,6 +54,11 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott initUI() } + override fun onPause() { + super.onPause() + handler.removeCallbacksAndMessages(null) + } + override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { inflater?.inflate(R.menu.session_toolbar, menu) this.sessionMenu = menu @@ -106,6 +118,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott currentSession.updateValue(value, row) sessionAdapter.refreshRow(row) when (row) { + SessionRow.CASHED_OUT, SessionRow.BUY_IN, SessionRow.TIPS -> updateSessionUI() SessionRow.START_DATE, SessionRow.END_DATE -> updateSessionUI() } } @@ -141,61 +154,40 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott */ private fun updateSessionUI() { + handler.removeCallbacksAndMessages(null) + when (currentSession.getState()) { SessionState.PENDING -> { - state.text = "WAITING" state.setTextColor(ContextCompat.getColor(requireContext(), R.color.white)) sessionMenu?.findItem(R.id.restart)?.isVisible = false floatingActionButton.setImageResource(R.drawable.ic_outline_play) sessionMenu?.findItem(R.id.stop)?.isVisible = false - floatingActionButton.animate().scaleX(1f).scaleY(1f).alpha(1f) .setInterpolator(OvershootInterpolator()).start() - sessionData.animate().translationY(-(72f.px)).alpha(1f) - .setInterpolator(FastOutSlowInInterpolator()).setDuration(500).start() - recyclerView.animate().translationY(-(72f.px)) - .setInterpolator(FastOutSlowInInterpolator()).setDuration(500).start() } SessionState.STARTED -> { - state.text = "PLAYING" state.setTextColor(ContextCompat.getColor(requireContext(), R.color.green)) sessionMenu?.findItem(R.id.restart)?.isVisible = true floatingActionButton.setImageResource(R.drawable.ic_outline_pause) sessionMenu?.findItem(R.id.stop)?.isVisible = true - floatingActionButton.animate().scaleX(1f).scaleY(1f).alpha(1f) .setInterpolator(OvershootInterpolator()).start() - sessionData.animate().translationY(0f).alpha(1f) - .setInterpolator(FastOutSlowInInterpolator()).setDuration(500).start() - recyclerView.animate().translationY(0f.px) - .setInterpolator(FastOutSlowInInterpolator()).setDuration(500).start() + handler.postDelayed(refreshTimer, 30000) } SessionState.PAUSED -> { - state.text = "BREAK" state.setTextColor(ContextCompat.getColor(requireContext(), R.color.blue)) sessionMenu?.findItem(R.id.restart)?.isVisible = true floatingActionButton.setImageResource(R.drawable.ic_outline_play) sessionMenu?.findItem(R.id.stop)?.isVisible = true - floatingActionButton.animate().scaleX(1f).scaleY(1f).alpha(1f) .setInterpolator(OvershootInterpolator()).start() - sessionData.animate().translationY(0f).alpha(1f) - .setInterpolator(FastOutSlowInInterpolator()).setDuration(500).start() - recyclerView.animate().translationY(0f.px) - .setInterpolator(FastOutSlowInInterpolator()).setDuration(500).start() } SessionState.FINISHED -> { - state.text = "FINISHED" state.setTextColor(ContextCompat.getColor(requireContext(), R.color.white)) sessionMenu?.findItem(R.id.restart)?.isVisible = true sessionMenu?.findItem(R.id.stop)?.isVisible = false - floatingActionButton.animate().scaleX(0f).scaleY(0f).alpha(0f) .setInterpolator(FastOutSlowInInterpolator()).start() - sessionData.animate().translationY(0f).alpha(1f) - .setInterpolator(FastOutSlowInInterpolator()).setDuration(500).start() - recyclerView.animate().translationY(0f.px) - .setInterpolator(FastOutSlowInInterpolator()).setDuration(500).start() } } @@ -224,8 +216,6 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott */ private fun manageSessionState() { - Timber.d("oldRows: $oldRows") - when (currentSession.getState()) { SessionState.PENDING -> { currentSession.startSession() @@ -236,6 +226,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott SessionState.PAUSED -> { currentSession.startSession() } + else -> {} } updateSessionUI() @@ -262,6 +253,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott updateSessionUI() Timber.d("Session state: ${currentSession.getState()}") + Timber.d("Result: ${currentSession.result}") } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetSumFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetSumFragment.kt index abddc0bb..20034836 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetSumFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetSumFragment.kt @@ -70,7 +70,7 @@ class BottomSheetSumFragment : BottomSheetFragment() { button1.text = defaultValue1.toCurrency() button1.visibility = if (defaultValue1 > 0) View.VISIBLE else View.GONE button1.setOnClickListener { - this.delegate.onRowValueChanged(data, row) + this.delegate.onRowValueChanged(currentDefaultValue + defaultValue1, row) dismiss() } @@ -84,7 +84,7 @@ class BottomSheetSumFragment : BottomSheetFragment() { button2.text = defaultValue2.toCurrency() button2.visibility = if (defaultValue2 > 0) View.VISIBLE else View.GONE button2.setOnClickListener { - this.delegate.onRowValueChanged(data, row) + this.delegate.onRowValueChanged(currentDefaultValue + defaultValue2, row) dismiss() } @@ -110,7 +110,7 @@ class BottomSheetSumFragment : BottomSheetFragment() { editText2.setOnEditorActionListener { v, actionId, event -> if (actionId == EditorInfo.IME_ACTION_DONE) { - this.delegate.onRowValueChanged(data, row) + this.delegate.onRowValueChanged(value, row) dismiss() true } else { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt index 4f4fff87..d756c4c8 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetTableSizeGridFragment.kt @@ -95,77 +95,4 @@ class BottomSheetTableSizeGridFragment : BottomSheetFragment(), } return "UNKNOWN CONTEXT FOR ROW $row" } -} - -/* -class BottomSheetTableSizeGridFragment : BottomSheetFragment() { - - private var dataList: ArrayList = ArrayList() - private lateinit var dataAdapter: TableSizeGridAdapter - private var defaultSize: Int? = null - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - initData() - initUI() - } - - override fun onResume() { - super.onResume() - dataAdapter.notifyDataSetChanged() - } - - override fun getValue(): Any? { - return defaultSize - } - - /** - * Init data - */ - private fun initData() { - - val bottomSheetData = getData() - if (bottomSheetData.isNotEmpty() && bottomSheetData.first().defaultValue != null) { - defaultSize = bottomSheetData.first().defaultValue as Int? - } - - dataList.add(getString(net.pokeranalytics.android.R.string.heads_up)) - for (i in 3..10) { - dataList.add("$i-max") - } - - } - - /** - * Init UI - */ - private fun initUI() { - - setAddButtonVisible(false) - - LayoutInflater.from(requireContext()) - .inflate(net.pokeranalytics.android.R.layout.bottom_sheet_grid, view?.bottomSheetContainer, true) - - val viewManager = GridLayoutManager(requireContext(), 3) - dataAdapter = TableSizeGridAdapter(dataList) - dataAdapter.onClickOnItem = { position -> - bottomSheetDelegate.onRowValueChangedFromBottomSheet(position + 2, row) - dismiss() - } - - val spanCount = 3 - val spacing = 2.px - val includeEdge = false - - reyclerView.apply { - setHasFixedSize(true) - layoutManager = viewManager - adapter = dataAdapter - addItemDecoration(GridSpacingItemDecoration(spanCount, spacing, includeEdge)) - } - - } - -} - - */ \ No newline at end of file +} \ 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 c15095d6..33cdceca 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,6 +4,8 @@ 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 /** @@ -75,11 +77,63 @@ interface Displayable: Localizable { } -enum class SessionRow : RowRepresentable { +/** + * An enum 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 + } + } + } - DURATION, - NET_HOURLY_RATE, - BANKROLL_VARIATION, + 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 var displayHeader: Boolean = false + override var headerValues: ArrayList = ArrayList() + +} + +enum class SessionRow : RowRepresentable { CASHED_OUT, BUY_IN, @@ -119,7 +173,6 @@ enum class SessionRow : RowRepresentable { } SessionState.FINISHED -> { arrayListOf( - DURATION, NET_HOURLY_RATE, BANKROLL_VARIATION, CASHED_OUT, BUY_IN, TIPS, GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE, BREAK_TIME, COMMENT ) @@ -132,7 +185,7 @@ enum class SessionRow : RowRepresentable { override val needSeparator: Boolean get() { return when (this) { - TIPS, BANKROLL_VARIATION -> true + TIPS -> true else -> false } } @@ -141,10 +194,6 @@ enum class SessionRow : RowRepresentable { get() { return when (this) { - DURATION -> R.string.duration - NET_HOURLY_RATE -> R.string.hour_rate_without_pauses - BANKROLL_VARIATION -> R.string.bankroll_variation - CASHED_OUT -> R.string.cashed_out BUY_IN -> R.string.buyin TIPS -> R.string.tips @@ -164,7 +213,6 @@ enum class SessionRow : RowRepresentable { override val viewType: Int get() { return when (this) { - DURATION, NET_HOURLY_RATE, BANKROLL_VARIATION -> RowViewType.HEADER_TITLE_VALUE.ordinal CASHED_OUT, BUY_IN, TIPS, GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, COMMENT, START_DATE, END_DATE, BREAK_TIME -> RowViewType.TITLE_VALUE.ordinal } 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 f760d507..e3ac82f5 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 @@ -31,6 +31,7 @@ interface BindableHolder { enum class RowViewType { HEADER, HEADER_TITLE_VALUE, + HEADER_DOUBLE_VALUES, EDIT_TEXT, TITLE, TITLE_VALUE, @@ -125,6 +126,23 @@ enum class RowViewType { } } + inner class HeaderDoubleValuesViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), + BindableHolder { + override fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) { + + if (row is HeaderRowRepresentable) { + itemView.rowHeaderTitleValue_title.text = row.getTitle(itemView.context, adapter.dataSource) + itemView.rowHeaderTitleValue_value.isCurrency = true + when (row) { + HeaderRowRepresentable.HEADER_SESSION_DURATION -> { + itemView.rowHeaderTitleValue_value.amount = row.getAmount(itemView.context, adapter.dataSource) + } + } + } + + } + } + inner class TitleValueViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), BindableHolder { override fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) { @@ -201,6 +219,13 @@ enum class RowViewType { false ) ) + HEADER_DOUBLE_VALUES -> HeaderDoubleValuesViewHolder( + LayoutInflater.from(parent.context).inflate( + R.layout.row_header_title_value, + parent, + false + ) + ) TITLE_VALUE -> TitleValueViewHolder( LayoutInflater.from(parent.context).inflate( R.layout.row_title_value, diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt index 7835adb6..b753e50a 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt @@ -5,7 +5,6 @@ import android.util.AttributeSet import android.view.LayoutInflater import android.widget.FrameLayout import androidx.constraintlayout.widget.ConstraintLayout -import androidx.core.content.ContextCompat import androidx.core.view.isVisible import kotlinx.android.synthetic.main.row_session_view.view.* import net.pokeranalytics.android.R @@ -15,9 +14,10 @@ import net.pokeranalytics.android.model.extensions.getState import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.util.getDayNumber import net.pokeranalytics.android.util.getShortDayName -import net.pokeranalytics.android.util.toCurrency - +/** + * Display a row session + */ class SessionRowView : FrameLayout { private lateinit var rowHistorySession: ConstraintLayout @@ -39,8 +39,6 @@ class SessionRowView : FrameLayout { /** * Init - * - * @param attrs */ private fun init() { val layoutInflater = LayoutInflater.from(context) @@ -78,7 +76,7 @@ class SessionRowView : FrameLayout { rowHistorySession.sessionInfoDurationIcon.isVisible = session.timeFrame != null rowHistorySession.sessionInfoDurationValue.isVisible = session.timeFrame != null session.timeFrame?.let { - rowHistorySession.sessionInfoDurationValue.text = session.getDuration(context) + rowHistorySession.sessionInfoDurationValue.text = session.getDuration() } // Location @@ -106,9 +104,7 @@ class SessionRowView : FrameLayout { rowHistorySession.playingTitle.isVisible = false val result = session.result?.netResult ?: 0.0 - val resultColor = if (result >= 0.0) R.color.green else R.color.red - rowHistorySession.gameResult.text = result.toCurrency() - rowHistorySession.gameResult.setTextColor(ContextCompat.getColor(context, resultColor)) + rowHistorySession.gameResult.amount = result } } diff --git a/app/src/main/res/layout/fragment_session.xml b/app/src/main/res/layout/fragment_session.xml index 1f978b8f..9baeaa3b 100644 --- a/app/src/main/res/layout/fragment_session.xml +++ b/app/src/main/res/layout/fragment_session.xml @@ -21,11 +21,10 @@ android:layout_height="wrap_content" android:background="@color/gray_darker" android:elevation="4dp" - android:translationY="-72dp" + android:visibility="gone" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - tools:translationY="0dp"> + app:layout_constraintTop_toTopOf="parent"> + app:layout_constraintTop_toBottomOf="@+id/sessionData" /> diff --git a/app/src/main/res/layout/row_header_title_value.xml b/app/src/main/res/layout/row_header_title_value.xml index 50a9081d..67b27389 100644 --- a/app/src/main/res/layout/row_header_title_value.xml +++ b/app/src/main/res/layout/row_header_title_value.xml @@ -24,7 +24,7 @@ app:layout_constraintTop_toTopOf="parent" tools:text="Title" /> - - - - + tools:visibility="gone">