From 9394eb042336da614a3c5a6a27d9387cd1d0e551 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 19 Feb 2019 16:17:07 +0100 Subject: [PATCH 1/4] Update Session data management --- .../android/model/realm/Session.kt | 25 ++++++++++++++- .../android/ui/activity/NewSessionActivity.kt | 4 +-- .../android/ui/fragment/HistoryFragment.kt | 26 --------------- ...wSessionFragment.kt => SessionFragment.kt} | 32 +++++-------------- .../main/res/layout/activity_new_session.xml | 2 +- 5 files changed, 35 insertions(+), 54 deletions(-) rename app/src/main/java/net/pokeranalytics/android/ui/fragment/{NewSessionFragment.kt => SessionFragment.kt} (76%) 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 37745774..eda111d9 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 @@ -190,8 +190,31 @@ open class Session : RealmObject(), SessionInterface, DynamicRowDelegate, Displa return data } + override fun setBottomSheetValue(value: Any, row: DynamicRowInterface) { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + 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.BLINDS -> if (value is ArrayList<*>) { + cgSmallBlind = (value[0] as String? ?: "0").toDouble() + cgBigBlind = (value[1] as String? ?: "0").toDouble() + } + SessionRow.START_DATE -> if (value is Date) { + val timeFrameToUpdate = timeFrame ?: TimeFrame() + timeFrameToUpdate.setDate(value, null) + timeFrame = timeFrameToUpdate + } + SessionRow.END_DATE -> if (value is Date) { + val timeFrameToUpdate = timeFrame ?: TimeFrame() + timeFrameToUpdate.setDate(timeFrame?.startDate ?: Date(), value) + timeFrame = timeFrameToUpdate + } + } + realm.commitTransaction() + } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/NewSessionActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/NewSessionActivity.kt index 46c97c87..886f298e 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/NewSessionActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/NewSessionActivity.kt @@ -5,7 +5,7 @@ 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.NewSessionFragment +import net.pokeranalytics.android.ui.fragment.SessionFragment import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity class NewSessionActivity: PokerAnalyticsActivity() { @@ -31,7 +31,7 @@ class NewSessionActivity: PokerAnalyticsActivity() { private fun initUI() { val isTournament = intent.getBooleanExtra("is_tournament", false) - val fragment = newSessionFragment as NewSessionFragment + val fragment = newSessionFragment as SessionFragment fragment.setData(isTournament) } 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 9b6c9118..8003345d 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 @@ -6,20 +6,14 @@ import android.view.View import android.view.ViewGroup import android.widget.Toast import androidx.recyclerview.widget.LinearLayoutManager -import io.realm.Realm import io.realm.RealmResults import kotlinx.android.synthetic.main.fragment_history.* -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.GlobalScope -import kotlinx.coroutines.delay -import kotlinx.coroutines.launch import net.pokeranalytics.android.R import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.ui.activity.NewSessionActivity import net.pokeranalytics.android.ui.adapter.HistoryAdapter import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.util.data.sessionDao -import java.util.* class HistoryFragment : PokerAnalyticsFragment() { @@ -92,26 +86,6 @@ class HistoryFragment : PokerAnalyticsFragment() { it.addChangeListener { newSessions -> historyAdapter.notifyDataSetChanged() } - - } - - GlobalScope.launch(Dispatchers.Main) { - delay(2000) - - realmSessions?.first()?.let { - - val realm = Realm.getDefaultInstance() - - val mySession = realm.copyFromRealm(it) - mySession.creationDate = Date() - - realm.beginTransaction() - realm.copyToRealmOrUpdate(mySession) - realm.commitTransaction() - - realm.close() - } - } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt similarity index 76% rename from app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt rename to app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt index e5a498c0..f2607dce 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt @@ -9,7 +9,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import kotlinx.android.synthetic.main.fragment_new_session.* import net.pokeranalytics.android.R import net.pokeranalytics.android.model.DataList -import net.pokeranalytics.android.model.realm.* +import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.ui.activity.EditableDataActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.adapter.components.DynamicListAdapter @@ -22,7 +22,7 @@ import net.pokeranalytics.android.ui.fragment.components.DateTimePickerManager import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import java.util.* -class NewSessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomSheetDelegate { +class SessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomSheetDelegate { private lateinit var currentSession: Session private lateinit var sessionAdapter : DynamicListAdapter @@ -75,31 +75,15 @@ class NewSessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomS } override fun setValue(value: Any, row: DynamicRowInterface) { - when(row) { - SessionRow.GAME -> if (value is Game) currentSession.game = value - SessionRow.BANKROLL -> if (value is Bankroll) currentSession.bankroll = value - SessionRow.LOCATION -> if (value is Location) currentSession.location = value - SessionRow.COMMENT -> if (value is String) currentSession.comment = value - SessionRow.BLINDS -> if (value is ArrayList<*>) { - currentSession.cgSmallBlind = (value[0] as String? ?: "0").toDouble() - currentSession.cgBigBlind = (value[1] as String? ?: "0").toDouble() - } - SessionRow.START_DATE -> if (value is Date) { - val timeFrame = currentSession.timeFrame ?: TimeFrame() - timeFrame.setDate(value, null) - currentSession.timeFrame = timeFrame - } - SessionRow.END_DATE -> if (value is Date) { - val timeFrame = currentSession.timeFrame ?: TimeFrame() - timeFrame.setDate(timeFrame.startDate, value) - currentSession.timeFrame = timeFrame - } - } - sessionAdapter.notifyItemChanged(SessionRow.values().indexOf(row)) + currentSession.setBottomSheetValue(value, row) + sessionAdapter.refreshRow(row) } private fun initData() { - currentSession = Session() + val realm = getRealm() + realm.beginTransaction() + currentSession = realm.createObject(Session::class.java, UUID.randomUUID().toString()) + realm.commitTransaction() } /** diff --git a/app/src/main/res/layout/activity_new_session.xml b/app/src/main/res/layout/activity_new_session.xml index 0ffe46ae..3305e157 100644 --- a/app/src/main/res/layout/activity_new_session.xml +++ b/app/src/main/res/layout/activity_new_session.xml @@ -8,6 +8,6 @@ android:id="@+id/newSessionFragment" android:layout_width="match_parent" android:layout_height="match_parent" - android:name="net.pokeranalytics.android.ui.fragment.NewSessionFragment" /> + android:name="net.pokeranalytics.android.ui.fragment.SessionFragment" /> \ No newline at end of file From 9de2b7a357a9434f14326e12960633b33799e1b2 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 19 Feb 2019 16:52:30 +0100 Subject: [PATCH 2/4] 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) { From 9be6c362841b9e78858d9b7b17d05c27815eba05 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 19 Feb 2019 17:08:42 +0100 Subject: [PATCH 3/4] Remove data creation method --- .../android/ui/activity/HomeActivity.kt | 27 +------------------ 1 file changed, 1 insertion(+), 26 deletions(-) diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt index d20aa00a..b8203b78 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt @@ -4,16 +4,12 @@ import android.content.Context import android.content.Intent import android.os.Bundle import com.google.android.material.bottomnavigation.BottomNavigationView -import io.realm.Realm import kotlinx.android.synthetic.main.activity_home.* import net.pokeranalytics.android.R -import net.pokeranalytics.android.model.realm.Session +import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.fragment.HistoryFragment import net.pokeranalytics.android.ui.fragment.SettingsFragment import net.pokeranalytics.android.ui.fragment.StatsFragment -import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity -import net.pokeranalytics.android.util.data.sessionDao -import java.util.* @@ -49,7 +45,6 @@ class HomeActivity : PokerAnalyticsActivity() { super.onCreate(savedInstanceState) setContentView(net.pokeranalytics.android.R.layout.activity_home) - createDefaultSessions() initUI() } @@ -61,26 +56,6 @@ class HomeActivity : PokerAnalyticsActivity() { navigation.selectedItemId = net.pokeranalytics.android.R.id.navigation_history } - /** - * Create default data - */ - private fun createDefaultSessions() { - - val realm = Realm.getDefaultInstance() - if (realm.where(Session::class.java).findAll().isEmpty()) { - realm.sessionDao().deleteAllSessions() - val data = ArrayList() - for (i in 0..100) { - val session = Session() - session.creationDate = Date() - data.add(session) - } - realm.sessionDao().createOrUpdateSessions(data) - } - realm.close() - - } - /** * Display a new fragment */ From c1ac9c79fba299253b711e114007e3affc23c4b9 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Tue, 19 Feb 2019 17:09:02 +0100 Subject: [PATCH 4/4] Update session fragment access --- .../android/model/realm/Session.kt | 4 ++ .../android/ui/activity/SessionActivity.kt | 2 +- .../android/ui/fragment/SessionFragment.kt | 47 ++++++++++++------- 3 files changed, 36 insertions(+), 17 deletions(-) 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 76cd9dc7..50fefa73 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 @@ -204,15 +204,19 @@ open class Session : RealmObject(), SessionInterface, DynamicRowDelegate, Displa } //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) timeFrame = timeFrameToUpdate + */ } } realm.commitTransaction() diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/SessionActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/SessionActivity.kt index 0766a360..e7d7810c 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/SessionActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/SessionActivity.kt @@ -41,7 +41,7 @@ class SessionActivity: PokerAnalyticsActivity() { val sessionId = intent.getStringExtra("session_id") val isTournament = intent.getBooleanExtra("is_tournament", false) val fragment = newSessionFragment as SessionFragment - fragment.setData(isTournament) + fragment.setData(isTournament, sessionId) } /** 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 5b7809f2..99222a26 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 @@ -6,6 +6,7 @@ import android.view.View import android.view.ViewGroup import android.widget.Toast import androidx.recyclerview.widget.LinearLayoutManager +import io.realm.kotlin.where import kotlinx.android.synthetic.main.fragment_new_session.* import net.pokeranalytics.android.R import net.pokeranalytics.android.model.DataList @@ -25,7 +26,7 @@ import java.util.* class SessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomSheetDelegate { private lateinit var currentSession: Session - private lateinit var sessionAdapter : DynamicListAdapter + private lateinit var sessionAdapter: DynamicListAdapter override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_new_session, container, false) @@ -33,15 +34,24 @@ class SessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomShee override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) - initData() initUI() } override fun onRowSelected(row: DynamicRowInterface) { val data = currentSession.getBottomSheetData(row) - when(row) { - SessionRow.START_DATE -> DateTimePickerManager.create(requireContext(), row, this, currentSession.timeFrame?.startDate) - SessionRow.END_DATE -> DateTimePickerManager.create(requireContext(), row, this, currentSession.timeFrame?.endDate) + when (row) { + SessionRow.START_DATE -> DateTimePickerManager.create( + requireContext(), + row, + this, + currentSession.timeFrame?.startDate + ) + SessionRow.END_DATE -> DateTimePickerManager.create( + requireContext(), + row, + this, + currentSession.timeFrame?.endDate + ) else -> BottomSheetFragment.create(fragmentManager, row, this, data) } } @@ -51,7 +61,7 @@ class SessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomShee } override fun clickOnAdd(row: DynamicRowInterface) { - when(row) { + when (row) { SessionRow.GAME -> EditableDataActivity.newInstance(requireContext(), DataList.GAME.ordinal) SessionRow.BANKROLL -> EditableDataActivity.newInstance(requireContext(), DataList.BANKROLL.ordinal) SessionRow.LOCATION -> EditableDataActivity.newInstance(requireContext(), DataList.LOCATION.ordinal) @@ -68,13 +78,6 @@ class SessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomShee sessionAdapter.refreshRow(row) } - private fun initData() { - val realm = getRealm() - realm.beginTransaction() - currentSession = realm.createObject(Session::class.java, UUID.randomUUID().toString()) - realm.commitTransaction() - } - /** * Init UI */ @@ -85,12 +88,10 @@ class SessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomShee activity.supportActionBar?.setDisplayHomeAsUpEnabled(true) val viewManager = LinearLayoutManager(requireContext()) - sessionAdapter = DynamicListAdapter(currentSession, this) recyclerView.apply { setHasFixedSize(true) layoutManager = viewManager - adapter = sessionAdapter } } @@ -98,8 +99,22 @@ class SessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomShee /** * Set fragment data */ - fun setData(isTournament: Boolean) { + fun setData(isTournament: Boolean, sessionId: String) { toolbar.title = if (isTournament) "Tournament" else "Cash game" + + val realm = getRealm() + val sessionRealm = realm.where().equalTo("id", sessionId).findFirst() + if (sessionRealm != null) { + currentSession = sessionRealm + } else { + realm.beginTransaction() + currentSession = realm.createObject(Session::class.java, UUID.randomUUID().toString()) + realm.commitTransaction() + } + + sessionAdapter = DynamicListAdapter(currentSession, this) + recyclerView.adapter = sessionAdapter + } } \ No newline at end of file