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 bde9ee18..1fca6f2e 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,12 +362,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/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/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/view/SessionRowView.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/SessionRowView.kt index 30a0b39a..b791200e 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 += 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.all[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/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..97a13d55 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -31,11 +31,9 @@ - + + +