merge conflict fix

dev_raz_wip
Razmig Sarkissian 7 years ago
commit b569f1c888
  1. 2
      app/src/main/AndroidManifest.xml
  2. 7
      app/src/main/java/net/pokeranalytics/android/model/realm/Bankroll.kt
  3. 4
      app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt
  4. 4
      app/src/main/java/net/pokeranalytics/android/model/realm/Location.kt
  5. 31
      app/src/main/java/net/pokeranalytics/android/model/realm/Session.kt
  6. 4
      app/src/main/java/net/pokeranalytics/android/model/realm/TournamentFeature.kt
  7. 4
      app/src/main/java/net/pokeranalytics/android/model/realm/TransactionType.kt
  8. 27
      app/src/main/java/net/pokeranalytics/android/ui/activity/HomeActivity.kt
  9. 28
      app/src/main/java/net/pokeranalytics/android/ui/activity/SessionActivity.kt
  10. 5
      app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt
  11. 36
      app/src/main/java/net/pokeranalytics/android/ui/fragment/HistoryFragment.kt
  12. 87
      app/src/main/java/net/pokeranalytics/android/ui/fragment/SessionFragment.kt
  13. 2
      app/src/main/java/net/pokeranalytics/android/ui/view/RowEditable.kt
  14. 2
      app/src/main/res/layout/activity_new_session.xml

@ -22,7 +22,7 @@
</activity> </activity>
<activity android:name=".ui.activity.DataListActivity" /> <activity android:name=".ui.activity.DataListActivity" />
<activity <activity
android:name=".ui.activity.NewSessionActivity" android:name=".ui.activity.SessionActivity"
android:launchMode="singleTop"/> android:launchMode="singleTop"/>
<activity android:name=".ui.activity.EditableDataActivity"/> <activity android:name=".ui.activity.EditableDataActivity"/>

@ -1,7 +1,8 @@
package net.pokeranalytics.android.model.realm package net.pokeranalytics.android.model.realm
import android.text.InputType import android.text.InputType
import io.realm.* import io.realm.RealmList
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey import io.realm.annotations.PrimaryKey
import net.pokeranalytics.android.ui.adapter.components.* import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.ui.fragment.components.BottomSheetData import net.pokeranalytics.android.ui.fragment.components.BottomSheetData
@ -73,9 +74,9 @@ open class Bankroll(name: String = "") : RealmObject(), RowRepresentableDataSour
return data return data
} }
override fun updateValue(value: Any, row: RowRepresentable) { override fun updateValue(value: Any?, row: RowRepresentable) {
when (row) { when (row) {
SimpleRow.NAME -> this.name = value as String SimpleRow.NAME -> this.name = value as String? ?: ""
} }
} }
} }

@ -47,9 +47,9 @@ open class Game : RealmObject(), RowRepresentableDataSource, LiveDataDataSource,
return data return data
} }
override fun updateValue(value: Any, row: RowRepresentable) { override fun updateValue(value: Any?, row: RowRepresentable) {
when (row) { when (row) {
SimpleRow.NAME -> this.name = value as String SimpleRow.NAME -> this.name = value as String? ?: ""
} }
} }
} }

@ -51,9 +51,9 @@ open class Location : RealmObject(), RowRepresentableDataSource, LiveDataDataSou
return data return data
} }
override fun updateValue(value: Any, row: RowRepresentable) { override fun updateValue(value: Any?, row: RowRepresentable) {
when (row) { when (row) {
SimpleRow.NAME -> this.name = value as String SimpleRow.NAME -> this.name = value as String? ?: ""
} }
} }

@ -194,8 +194,35 @@ open class Session : RealmObject(), SessionInterface, RowRepresentableDataSource
return data return data
} }
override fun updateValue(value: Any, row: RowRepresentable) { override fun updateValue(value: Any?, row: RowRepresentable) {
TODO("not implemented") //To change body of created functions use File | Settings | File Templates. 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()
} }
} }

@ -45,9 +45,9 @@ open class TournamentFeature : RealmObject(), RowRepresentableDataSource, LiveDa
return data return data
} }
override fun updateValue(value: Any, row: RowRepresentable) { override fun updateValue(value: Any?, row: RowRepresentable) {
when (row) { when (row) {
SimpleRow.NAME -> this.name = value as String SimpleRow.NAME -> this.name = value as String? ?: ""
} }
} }
} }

@ -54,9 +54,9 @@ open class TransactionType : RealmObject(), RowRepresentableDataSource, LiveData
return data return data
} }
override fun updateValue(value: Any, row: RowRepresentable) { override fun updateValue(value: Any?, row: RowRepresentable) {
when (row) { when (row) {
SimpleRow.NAME -> this.name = value as String SimpleRow.NAME -> this.name = value as String? ?: ""
} }
} }

@ -4,16 +4,12 @@ import android.content.Context
import android.content.Intent import android.content.Intent
import android.os.Bundle import android.os.Bundle
import com.google.android.material.bottomnavigation.BottomNavigationView import com.google.android.material.bottomnavigation.BottomNavigationView
import io.realm.Realm
import kotlinx.android.synthetic.main.activity_home.* import kotlinx.android.synthetic.main.activity_home.*
import net.pokeranalytics.android.R 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.HistoryFragment
import net.pokeranalytics.android.ui.fragment.SettingsFragment import net.pokeranalytics.android.ui.fragment.SettingsFragment
import net.pokeranalytics.android.ui.fragment.StatsFragment 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) super.onCreate(savedInstanceState)
setContentView(net.pokeranalytics.android.R.layout.activity_home) setContentView(net.pokeranalytics.android.R.layout.activity_home)
createDefaultSessions()
initUI() initUI()
} }
@ -61,26 +56,6 @@ class HomeActivity : PokerAnalyticsActivity() {
navigation.selectedItemId = net.pokeranalytics.android.R.id.navigation_history 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<Session>()
for (i in 0..100) {
val session = Session()
session.creationDate = Date()
data.add(session)
}
realm.sessionDao().createOrUpdateSessions(data)
}
realm.close()
}
/** /**
* Display a new fragment * Display a new fragment
*/ */

@ -5,17 +5,26 @@ import android.content.Intent
import android.os.Bundle import android.os.Bundle
import kotlinx.android.synthetic.main.activity_new_session.* import kotlinx.android.synthetic.main.activity_new_session.*
import net.pokeranalytics.android.R 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.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.fragment.SessionFragment
class NewSessionActivity: PokerAnalyticsActivity() { class SessionActivity: PokerAnalyticsActivity() {
companion object { companion object {
fun newInstance(context: Context, isTournament: Boolean) { fun newInstance(context: Context, isTournament: Boolean? = false, sessionId: String? = "") {
val intent = Intent(context, NewSessionActivity::class.java) val intent = Intent(context, SessionActivity::class.java)
intent.putExtra("is_tournament", isTournament)
isTournament?.let {
intent.putExtra("is_tournament", isTournament)
}
sessionId?.let {
intent.putExtra("session_id", sessionId)
}
context.startActivity(intent) context.startActivity(intent)
} }
} }
override fun onCreate(savedInstanceState: Bundle?) { override fun onCreate(savedInstanceState: Bundle?) {
@ -29,11 +38,10 @@ class NewSessionActivity: PokerAnalyticsActivity() {
* Init UI * Init UI
*/ */
private fun initUI() { private fun initUI() {
val sessionId = intent.getStringExtra("session_id")
val isTournament = intent.getBooleanExtra("is_tournament", false) val isTournament = intent.getBooleanExtra("is_tournament", false)
val fragment = newSessionFragment as NewSessionFragment val fragment = newSessionFragment as SessionFragment
fragment.setData(isTournament) fragment.setData(isTournament, sessionId)
} }
/** /**
@ -41,8 +49,6 @@ class NewSessionActivity: PokerAnalyticsActivity() {
*/ */
private fun initData() { private fun initData() {
} }
} }

@ -46,6 +46,11 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate,
override fun clickOnClear(row: RowRepresentable) { override fun clickOnClear(row: RowRepresentable) {
Toast.makeText(requireContext(), "Clear: $row", Toast.LENGTH_SHORT).show() 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) { override fun setValue(value: Any, row: RowRepresentable) {

@ -6,20 +6,14 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.Toast import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.Realm
import io.realm.RealmResults import io.realm.RealmResults
import kotlinx.android.synthetic.main.fragment_history.* 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.R
import net.pokeranalytics.android.model.realm.Session 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.adapter.HistoryAdapter
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import net.pokeranalytics.android.util.data.sessionDao import net.pokeranalytics.android.util.data.sessionDao
import java.util.*
class HistoryFragment : PokerAnalyticsFragment() { class HistoryFragment : PokerAnalyticsFragment() {
@ -56,11 +50,11 @@ class HistoryFragment : PokerAnalyticsFragment() {
private fun initUI() { private fun initUI() {
newSession.setOnClickListener { newSession.setOnClickListener {
NewSessionActivity.newInstance(requireContext(), false) SessionActivity.newInstance(requireContext(), false)
} }
newTournament.setOnClickListener { newTournament.setOnClickListener {
NewSessionActivity.newInstance(requireContext(), true) SessionActivity.newInstance(requireContext(), true)
} }
newHand.setOnClickListener { newHand.setOnClickListener {
@ -89,29 +83,13 @@ class HistoryFragment : PokerAnalyticsFragment() {
adapter = historyAdapter adapter = historyAdapter
} }
it.addChangeListener { newSessions -> historyAdapter.onClickOnSession = {position, session ->
historyAdapter.notifyDataSetChanged() SessionActivity.newInstance(requireContext(), sessionId = session.id)
} }
} 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()
} }
} }
} }

@ -6,10 +6,12 @@ import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.Toast import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.kotlin.where
import kotlinx.android.synthetic.main.fragment_new_session.* import kotlinx.android.synthetic.main.fragment_new_session.*
import net.pokeranalytics.android.R import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.realm.* 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.EditableDataActivity
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.adapter.components.RowRepresentableAdapter 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 net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
import java.util.* import java.util.*
class NewSessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, BottomSheetDelegate { class SessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, BottomSheetDelegate {
private lateinit var currentSession: Session 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? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_new_session, container, false) 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?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
initData()
initUI() initUI()
} }
override fun onRowSelected(row: RowRepresentable) { override fun onRowSelected(row: RowRepresentable) {
val data = currentSession.getBottomSheetData(row) val data = currentSession.getBottomSheetData(row)
when(row) { when (row) {
SessionRow.START_DATE -> DateTimePickerManager.create(requireContext(), row, this, currentSession.timeFrame?.startDate) SessionRow.START_DATE -> DateTimePickerManager.create(
SessionRow.END_DATE -> DateTimePickerManager.create(requireContext(), row, this, currentSession.timeFrame?.endDate) requireContext(),
row,
this,
currentSession.timeFrame?.startDate
)
SessionRow.END_DATE -> DateTimePickerManager.create(
requireContext(),
row,
this,
currentSession.timeFrame?.endDate
)
else -> BottomSheetFragment.create(fragmentManager, row, this, data) else -> BottomSheetFragment.create(fragmentManager, row, this, data)
} }
} }
@ -51,7 +62,7 @@ class NewSessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, B
} }
override fun clickOnAdd(row: RowRepresentable) { override fun clickOnAdd(row: RowRepresentable) {
when(row) { when (row) {
SessionRow.GAME -> EditableDataActivity.newInstance(requireContext(), LiveData.GAME.ordinal) SessionRow.GAME -> EditableDataActivity.newInstance(requireContext(), LiveData.GAME.ordinal)
SessionRow.BANKROLL -> EditableDataActivity.newInstance(requireContext(), LiveData.BANKROLL.ordinal) SessionRow.BANKROLL -> EditableDataActivity.newInstance(requireContext(), LiveData.BANKROLL.ordinal)
SessionRow.LOCATION -> EditableDataActivity.newInstance(requireContext(), LiveData.LOCATION.ordinal) SessionRow.LOCATION -> EditableDataActivity.newInstance(requireContext(), LiveData.LOCATION.ordinal)
@ -59,47 +70,13 @@ class NewSessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, B
} }
override fun clickOnClear(row: RowRepresentable) { override fun clickOnClear(row: RowRepresentable) {
when(row) { currentSession.updateValue(null, row)
SessionRow.GAME -> currentSession.game = null sessionAdapter.refreshRow(row)
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))
} }
override fun setValue(value: Any, row: RowRepresentable) { override fun setValue(value: Any, row: RowRepresentable) {
when(row) { currentSession.updateValue(value, row)
SessionRow.GAME -> if (value is Game) currentSession.game = value sessionAdapter.refreshRow(row)
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()
} }
/** /**
@ -112,12 +89,12 @@ class NewSessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, B
activity.supportActionBar?.setDisplayHomeAsUpEnabled(true) activity.supportActionBar?.setDisplayHomeAsUpEnabled(true)
val viewManager = LinearLayoutManager(requireContext()) val viewManager = LinearLayoutManager(requireContext())
sessionAdapterRow = RowRepresentableAdapter(currentSession, this) sessionAdapter = RowRepresentableAdapter(currentSession, this)
recyclerView.apply { recyclerView.apply {
setHasFixedSize(true) setHasFixedSize(true)
layoutManager = viewManager layoutManager = viewManager
adapter = sessionAdapterRow adapter = sessionAdapter
} }
} }
@ -125,8 +102,22 @@ class NewSessionFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, B
/** /**
* Set fragment data * Set fragment data
*/ */
fun setData(isTournament: Boolean) { fun setData(isTournament: Boolean, sessionId: String) {
toolbar.title = if (isTournament) "Tournament" else "Cash game" toolbar.title = if (isTournament) "Tournament" else "Cash game"
val realm = getRealm()
val sessionRealm = realm.where<Session>().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
} }
} }

@ -4,5 +4,5 @@ import net.pokeranalytics.android.ui.fragment.components.BottomSheetData
interface RowEditable { interface RowEditable {
fun getBottomSheetData(row: RowRepresentable): ArrayList<BottomSheetData> fun getBottomSheetData(row: RowRepresentable): ArrayList<BottomSheetData>
fun updateValue(value: Any, row: RowRepresentable) fun updateValue(value: Any?, row: RowRepresentable)
} }

@ -8,6 +8,6 @@
android:id="@+id/newSessionFragment" android:id="@+id/newSessionFragment"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
android:name="net.pokeranalytics.android.ui.fragment.NewSessionFragment" /> android:name="net.pokeranalytics.android.ui.fragment.SessionFragment" />
</LinearLayout> </LinearLayout>
Loading…
Cancel
Save