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 44c70562..0314e981 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 @@ -362,7 +362,7 @@ open class Session : RealmObject(), SessionInterface, Savable, } // Rows - rows.addAll(SessionRow.getRows(type, getState())) + rows.addAll(SessionRow.getRows(this)) return rows } @@ -376,7 +376,7 @@ open class Session : RealmObject(), SessionInterface, Savable, SessionRow.BLINDS -> getBlinds() SessionRow.BREAK_TIME -> timeFrame?.breakDuration?.toMinutes() ?: "--" SessionRow.BUY_IN -> buyin.toCurrency() - SessionRow.CASHED_OUT, SessionRow.PRIZE -> result?.cashout?.toCurrency() ?: "--" + SessionRow.CASHED_OUT, SessionRow.PRIZE, SessionRow.NET_RESULT -> result?.cashout?.toCurrency() ?: "--" SessionRow.COMMENT -> if (comment.isNotEmpty()) comment else "--" SessionRow.END_DATE -> if (timeFrame != null) timeFrame?.endDate?.shortDateTime() ?: "--" else "--" SessionRow.GAME -> getGameTitle() @@ -461,7 +461,7 @@ open class Session : RealmObject(), SessionInterface, Savable, ) ) } - SessionRow.CASHED_OUT, SessionRow.PRIZE -> { + SessionRow.CASHED_OUT, SessionRow.PRIZE, SessionRow.NET_RESULT -> { data.add( RowRepresentableEditDescriptor( result?.cashout?.round(), @@ -560,7 +560,7 @@ open class Session : RealmObject(), SessionInterface, Savable, localResult.buyin = value as Double? result = localResult } - SessionRow.CASHED_OUT, SessionRow.PRIZE -> { + SessionRow.CASHED_OUT, SessionRow.PRIZE, SessionRow.NET_RESULT -> { val localResult = if (result != null) result as Result else realm.createObject(Result::class.java) if (value == null) { 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 09b093dc..5e82b00e 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 @@ -104,7 +104,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott currentSession.updateValue(value, row) sessionAdapter.refreshRow(row) when (row) { - SessionRow.CASHED_OUT, SessionRow.PRIZE, SessionRow.BUY_IN, SessionRow.TIPS, + SessionRow.CASHED_OUT, SessionRow.PRIZE, SessionRow.NET_RESULT, SessionRow.BUY_IN, SessionRow.TIPS, SessionRow.START_DATE, SessionRow.END_DATE -> updateSessionUI() } } 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 f4d8c5be..9be81d54 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 @@ -2,6 +2,7 @@ package net.pokeranalytics.android.ui.view.rowrepresentable import net.pokeranalytics.android.R 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.view.RowRepresentable @@ -10,121 +11,131 @@ import net.pokeranalytics.android.ui.view.RowViewType enum class SessionRow : RowRepresentable { - PRIZE, - CASHED_OUT, - INITIAL_BUY_IN, - BUY_IN, - POSITION, - PLAYERS, - TIPS, + PRIZE, + CASHED_OUT, + NET_RESULT, + INITIAL_BUY_IN, + BUY_IN, + POSITION, + PLAYERS, + TIPS, - GAME, - BLINDS, - LOCATION, - BANKROLL, - TABLE_SIZE, - TOURNAMENT_TYPE, - START_DATE, - END_DATE, + GAME, + BLINDS, + LOCATION, + BANKROLL, + TABLE_SIZE, + TOURNAMENT_TYPE, + START_DATE, + END_DATE, - BREAK_TIME, - COMMENT; + BREAK_TIME, + COMMENT; - companion object { - /** - * Return the rows to display for the current session state - */ - fun getRows(type: Int, sessionState: SessionState): ArrayList { - when (type) { - Session.Type.TOURNAMENT.ordinal -> { - return when (sessionState) { - SessionState.PENDING, SessionState.PLANNED -> { - arrayListOf( - GAME, INITIAL_BUY_IN, LOCATION, BANKROLL, TABLE_SIZE, TOURNAMENT_TYPE, - START_DATE, END_DATE - ) - } - SessionState.STARTED, SessionState.PAUSED, SessionState.FINISHED -> { - arrayListOf( - PRIZE, BUY_IN, POSITION, PLAYERS, TIPS, - GAME, INITIAL_BUY_IN, LOCATION, BANKROLL, TABLE_SIZE, TOURNAMENT_TYPE, - START_DATE, END_DATE, BREAK_TIME, COMMENT - ) - } - else -> arrayListOf() - } - } - Session.Type.CASH_GAME.ordinal -> { - return when (sessionState) { - SessionState.PENDING, SessionState.PLANNED -> { - arrayListOf(GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE) - } - SessionState.STARTED, SessionState.PAUSED, SessionState.FINISHED -> { - arrayListOf( - CASHED_OUT, BUY_IN, TIPS, - GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE, BREAK_TIME, COMMENT - ) - } - else -> arrayListOf() - } - } - } - return arrayListOf() - } - } + companion object { + /** + * Return the rows to display for the current session state + */ + fun getRows(session: Session): ArrayList { + when (session.type) { + Session.Type.TOURNAMENT.ordinal -> { + return when (session.getState()) { + SessionState.PENDING, SessionState.PLANNED -> { + arrayListOf( + GAME, INITIAL_BUY_IN, LOCATION, BANKROLL, TABLE_SIZE, TOURNAMENT_TYPE, + START_DATE, END_DATE + ) + } + SessionState.STARTED, SessionState.PAUSED, SessionState.FINISHED -> { + arrayListOf( + PRIZE, BUY_IN, POSITION, PLAYERS, TIPS, + GAME, INITIAL_BUY_IN, LOCATION, BANKROLL, TABLE_SIZE, TOURNAMENT_TYPE, + START_DATE, END_DATE, BREAK_TIME, COMMENT + ) + } + else -> arrayListOf() + } + } + Session.Type.CASH_GAME.ordinal -> { + when (session.getState()) { + SessionState.PENDING, SessionState.PLANNED -> { + return arrayListOf(GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE) + } + SessionState.STARTED, SessionState.PAUSED, SessionState.FINISHED -> { + val liveBankroll = session.bankroll?.live ?: false + return if (liveBankroll) { + arrayListOf( + CASHED_OUT, BUY_IN, TIPS, + GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE, BREAK_TIME, COMMENT + ) + } else { + arrayListOf( + NET_RESULT, BUY_IN, TIPS, + GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, START_DATE, END_DATE, BREAK_TIME, COMMENT + ) + } + } + else -> return arrayListOf() + } + } + } + return arrayListOf() + } + } - override val needSeparator: Boolean - get() { - return when (this) { - SessionRow.TIPS -> true - else -> false - } - } + override val needSeparator: Boolean + get() { + return when (this) { + SessionRow.TIPS -> true + else -> false + } + } - override val resId: Int? - get() { - return when (this) { - PRIZE -> R.string.prize - POSITION -> R.string.position - PLAYERS -> R.string.players - CASHED_OUT -> R.string.cashed_out - INITIAL_BUY_IN -> R.string.initial_stack - BUY_IN -> R.string.buyin - TIPS -> R.string.tips - GAME -> R.string.game - BLINDS -> R.string.blinds - LOCATION -> R.string.location - BANKROLL -> R.string.bankroll - TABLE_SIZE -> R.string.table_size - TOURNAMENT_TYPE -> R.string.tournament_type - START_DATE -> R.string.start_date - END_DATE -> R.string.end_date - BREAK_TIME -> R.string.break_time - COMMENT -> R.string.comment - } - } + override val resId: Int? + get() { + return when (this) { + NET_RESULT -> R.string.net_result + PRIZE -> R.string.prize + POSITION -> R.string.position + PLAYERS -> R.string.players + CASHED_OUT -> R.string.cashed_out + INITIAL_BUY_IN -> R.string.initial_stack + BUY_IN -> R.string.buyin + TIPS -> R.string.tips + GAME -> R.string.game + BLINDS -> R.string.blinds + LOCATION -> R.string.location + BANKROLL -> R.string.bankroll + TABLE_SIZE -> R.string.table_size + TOURNAMENT_TYPE -> R.string.tournament_type + START_DATE -> R.string.start_date + END_DATE -> R.string.end_date + BREAK_TIME -> R.string.break_time + COMMENT -> R.string.comment + } + } - override val viewType: Int - get() { - return when (this) { - PRIZE, POSITION, PLAYERS, CASHED_OUT, INITIAL_BUY_IN, BUY_IN, TIPS, - GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, COMMENT, - TOURNAMENT_TYPE, START_DATE, END_DATE, BREAK_TIME -> RowViewType.TITLE_VALUE.ordinal - } - } + override val viewType: Int + get() { + return when (this) { + NET_RESULT, PRIZE, POSITION, PLAYERS, CASHED_OUT, INITIAL_BUY_IN, BUY_IN, TIPS, + GAME, BLINDS, LOCATION, BANKROLL, TABLE_SIZE, COMMENT, + TOURNAMENT_TYPE, START_DATE, END_DATE, BREAK_TIME -> RowViewType.TITLE_VALUE.ordinal + } + } - override val bottomSheetType: BottomSheetType - get() { - return when (this) { - CASHED_OUT, INITIAL_BUY_IN, BREAK_TIME, POSITION, PLAYERS, PRIZE -> BottomSheetType.EDIT_TEXT - BUY_IN, TIPS -> BottomSheetType.SUM - BLINDS -> BottomSheetType.DOUBLE_EDIT_TEXT - GAME -> BottomSheetType.LIST_GAME - LOCATION, BANKROLL, TOURNAMENT_TYPE -> BottomSheetType.LIST - TABLE_SIZE -> BottomSheetType.GRID - COMMENT -> BottomSheetType.EDIT_TEXT_MULTI_LINES - else -> BottomSheetType.NONE - } - } + override val bottomSheetType: BottomSheetType + get() { + return when (this) { + NET_RESULT, CASHED_OUT, INITIAL_BUY_IN, BREAK_TIME, POSITION, PLAYERS, PRIZE -> BottomSheetType.EDIT_TEXT + BUY_IN, TIPS -> BottomSheetType.SUM + BLINDS -> BottomSheetType.DOUBLE_EDIT_TEXT + GAME -> BottomSheetType.LIST_GAME + LOCATION, BANKROLL, TOURNAMENT_TYPE -> BottomSheetType.LIST + TABLE_SIZE -> BottomSheetType.GRID + COMMENT -> BottomSheetType.EDIT_TEXT_MULTI_LINES + else -> BottomSheetType.NONE + } + } } \ No newline at end of file