diff --git a/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt b/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt index c5687eb8..83728288 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/LiveData.kt @@ -62,7 +62,7 @@ enum class LiveData : Localizable { fun updateOrCreate(realm:Realm, primaryKey:String?): RealmObject { val proxyItem: RealmObject? = this.getData(realm, primaryKey) proxyItem?.let { - return proxyItem + return realm.copyFromRealm(it) } ?: run { return this.newEntity() } 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 6d00eced..1d5d8161 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,6 +2,7 @@ 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 @@ -10,6 +11,7 @@ import net.pokeranalytics.android.R import net.pokeranalytics.android.calculus.SessionInterface import net.pokeranalytics.android.model.Limit import net.pokeranalytics.android.model.LiveData +import net.pokeranalytics.android.model.TableSize import net.pokeranalytics.android.model.extensions.SessionState import net.pokeranalytics.android.model.extensions.getState import net.pokeranalytics.android.model.interfaces.Savable @@ -286,14 +288,14 @@ open class Session : RealmObject(), SessionInterface, Savable, return false } - override fun stringForRow(row: RowRepresentable): String { + override fun stringForRow(row: RowRepresentable, context:Context): String { return when (row) { SessionRow.BUY_IN -> buyin.toCurrency() - SessionRow.BLINDS -> if (cgSmallBlind != null && cgBigBlind != null) "$cgSmallBlind / $cgBigBlind" else "--" + SessionRow.BLINDS -> getBlinds() SessionRow.GAME -> getGameTitle() SessionRow.LOCATION -> location?.name ?: "--" SessionRow.BANKROLL -> bankroll?.name ?: "--" - SessionRow.TABLE_SIZE -> tableSize?.toString() ?: "--" + SessionRow.TABLE_SIZE -> this.tableSize?.let { TableSize(it).localizedTitle(context) } ?: "--" SessionRow.START_DATE -> if (timeFrame != null) timeFrame?.startDate?.shortDateTime() ?: "--" else "--" SessionRow.END_DATE -> if (timeFrame != null) timeFrame?.endDate?.shortDateTime() ?: "--" else "--" SessionRow.COMMENT -> if (comment.isNotEmpty()) comment else "--" @@ -367,12 +369,7 @@ open class Session : RealmObject(), SessionInterface, Savable, SessionRow.GAME -> { // Add current game & games list data.add(RowRepresentableEditDescriptor(limit)) - data.add( - RowRepresentableEditDescriptor( - game, - data = LiveData.GAME.items(realm) - ) - ) + data.add(RowRepresentableEditDescriptor(game, data = LiveData.GAME.items(realm))) } SessionRow.LOCATION -> { // Add current location and locations list diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt index e9e61ae6..cd6f2623 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableAdapter.kt @@ -1,9 +1,12 @@ package net.pokeranalytics.android.ui.adapter +import android.content.Context import android.os.Handler import android.view.ViewGroup import androidx.recyclerview.widget.DiffUtil +import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.RecyclerView +import kotlinx.android.synthetic.main.fragment_settings.* import net.pokeranalytics.android.ui.view.BindableHolder import net.pokeranalytics.android.ui.view.RowRepresentableEditDescriptor import net.pokeranalytics.android.ui.view.RowRepresentable @@ -62,6 +65,13 @@ interface DisplayableDataSource { return false } + /** + * Returns a localized string for a specific row + */ + fun stringForRow(row: RowRepresentable, context: Context): String { + return stringForRow(row) + } + /** * Returns a string for a specific row */ @@ -69,6 +79,7 @@ interface DisplayableDataSource { return "" } + /** * Returns an action icon identifier for a specific row */ diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableRecyclerView.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableRecyclerView.kt new file mode 100644 index 00000000..e2703c35 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/RowRepresentableRecyclerView.kt @@ -0,0 +1,35 @@ +package net.pokeranalytics.android.ui.adapter + +import android.content.Context +import android.util.AttributeSet +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration +import androidx.recyclerview.widget.RecyclerView +import net.pokeranalytics.android.R + + +class RowRepresentableRecyclerView : RecyclerView { + /** + * Constructors + */ + constructor(context: Context) : super(context) { + init() + } + + constructor(context: Context, attrs: AttributeSet?) : super(context, attrs) { + init() + } + + constructor(context: Context, attrs: AttributeSet?, defStyleAttr: Int) : super(context, attrs, defStyleAttr) { + init() + } + + /** + * Init + */ + private fun init() { + val itemDecorator = DividerItemDecoration(this.context, DividerItemDecoration.VERTICAL) + itemDecorator.setDrawable(ContextCompat.getDrawable(this.context!!, R.drawable.separator)!!) + this.addItemDecoration(itemDecorator) + } +} \ No newline at end of file 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 49144a9b..2fcb471c 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 @@ -56,6 +56,10 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott override fun onOptionsItemSelected(item: MenuItem?): Boolean { when (item!!.itemId) { + R.id.stop -> { + currentSession.stopSession() + updateSessionUI() + } R.id.restart -> toast("Restart is clicked!") R.id.delete -> { currentSession.delete() @@ -126,19 +130,6 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott layoutManager = viewManager } - bottomAppBar.inflateMenu(R.menu.session_bottom_app_bar) - bottomAppBar.menu.findItem(R.id.stop).isVisible = false - - bottomAppBar.setOnMenuItemClickListener { item -> - when (item.itemId) { - R.id.stop -> { - currentSession.stopSession() - updateSessionUI() - } - } - false - } - floatingActionButton.setOnClickListener { manageSessionState() } @@ -156,7 +147,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott state.setTextColor(ContextCompat.getColor(requireContext(), R.color.white)) sessionMenu?.findItem(R.id.restart)?.isVisible = false floatingActionButton.setImageResource(R.drawable.ic_outline_play) - bottomAppBar.menu.findItem(R.id.stop).isVisible = false + sessionMenu?.findItem(R.id.stop)?.isVisible = false floatingActionButton.animate().scaleX(1f).scaleY(1f).alpha(1f) .setInterpolator(OvershootInterpolator()).start() @@ -170,7 +161,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott state.setTextColor(ContextCompat.getColor(requireContext(), R.color.green)) sessionMenu?.findItem(R.id.restart)?.isVisible = true floatingActionButton.setImageResource(R.drawable.ic_outline_pause) - bottomAppBar.menu.findItem(R.id.stop).isVisible = true + sessionMenu?.findItem(R.id.stop)?.isVisible = true floatingActionButton.animate().scaleX(1f).scaleY(1f).alpha(1f) .setInterpolator(OvershootInterpolator()).start() @@ -184,7 +175,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott state.setTextColor(ContextCompat.getColor(requireContext(), R.color.blue)) sessionMenu?.findItem(R.id.restart)?.isVisible = true floatingActionButton.setImageResource(R.drawable.ic_outline_play) - bottomAppBar.menu.findItem(R.id.stop).isVisible = true + sessionMenu?.findItem(R.id.stop)?.isVisible = true floatingActionButton.animate().scaleX(1f).scaleY(1f).alpha(1f) .setInterpolator(OvershootInterpolator()).start() @@ -197,7 +188,7 @@ class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, Bott state.text = "FINISHED" state.setTextColor(ContextCompat.getColor(requireContext(), R.color.white)) sessionMenu?.findItem(R.id.restart)?.isVisible = true - bottomAppBar.menu.findItem(R.id.stop).isVisible = false + sessionMenu?.findItem(R.id.stop)?.isVisible = false floatingActionButton.animate().scaleX(0f).scaleY(0f).alpha(0f) .setInterpolator(FastOutSlowInInterpolator()).start() diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt index 1c70e275..2528518c 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt @@ -4,7 +4,11 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup +import android.widget.Toast +import androidx.core.content.ContextCompat +import androidx.recyclerview.widget.DividerItemDecoration import androidx.recyclerview.widget.LinearLayoutManager +import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.fragment_settings.* import net.pokeranalytics.android.R import net.pokeranalytics.android.ui.activity.DataListActivity @@ -50,7 +54,14 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, } override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { - DataListActivity.newInstance(requireContext(), (row as SettingRow).ordinal) + + when (row) { + SettingRow.GDPR -> Toast.makeText(requireContext(), "Show GDPR", Toast.LENGTH_SHORT).show() + } + + row.relatedResultsRepresentable?.let { + DataListActivity.newInstance(requireContext(), (row as SettingRow).ordinal) + } } /** @@ -63,7 +74,7 @@ class SettingsFragment : PokerAnalyticsFragment(), RowRepresentableDataSource, this, this ) - recyclerView.apply { + customRecyclerView.apply { setHasFixedSize(true) layoutManager = viewManager adapter = settingsAdapterRow diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt index a03a51b6..aec6305d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/StatsFragment.kt @@ -8,6 +8,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import kotlinx.android.synthetic.main.fragment_settings.* import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.launch +import kotlinx.android.synthetic.main.fragment_stats.* import net.pokeranalytics.android.R import net.pokeranalytics.android.calculus.Calculator import net.pokeranalytics.android.calculus.ComputedResults diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetEditTextFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetEditTextFragment.kt index b182c79b..9e6be4a7 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetEditTextFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetEditTextFragment.kt @@ -27,7 +27,7 @@ class BottomSheetEditTextFragment : BottomSheetFragment() { } override fun getValue(): Any? { - return value + return value.trim() } /** @@ -56,7 +56,7 @@ class BottomSheetEditTextFragment : BottomSheetFragment() { editText1.setOnEditorActionListener { v, actionId, event -> if (actionId == EditorInfo.IME_ACTION_DONE) { - delegate.onRowValueChanged(value, row) + delegate.onRowValueChanged(getValue(), row) dismiss() true } else { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt index dd00822f..484a04de 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListFragment.kt @@ -60,7 +60,7 @@ class BottomSheetListFragment : BottomSheetFragment(), RowRepresentableDataSourc realmData?.let { val selectedData = it[position] selectedData?.let {data -> - this.delegate.onRowValueChanged(data, row) + this.delegate.onRowValueChanged(data, this.row) dismiss() } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt index 57129a3a..4392d1c4 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/bottomsheet/BottomSheetListGameFragment.kt @@ -15,13 +15,11 @@ import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType -import timber.log.Timber -class BottomSheetListGameFragment : BottomSheetFragment(), - RowRepresentableDataSource, - RowRepresentableDelegate { +class BottomSheetListGameFragment : BottomSheetFragment(), RowRepresentableDataSource, RowRepresentableDelegate { + private var limit: Int = -1 private var realmData: RealmResults<*>? = null private lateinit var dataAdapter: RowRepresentableAdapter private val values = ArrayList() @@ -71,7 +69,7 @@ class BottomSheetListGameFragment : BottomSheetFragment(), val selectedData = it[position] selectedData?.let { data -> values[1] = data - this.delegate.onRowValueChanged(data, row) + this.delegate.onRowValueChanged(values, this.row) dismiss() } } @@ -84,6 +82,7 @@ class BottomSheetListGameFragment : BottomSheetFragment(), private fun initData() { val bottomSheetData = getData() if (bottomSheetData.isNotEmpty() && bottomSheetData.size >= 2 && bottomSheetData[1].data != null) { + this.limit = bottomSheetData[0].defaultValue as Int? ?: -1 this.realmData = bottomSheetData[1].data as RealmResults<*> } } @@ -95,7 +94,7 @@ class BottomSheetListGameFragment : BottomSheetFragment(), LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_game_list, view?.bottomSheetContainer, true) - values.add(0, null) + values.add(0, if (limit == -1) null else limit) values.add(1, null) chipGroup.removeAllViews() @@ -103,11 +102,11 @@ class BottomSheetListGameFragment : BottomSheetFragment(), val chip = Chip(requireContext()) chip.text = it.shortName chip.id = it.ordinal + chip.isChecked = it.ordinal == limit chipGroup.addView(chip) } chipGroup.setOnCheckedChangeListener { _, i -> - Timber.d("Chip selected: $i") values[0] = i } 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 43508ed7..4f4fff87 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 @@ -85,7 +85,7 @@ class BottomSheetTableSizeGridFragment : BottomSheetFragment(), } override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { - this.delegate.onRowValueChanged((this.row as TableSize).numberOfPlayer, row) + this.delegate.onRowValueChanged((row as TableSize).numberOfPlayer, this.row) dismiss() } 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 cb99a104..c15095d6 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 @@ -289,6 +289,7 @@ enum class TournamentFeatureRow : RowRepresentable { } enum class SettingRow : RowRepresentable { + GDPR, BANKROLL, GAME, LOCATION, @@ -300,7 +301,10 @@ enum class SettingRow : RowRepresentable { this.relatedResultsRepresentable?.let { return it.resId } ?: run { - return super.resId + return when (this) { + GDPR -> R.string.gdpr + else -> null + } } } @@ -314,6 +318,7 @@ enum class SettingRow : RowRepresentable { LOCATION -> LiveData.LOCATION TOURNAMENT_FEATURE -> LiveData.TOURNAMENT_FEATURE TRANSACTION_TYPE -> LiveData.TRANSACTION_TYPE + else -> null } } 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 e2072145..f760d507 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 @@ -16,8 +16,6 @@ import kotlinx.android.synthetic.main.row_title_value_action.view.* import net.pokeranalytics.android.R import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter -import net.pokeranalytics.android.ui.adapter.RowRepresentableDataSource -import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate /** * An interface used to factor the configuration of RecyclerView.ViewHolder @@ -117,7 +115,7 @@ enum class RowViewType { override fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) { itemView.rowHeaderTitleValue_title.text = row.localizedTitle(itemView.context) adapter.dataSource?.let { - itemView.rowHeaderTitleValue_value.text = it.stringForRow(row) + itemView.rowHeaderTitleValue_value.text = it.stringForRow(row, itemView.context) } val listener = View.OnClickListener { adapter.delegate?.onRowSelected(position, row) @@ -132,7 +130,7 @@ enum class RowViewType { override fun bind(position: Int, row: RowRepresentable, adapter: RowRepresentableAdapter) { itemView.rowTitleValue_title.text = row.localizedTitle(itemView.context) adapter.dataSource?.let { - itemView.rowTitleValue_value.text = it.stringForRow(row) + itemView.rowTitleValue_value.text = it.stringForRow(row, itemView.context) } val listener = View.OnClickListener { adapter.delegate?.onRowSelected(position, row) @@ -168,7 +166,7 @@ enum class RowViewType { itemView.rowTitleValueAction_title.text = row.localizedTitle(itemView.context) adapter.dataSource?.let { rowDelegate -> - val value = rowDelegate.stringForRow(row) + val value = rowDelegate.stringForRow(row, itemView.context) itemView.rowTitleValueAction_value.text = value itemView.rowTitleValueAction_action.visibility = if (value == "--") View.GONE else View.VISIBLE rowDelegate.actionIconForRow(row)?.let {icon -> 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 30a0b39a..7835adb6 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 @@ -6,13 +6,16 @@ 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 +import net.pokeranalytics.android.model.TableSize +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.util.getDayNumber import net.pokeranalytics.android.util.getShortDayName import net.pokeranalytics.android.util.toCurrency -import timber.log.Timber class SessionRowView : FrameLayout { @@ -55,16 +58,58 @@ class SessionRowView : FrameLayout { */ fun setData(session: Session) { + // Date rowHistorySession.dateDay.text = session.creationDate.getShortDayName() rowHistorySession.dateNumber.text = session.creationDate.getDayNumber() - rowHistorySession.gameType.text = session.getGameTitle() - rowHistorySession.gameInfo.text = session.getDuration(context) - rowHistorySession.gameResult.text = session.result?.netResult?.toCurrency() ?: "$0" + // Title / Game type + var title = "" + if (session.cgSmallBlind != null && session.cgBigBlind != null) { + title += session.getBlinds() + } + session.game?.let { + title += (if (title.isNotEmpty()) " " else "") + session.getGameTitle() + } + title += if (title.isEmpty()) "--" else "" - val result = session.result?.netResult ?: 0.0 - val resultColor = if (result >= 0.0) R.color.green else R.color.red - rowHistorySession.gameResult.setTextColor(ContextCompat.getColor(context, resultColor)) + rowHistorySession.sessionTitle.text = title + + // Duration + rowHistorySession.sessionInfoDurationIcon.isVisible = session.timeFrame != null + rowHistorySession.sessionInfoDurationValue.isVisible = session.timeFrame != null + session.timeFrame?.let { + rowHistorySession.sessionInfoDurationValue.text = session.getDuration(context) + } + + // Location + rowHistorySession.sessionInfoLocationIcon.isVisible = session.location != null + rowHistorySession.sessionInfoLocationValue.isVisible = session.location != null + session.location?.let { + rowHistorySession.sessionInfoLocationValue.text = it.name + } + + // Table size + rowHistorySession.sessionInfoTableIcon.isVisible = session.tableSize != null + rowHistorySession.sessionInfoTableValue.isVisible = session.tableSize != null + session.tableSize?.let { + rowHistorySession.sessionInfoTableValue.text = TableSize(it).localizedTitle(context) + } + + // State + if (session.getState() == SessionState.STARTED) { + rowHistorySession.gameResult.isVisible = false + rowHistorySession.playingIcon.isVisible = true + rowHistorySession.playingTitle.isVisible = true + } else { + rowHistorySession.gameResult.isVisible = true + rowHistorySession.playingIcon.isVisible = false + 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)) + } } diff --git a/app/src/main/java/net/pokeranalytics/android/util/Extensions.kt b/app/src/main/java/net/pokeranalytics/android/util/Extensions.kt index 9037f16a..b02ee6a0 100644 --- a/app/src/main/java/net/pokeranalytics/android/util/Extensions.kt +++ b/app/src/main/java/net/pokeranalytics/android/util/Extensions.kt @@ -104,13 +104,11 @@ fun Date.getDuration(context: Context, toDate: Date) : String { val numOfDays = (difference / (1000 * 60 * 60 * 24)) val hours = (difference / (1000 * 60 * 60)) val minutes = (difference / (1000 * 60)) % 60 - val seconds = (difference / 1000) % 60 val hoursStr = if (hours < 10) "0$hours" else "$hours" val minutesStr = if (minutes < 10) "0$minutes" else "$minutes" - val secondsStr = if (seconds < 10) "0$seconds" else "$seconds" - return "$hoursStr:$minutesStr:$secondsStr" + return "$hoursStr:$minutesStr" } diff --git a/app/src/main/res/drawable/separator.xml b/app/src/main/res/drawable/separator.xml new file mode 100644 index 00000000..0af99c11 --- /dev/null +++ b/app/src/main/res/drawable/separator.xml @@ -0,0 +1,6 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_session.xml b/app/src/main/res/layout/fragment_session.xml index ac2b1e00..1f978b8f 100644 --- a/app/src/main/res/layout/fragment_session.xml +++ b/app/src/main/res/layout/fragment_session.xml @@ -117,7 +117,7 @@ android:id="@+id/appBar" android:layout_width="match_parent" android:layout_height="128dp" - android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> + android:theme="@style/PokerAnalyticsTheme.Toolbar.Session"> - - - + app:layout_constraintStart_toStartOf="@+id/sessionTitle" + app:layout_constraintTop_toBottomOf="@+id/sessionTitle"> + + + + + + + + + + + + + + + app:layout_constraintTop_toTopOf="@+id/sessionTitle"> + android:visibility="gone" + tools:text="$1000" + tools:visibility="visible" /> + + + + diff --git a/app/src/main/res/menu/session_bottom_app_bar.xml b/app/src/main/res/menu/session_bottom_app_bar.xml deleted file mode 100644 index cab573d5..00000000 --- a/app/src/main/res/menu/session_bottom_app_bar.xml +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - \ No newline at end of file diff --git a/app/src/main/res/menu/session_toolbar.xml b/app/src/main/res/menu/session_toolbar.xml index 9f9c815e..836a654e 100644 --- a/app/src/main/res/menu/session_toolbar.xml +++ b/app/src/main/res/menu/session_toolbar.xml @@ -2,16 +2,21 @@ + + + app:showAsAction="never" /> + app:showAsAction="never" /> \ No newline at end of file diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 0d5387bc..8848770a 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -35,7 +35,6 @@ @color/white @style/PokerAnalyticsTheme.Toolbar.TitleAppearance - + + +