diff --git a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt index a9b1286f..f884ce17 100644 --- a/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt +++ b/app/src/main/java/net/pokeranalytics/android/PokerAnalyticsApplication.kt @@ -5,6 +5,7 @@ import io.realm.Realm import io.realm.RealmConfiguration import io.realm.RealmResults import io.realm.kotlin.where +import net.pokeranalytics.android.model.Limit import net.pokeranalytics.android.model.realm.Game import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.util.PokerAnalyticsLogs @@ -52,6 +53,8 @@ class PokerAnalyticsApplication : Application() { */ } + Limit.init(this) + if (BuildConfig.DEBUG) { // Logs Timber.plant(PokerAnalyticsLogs()) diff --git a/app/src/main/java/net/pokeranalytics/android/model/Limit.kt b/app/src/main/java/net/pokeranalytics/android/model/Limit.kt new file mode 100644 index 00000000..ca9f5402 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/model/Limit.kt @@ -0,0 +1,26 @@ +package net.pokeranalytics.android.model + +import android.content.Context +import net.pokeranalytics.android.R + +class Limit { + + companion object { + private val values = ArrayList() + fun init(context: Context) { + values.clear() + values.addAll(context.resources.getStringArray(R.array.limit_short_name)) + } + + /** + * Get a limit name + */ + fun get(index: Int) : String? { + if (index >= 0 && index < values.size) { + return values[index] + } + return "" + } + } + +} \ No newline at end of file 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 0b3a11ec..21d64b97 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 @@ -8,6 +8,7 @@ import io.realm.annotations.Ignore import io.realm.annotations.PrimaryKey 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.ObjectSavable import net.pokeranalytics.android.model.extensions.SessionState @@ -21,6 +22,7 @@ import net.pokeranalytics.android.util.getDuration import net.pokeranalytics.android.util.round import net.pokeranalytics.android.util.short import net.pokeranalytics.android.util.toCurrency +import timber.log.Timber import java.util.* import kotlin.collections.ArrayList @@ -198,13 +200,13 @@ open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource */ fun getGameTitle(): String { var gameTitle = "" - if (limit != null) { - gameTitle += limit + limit?.let { + gameTitle += Limit.get(it) + " " } if (game != null) { gameTitle += game?.name } - return gameTitle + return if (gameTitle.isNotBlank()) gameTitle else "--" } companion object { @@ -272,7 +274,7 @@ open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource return when (row) { SessionRow.BUY_IN -> buyin.toCurrency() SessionRow.BLINDS -> if (cgSmallBlind != null && cgBigBlind != null) "$cgSmallBlind / $cgBigBlind" else "--" - SessionRow.GAME -> game?.name ?: "--" + SessionRow.GAME -> getGameTitle() SessionRow.LOCATION -> location?.name ?: "--" SessionRow.BANKROLL -> bankroll?.name ?: "--" SessionRow.TABLE_SIZE -> tableSize?.toString() ?: "--" @@ -370,7 +372,22 @@ open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource result = localResult } SessionRow.TABLE_SIZE -> tableSize = value as Int? - SessionRow.GAME -> game = value as Game? + SessionRow.GAME -> { + if (value is ArrayList<*>) { + Timber.d("${value[0]}") + Timber.d("${value[1]}") + limit = try { + (value[0] as Int?) + } catch (e: Exception) { + null + } + game = try { + (value[1] as Game?) + } catch (e: Exception) { + null + } + } + } SessionRow.BANKROLL -> bankroll = value as Bankroll? SessionRow.LOCATION -> location = value as Location? SessionRow.COMMENT -> comment = value as String? ?: "" 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 ad37aa93..deb023f0 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 @@ -4,22 +4,24 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import androidx.recyclerview.widget.LinearLayoutManager +import com.google.android.material.chip.Chip import io.realm.RealmResults import kotlinx.android.synthetic.main.bottom_sheet_game_list.* import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* import net.pokeranalytics.android.R -import net.pokeranalytics.android.ui.adapter.LimitTypesAdapter import net.pokeranalytics.android.ui.adapter.components.RowRepresentableAdapter import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDataSource import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDelegate import net.pokeranalytics.android.ui.view.RowRepresentable import net.pokeranalytics.android.ui.view.RowViewType +import timber.log.Timber class BottomSheetListGameFragment : BottomSheetFragment(), RowRepresentableDataSource, RowRepresentableDelegate { private var realmData: RealmResults<*>? = null private lateinit var dataAdapter: RowRepresentableAdapter + private val values = ArrayList() override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -32,6 +34,9 @@ class BottomSheetListGameFragment : BottomSheetFragment(), RowRepresentableDataS dataAdapter.notifyDataSetChanged() } + override fun getValue(): Any? { + return values + } override fun rowRepresentableForPosition(position: Int): RowRepresentable { realmData?.let { @@ -61,8 +66,9 @@ class BottomSheetListGameFragment : BottomSheetFragment(), RowRepresentableDataS override fun onIndexSelected(position: Int) { realmData?.let { val selectedData = it[position] - selectedData?.let {data -> - bottomSheetDelegate.setValue(data, row) + selectedData?.let { data -> + values[1] = data + bottomSheetDelegate.setValue(values, row) dismiss() } } @@ -86,18 +92,23 @@ class BottomSheetListGameFragment : BottomSheetFragment(), RowRepresentableDataS LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_game_list, view?.bottomSheetContainer, true) + values.add(0, null) + values.add(1, null) + val limits = ArrayList() limits.addAll(resources.getStringArray(R.array.limit_short_name)) + chipGroup.removeAllViews() + for ((index, limit) in limits.withIndex()) { + val chip = Chip(requireContext()) + chip.text = limit + chip.id = index + chipGroup.addView(chip) + } - val viewManager1 = LinearLayoutManager(requireContext()) - val gameDataAdapter1 = LimitTypesAdapter(limits) - - recyclerView1.apply { - setHasFixedSize(true) - layoutManager = viewManager1 - adapter = gameDataAdapter1 - isNestedScrollingEnabled = false + chipGroup.setOnCheckedChangeListener { chipGroup, 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 0161b68c..b286df75 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 @@ -10,6 +10,7 @@ import net.pokeranalytics.android.R 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 class SessionRowView : FrameLayout { @@ -55,17 +56,9 @@ class SessionRowView : FrameLayout { rowHistorySession.dateDay.text = session.creationDate.getShortDayName() rowHistorySession.dateNumber.text = session.creationDate.getDayNumber() - // TODO - - var gameTitle = session.getGameTitle() - if (gameTitle.isEmpty()) { - gameTitle = "Game title here" - } - - rowHistorySession.gameType.text = gameTitle - + rowHistorySession.gameType.text = session.getGameTitle() rowHistorySession.gameInfo.text = session.getDuration(context) - rowHistorySession.gameResult.text = "$ 0" + rowHistorySession.gameResult.text = session.result?.netResult?.toCurrency() ?: "$0" } diff --git a/app/src/main/res/color/chips_background_states.xml b/app/src/main/res/color/chips_background_states.xml new file mode 100755 index 00000000..7d57a042 --- /dev/null +++ b/app/src/main/res/color/chips_background_states.xml @@ -0,0 +1,5 @@ + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/bottom_sheet_game_list.xml b/app/src/main/res/layout/bottom_sheet_game_list.xml index 7f658f14..7f5a61b1 100644 --- a/app/src/main/res/layout/bottom_sheet_game_list.xml +++ b/app/src/main/res/layout/bottom_sheet_game_list.xml @@ -2,16 +2,62 @@ - + app:layout_constraintTop_toTopOf="parent"> + + + + + + + + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/chips" /> \ 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 2d74bac0..6da823a1 100644 --- a/app/src/main/res/layout/fragment_session.xml +++ b/app/src/main/res/layout/fragment_session.xml @@ -47,7 +47,7 @@ android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginBottom="16dp" - android:text="2h33" + android:text="-" android:textSize="24sp" app:fontFamily="@font/roboto_bold" app:layout_constraintBottom_toBottomOf="parent" @@ -75,7 +75,7 @@ android:layout_height="wrap_content" android:layout_marginEnd="16dp" android:layout_marginBottom="16dp" - android:text="$ 325" + android:text="-" android:textColor="@color/green" android:textSize="28sp" app:layout_constraintBottom_toBottomOf="parent" diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index c0eb1bdd..aa5feb46 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -15,6 +15,7 @@ @style/PokerAnalyticsTheme.EditText @style/PokerAnalyticsTheme.TextView @style/PokerAnalyticsTheme.AlertDialog + @style/PokerAnalyticsTheme.Chip @@ -159,5 +160,13 @@ @font/roboto_bold + +