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 a44f8f02..685d490c 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
@@ -73,9 +74,9 @@ open class Bankroll(name: String = "") : RealmObject(), RowRepresentableDataSour
return data
}
- override fun updateValue(value: Any, row: RowRepresentable) {
+ override fun updateValue(value: Any?, row: RowRepresentable) {
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 59bce216..83f3d778 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
@@ -47,9 +47,9 @@ open class Game : RealmObject(), RowRepresentableDataSource, LiveDataDataSource,
return data
}
- override fun updateValue(value: Any, row: RowRepresentable) {
+ override fun updateValue(value: Any?, row: RowRepresentable) {
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 baf5003a..ecd880d3 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
@@ -51,9 +51,9 @@ open class Location : RealmObject(), RowRepresentableDataSource, LiveDataDataSou
return data
}
- override fun updateValue(value: Any, row: RowRepresentable) {
+ override fun updateValue(value: Any?, row: RowRepresentable) {
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 c89ea819..67564408 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
@@ -194,8 +194,35 @@ open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource
return data
}
- override fun updateValue(value: Any, row: RowRepresentable) {
- TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+ override fun updateValue(value: Any?, row: RowRepresentable) {
+ realm.beginTransaction()
+ when(row) {
+ 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 = 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)
+ timeFrame = timeFrameToUpdate
+ */
+ }
+ }
+ realm.commitTransaction()
}
}
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 d8799a63..346e7e39 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
@@ -45,9 +45,9 @@ open class TournamentFeature : RealmObject(), RowRepresentableDataSource, LiveDa
return data
}
- override fun updateValue(value: Any, row: RowRepresentable) {
+ override fun updateValue(value: Any?, row: RowRepresentable) {
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 50a7f84e..20d6e7d4 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
@@ -54,9 +54,9 @@ open class TransactionType : RealmObject(), RowRepresentableDataSource, LiveData
return data
}
- override fun updateValue(value: Any, row: RowRepresentable) {
+ override fun updateValue(value: Any?, row: RowRepresentable) {
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/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
*/
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 55%
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 46c97c87..e7d7810c 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.NewSessionFragment
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 NewSessionFragment
- fragment.setData(isTournament)
-
+ val fragment = newSessionFragment as SessionFragment
+ fragment.setData(isTournament, sessionId)
}
/**
@@ -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/fragment/EditableDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt
index 50212c16..e8d28787 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
@@ -46,6 +46,11 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate,
override fun clickOnClear(row: RowRepresentable) {
Toast.makeText(requireContext(), "Clear: $row", Toast.LENGTH_SHORT).show()
+ (this.item as RowEditable).updateValue(null, row)
+ this.getRealm().executeTransaction {
+ it.copyToRealmOrUpdate(this.item)
+ }
+ rowRepresentableAdapter.refreshRow(row)
}
override fun setValue(value: Any, row: RowRepresentable) {
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..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
@@ -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.activity.SessionActivity
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() {
@@ -56,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 {
@@ -89,29 +83,13 @@ class HistoryFragment : PokerAnalyticsFragment() {
adapter = historyAdapter
}
- it.addChangeListener { newSessions ->
- historyAdapter.notifyDataSetChanged()
+ historyAdapter.onClickOnSession = {position, session ->
+ SessionActivity.newInstance(requireContext(), sessionId = session.id)
}
- }
-
- 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()
+ it.addChangeListener { newSessions ->
+ historyAdapter.notifyDataSetChanged()
}
-
}
}
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 56%
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 c92cbf67..e5b2c165 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
@@ -6,10 +6,12 @@ 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.LiveData
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.RowRepresentableAdapter
@@ -22,10 +24,10 @@ import net.pokeranalytics.android.ui.fragment.components.DateTimePickerManager
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import java.util.*
-class NewSessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, BottomSheetDelegate {
+class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, BottomSheetDelegate {
private lateinit var currentSession: Session
- private lateinit var sessionAdapterRow : RowRepresentableAdapter
+ private lateinit var sessionAdapter : RowRepresentableAdapter
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_new_session, container, false)
@@ -33,15 +35,24 @@ class NewSessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, B
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
- initData()
initUI()
}
override fun onRowSelected(row: RowRepresentable) {
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 +62,7 @@ class NewSessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, B
}
override fun clickOnAdd(row: RowRepresentable) {
- when(row) {
+ when (row) {
SessionRow.GAME -> EditableDataActivity.newInstance(requireContext(), LiveData.GAME.ordinal)
SessionRow.BANKROLL -> EditableDataActivity.newInstance(requireContext(), LiveData.BANKROLL.ordinal)
SessionRow.LOCATION -> EditableDataActivity.newInstance(requireContext(), LiveData.LOCATION.ordinal)
@@ -59,47 +70,13 @@ class NewSessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, B
}
override fun clickOnClear(row: RowRepresentable) {
- 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)
- }
- sessionAdapterRow.notifyItemChanged(SessionRow.values().indexOf(row))
+ currentSession.updateValue(null, row)
+ sessionAdapter.refreshRow(row)
}
override fun setValue(value: Any, row: RowRepresentable) {
- 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
- }
- }
- sessionAdapterRow.notifyItemChanged(SessionRow.values().indexOf(row))
- }
-
- private fun initData() {
- currentSession = Session()
+ currentSession.updateValue(value, row)
+ sessionAdapter.refreshRow(row)
}
/**
@@ -112,12 +89,12 @@ class NewSessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, B
activity.supportActionBar?.setDisplayHomeAsUpEnabled(true)
val viewManager = LinearLayoutManager(requireContext())
- sessionAdapterRow = RowRepresentableAdapter(currentSession, this)
+ sessionAdapter = RowRepresentableAdapter(currentSession, this)
recyclerView.apply {
setHasFixedSize(true)
layoutManager = viewManager
- adapter = sessionAdapterRow
+ adapter = sessionAdapter
}
}
@@ -125,8 +102,22 @@ class NewSessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, B
/**
* 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 = RowRepresentableAdapter(currentSession, this)
+ recyclerView.adapter = sessionAdapter
+
}
}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/view/RowEditable.kt b/app/src/main/java/net/pokeranalytics/android/ui/view/RowEditable.kt
index 0313d58c..95fc3915 100644
--- a/app/src/main/java/net/pokeranalytics/android/ui/view/RowEditable.kt
+++ b/app/src/main/java/net/pokeranalytics/android/ui/view/RowEditable.kt
@@ -4,5 +4,5 @@ import net.pokeranalytics.android.ui.fragment.components.BottomSheetData
interface RowEditable {
fun getBottomSheetData(row: RowRepresentable): ArrayList
- fun updateValue(value: Any, row: RowRepresentable)
+ fun updateValue(value: Any?, row: RowRepresentable)
}
\ No newline at end of file
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