From 9de2b7a357a9434f14326e12960633b33799e1b2 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 19 Feb 2019 16:52:30 +0100 Subject: [PATCH] Update EditableDataSource interface & session details --- app/src/main/AndroidManifest.xml | 2 +- .../android/model/realm/Bankroll.kt | 7 +++--- .../android/model/realm/Game.kt | 5 ++-- .../android/model/realm/Location.kt | 5 ++-- .../android/model/realm/Session.kt | 16 +++++++------ .../android/model/realm/TournamentFeature.kt | 5 ++-- .../android/model/realm/TransactionType.kt | 5 ++-- ...wSessionActivity.kt => SessionActivity.kt} | 24 ++++++++++++------- .../ui/adapter/components/DataListAdapter.kt | 3 +-- .../ui/fragment/EditableDataFragment.kt | 6 ++++- .../android/ui/fragment/HistoryFragment.kt | 10 +++++--- .../android/ui/fragment/SessionFragment.kt | 15 ++---------- 12 files changed, 52 insertions(+), 51 deletions(-) rename app/src/main/java/net/pokeranalytics/android/ui/activity/{NewSessionActivity.kt => SessionActivity.kt} (67%) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 0d8cf486..23186ad9 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -22,7 +22,7 @@ diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt index 72422531..c75f1772 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt @@ -1,7 +1,8 @@ package net.pokeranalytics.android.model.realm import android.text.InputType -import io.realm.* +import io.realm.RealmList +import io.realm.RealmObject import io.realm.annotations.PrimaryKey import net.pokeranalytics.android.ui.adapter.components.* import net.pokeranalytics.android.ui.fragment.components.BottomSheetData @@ -68,9 +69,9 @@ open class Bankroll(name: String = "") : RealmObject(), DynamicRowDelegate, Disp return data } - override fun setBottomSheetValue(value: Any, row: DynamicRowInterface) { + override fun setBottomSheetValue(value: Any?, row: DynamicRowInterface) { when (row) { - SimpleRow.NAME -> this.name = value as String + SimpleRow.NAME -> this.name = value as String? ?: "" } } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt index d44a528b..c4dbf4ef 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt @@ -1,7 +1,6 @@ package net.pokeranalytics.android.model.realm import android.text.InputType -import io.realm.Realm import io.realm.RealmObject import io.realm.annotations.PrimaryKey import net.pokeranalytics.android.ui.adapter.components.* @@ -44,9 +43,9 @@ open class Game : RealmObject(), DynamicRowDelegate, DisplayableDataSource, Edit return data } - override fun setBottomSheetValue(value: Any, row: DynamicRowInterface) { + override fun setBottomSheetValue(value: Any?, row: DynamicRowInterface) { when (row) { - SimpleRow.NAME -> this.name = value as String + SimpleRow.NAME -> this.name = value as String? ?: "" } } } diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt index 2566bf61..6869c726 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt @@ -1,7 +1,6 @@ package net.pokeranalytics.android.model.realm import android.text.InputType -import io.realm.Realm import io.realm.RealmObject import io.realm.annotations.PrimaryKey import net.pokeranalytics.android.ui.adapter.components.* @@ -48,9 +47,9 @@ open class Location : RealmObject(), DynamicRowDelegate, DisplayableDataSource, return data } - override fun setBottomSheetValue(value: Any, row: DynamicRowInterface) { + override fun setBottomSheetValue(value: Any?, row: DynamicRowInterface) { when (row) { - SimpleRow.NAME -> this.name = value as String + SimpleRow.NAME -> this.name = value as String? ?: "" } } 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 eda111d9..76cd9dc7 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 @@ -191,22 +191,24 @@ open class Session : RealmObject(), SessionInterface, DynamicRowDelegate, Displa } - override fun setBottomSheetValue(value: Any, row: DynamicRowInterface) { + override fun setBottomSheetValue(value: Any?, row: DynamicRowInterface) { realm.beginTransaction() when(row) { - SessionRow.GAME -> if (value is Game) game = value - SessionRow.BANKROLL -> if (value is Bankroll) bankroll = value - SessionRow.LOCATION -> if (value is Location) location = value - SessionRow.COMMENT -> if (value is String) comment = value + SessionRow.GAME -> game = value as Game? + SessionRow.BANKROLL -> bankroll = value as Bankroll? + SessionRow.LOCATION -> location = value as Location? + SessionRow.COMMENT -> comment = value as String? ?: "" SessionRow.BLINDS -> if (value is ArrayList<*>) { - cgSmallBlind = (value[0] as String? ?: "0").toDouble() - cgBigBlind = (value[1] as String? ?: "0").toDouble() + cgSmallBlind = try {(value[0] as String? ?: "0").toDouble()} catch (e:Exception) {null} + cgBigBlind = try {(value[1] as String? ?: "0").toDouble()} catch (e:Exception) {null} } + //TODO: Update SessionRow.START_DATE -> if (value is Date) { val timeFrameToUpdate = timeFrame ?: TimeFrame() timeFrameToUpdate.setDate(value, null) timeFrame = timeFrameToUpdate } + //TODO: Update SessionRow.END_DATE -> if (value is Date) { val timeFrameToUpdate = timeFrame ?: TimeFrame() timeFrameToUpdate.setDate(timeFrame?.startDate ?: Date(), value) diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt index 6f6277cc..d42ae3e1 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt @@ -1,7 +1,6 @@ package net.pokeranalytics.android.model.realm import android.text.InputType -import io.realm.Realm import io.realm.RealmObject import io.realm.annotations.PrimaryKey import net.pokeranalytics.android.ui.adapter.components.* @@ -42,9 +41,9 @@ open class TournamentFeature : RealmObject(), DynamicRowDelegate, DisplayableDat return data } - override fun setBottomSheetValue(value: Any, row: DynamicRowInterface) { + override fun setBottomSheetValue(value: Any?, row: DynamicRowInterface) { when (row) { - SimpleRow.NAME -> this.name = value as String + SimpleRow.NAME -> this.name = value as String? ?: "" } } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt index da1b7ed0..53753df1 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt @@ -1,7 +1,6 @@ package net.pokeranalytics.android.model.realm import android.text.InputType -import io.realm.Realm import io.realm.RealmObject import io.realm.annotations.PrimaryKey import net.pokeranalytics.android.ui.adapter.components.* @@ -51,9 +50,9 @@ open class TransactionType : RealmObject(), DynamicRowDelegate, DisplayableDataS return data } - override fun setBottomSheetValue(value: Any, row: DynamicRowInterface) { + override fun setBottomSheetValue(value: Any?, row: DynamicRowInterface) { when (row) { - SimpleRow.NAME -> this.name = value as String + SimpleRow.NAME -> this.name = value as String? ?: "" } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/NewSessionActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/SessionActivity.kt similarity index 67% rename from app/src/main/java/net/pokeranalytics/android/ui/activity/NewSessionActivity.kt rename to app/src/main/java/net/pokeranalytics/android/ui/activity/SessionActivity.kt index 886f298e..0766a360 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/NewSessionActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/SessionActivity.kt @@ -5,17 +5,26 @@ import android.content.Intent import android.os.Bundle import kotlinx.android.synthetic.main.activity_new_session.* import net.pokeranalytics.android.R -import net.pokeranalytics.android.ui.fragment.SessionFragment import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity +import net.pokeranalytics.android.ui.fragment.SessionFragment -class NewSessionActivity: PokerAnalyticsActivity() { +class SessionActivity: PokerAnalyticsActivity() { companion object { - fun newInstance(context: Context, isTournament: Boolean) { - val intent = Intent(context, NewSessionActivity::class.java) - intent.putExtra("is_tournament", isTournament) + fun newInstance(context: Context, isTournament: Boolean? = false, sessionId: String? = "") { + val intent = Intent(context, SessionActivity::class.java) + + isTournament?.let { + intent.putExtra("is_tournament", isTournament) + } + + sessionId?.let { + intent.putExtra("session_id", sessionId) + } + context.startActivity(intent) } + } override fun onCreate(savedInstanceState: Bundle?) { @@ -29,11 +38,10 @@ class NewSessionActivity: PokerAnalyticsActivity() { * Init UI */ private fun initUI() { - + val sessionId = intent.getStringExtra("session_id") val isTournament = intent.getBooleanExtra("is_tournament", false) val fragment = newSessionFragment as SessionFragment fragment.setData(isTournament) - } /** @@ -41,8 +49,6 @@ class NewSessionActivity: PokerAnalyticsActivity() { */ private fun initData() { - - } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DataListAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DataListAdapter.kt index c899a62f..21e6ad4d 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DataListAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DataListAdapter.kt @@ -6,7 +6,6 @@ import android.view.ViewGroup import androidx.appcompat.widget.AppCompatTextView import androidx.constraintlayout.widget.ConstraintLayout import androidx.recyclerview.widget.RecyclerView -import io.realm.Realm import net.pokeranalytics.android.R import net.pokeranalytics.android.ui.fragment.components.BottomSheetData @@ -23,7 +22,7 @@ interface DisplayableDataSource { interface EditableDataSource { fun getBottomSheetData(row: DynamicRowInterface): ArrayList - fun setBottomSheetValue(value: Any, row: DynamicRowInterface) + fun setBottomSheetValue(value: Any?, row: DynamicRowInterface) } class DataListAdapter(var delegate: DisplayableDelegate, var layout: Int? = null) : RecyclerView.Adapter() { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt index 0b44efdd..23fe7493 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt @@ -43,7 +43,11 @@ class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback, Botto } override fun clickOnClear(row: DynamicRowInterface) { - Toast.makeText(requireContext(), "Clear: $row", Toast.LENGTH_SHORT).show() + (this.item as EditableDataSource).setBottomSheetValue(null, row) + this.getRealm().executeTransaction { + it.copyToRealmOrUpdate(this.item) + } + dynamicListAdapter.refreshRow(row) } override fun setValue(value: Any, row: DynamicRowInterface) { diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt index 8003345d..517aeca3 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt @@ -10,7 +10,7 @@ import io.realm.RealmResults import kotlinx.android.synthetic.main.fragment_history.* import net.pokeranalytics.android.R import net.pokeranalytics.android.model.realm.Session -import net.pokeranalytics.android.ui.activity.NewSessionActivity +import net.pokeranalytics.android.ui.activity.SessionActivity import net.pokeranalytics.android.ui.adapter.HistoryAdapter import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.util.data.sessionDao @@ -50,11 +50,11 @@ class HistoryFragment : PokerAnalyticsFragment() { private fun initUI() { newSession.setOnClickListener { - NewSessionActivity.newInstance(requireContext(), false) + SessionActivity.newInstance(requireContext(), false) } newTournament.setOnClickListener { - NewSessionActivity.newInstance(requireContext(), true) + SessionActivity.newInstance(requireContext(), true) } newHand.setOnClickListener { @@ -83,6 +83,10 @@ class HistoryFragment : PokerAnalyticsFragment() { adapter = historyAdapter } + historyAdapter.onClickOnSession = {position, session -> + SessionActivity.newInstance(requireContext(), sessionId = session.id) + } + it.addChangeListener { newSessions -> historyAdapter.notifyDataSetChanged() } 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 f2607dce..5b7809f2 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 @@ -59,19 +59,8 @@ class SessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomShee } override fun clickOnClear(row: DynamicRowInterface) { - when(row) { - SessionRow.GAME -> currentSession.game = null - SessionRow.BANKROLL -> currentSession.bankroll = null - SessionRow.LOCATION -> currentSession.location = null - SessionRow.BLINDS -> { - currentSession.cgSmallBlind = null - currentSession.cgBigBlind = null - } - SessionRow.COMMENT -> currentSession.comment = "" - SessionRow.START_DATE -> currentSession.timeFrame?.setDate(Date(), null) - SessionRow.END_DATE -> currentSession.timeFrame?.setDate(Date(), null) - } - sessionAdapter.notifyItemChanged(SessionRow.values().indexOf(row)) + currentSession.setBottomSheetValue(null, row) + sessionAdapter.refreshRow(row) } override fun setValue(value: Any, row: DynamicRowInterface) {