diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 1b0bb87e..29d1e601 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -9,7 +9,7 @@
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:name=".PokerAnalyticsApplication"
- android:theme="@style/AppTheme">
+ android:theme="@style/PokerAnalyticsTheme">
-
+
+
+
+
+
\ No newline at end of file
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 86ccd723..46ac57e8 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,12 +1,17 @@
package net.pokeranalytics.android.model.realm
+import android.content.Context
import io.realm.RealmList
import io.realm.RealmObject
import io.realm.annotations.PrimaryKey
+import net.pokeranalytics.android.ui.adapter.components.DisplayableData
+import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
+import net.pokeranalytics.android.ui.adapter.components.RowViewType
+import net.pokeranalytics.android.ui.fragment.components.BottomSheetType
import java.util.*
-open class Bankroll(name: String = "") : RealmObject() {
+open class Bankroll(name: String = "") : RealmObject(), DisplayableData {
@PrimaryKey
var id = UUID.randomUUID().toString()
@@ -24,4 +29,6 @@ open class Bankroll(name: String = "") : RealmObject() {
var currency: Currency? = null
// @todo rate management
+
+ override var title: String = this.name
}
\ 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 db1d1505..bb10b2f8 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
@@ -3,6 +3,7 @@ package net.pokeranalytics.android.model.realm
import io.realm.*
import io.realm.annotations.Ignore
import io.realm.annotations.PrimaryKey
+import net.pokeranalytics.android.ui.adapter.components.DisplayableData
import net.pokeranalytics.android.ui.adapter.components.DynamicRowDelegate
import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
import net.pokeranalytics.android.ui.adapter.components.SessionRow
@@ -11,7 +12,7 @@ import java.util.*
import kotlin.collections.ArrayList
-open class Session(comment: String = "") : RealmObject(), DynamicRowDelegate {
+open class Session(comment: String = "") : RealmObject(), DynamicRowDelegate, DisplayableData {
@PrimaryKey
var id = UUID.randomUUID().toString()
@@ -139,6 +140,8 @@ open class Session(comment: String = "") : RealmObject(), DynamicRowDelegate {
else -> "--"
}
}
+
+ override var title: String = "Change that: $creationDate"
}
enum class TournamentKind {
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/DataListActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/DataListActivity.kt
new file mode 100644
index 00000000..e41805f7
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/DataListActivity.kt
@@ -0,0 +1,52 @@
+package net.pokeranalytics.android.ui.activity
+
+import android.content.Context
+import android.content.Intent
+import android.os.Bundle
+import io.realm.Realm
+import io.realm.kotlin.where
+import kotlinx.android.synthetic.main.activity_data_list.*
+import net.pokeranalytics.android.R
+import net.pokeranalytics.android.model.realm.Session
+import net.pokeranalytics.android.ui.fragment.DataListFragment
+import net.pokeranalytics.android.util.PokerAnalyticsActivity
+import net.pokeranalytics.android.util.data.sessionDao
+import java.util.*
+
+class DataListActivity : PokerAnalyticsActivity() {
+
+ companion object {
+ fun newInstance(context: Context, dataType: Int) {
+ val intent = Intent(context, DataListActivity::class.java)
+ intent.putExtra("dataType", dataType)
+ context.startActivity(intent)
+ }
+ }
+
+ override fun onCreate(savedInstanceState: Bundle?) {
+ super.onCreate(savedInstanceState)
+ setContentView(R.layout.activity_data_list)
+
+ initUI()
+ }
+
+ /**
+ * Init UI
+ */
+ private fun initUI() {
+
+ val dataType = intent.getIntExtra("dataType", 0)
+ val fragment = dataListFragment as DataListFragment
+ fragment.setData(dataType)
+ }
+
+ /**
+ * Init data
+ */
+ private fun initData() {
+
+
+
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/activity/DataManagementActivity.kt b/app/src/main/java/net/pokeranalytics/android/ui/activity/DataManagementActivity.kt
deleted file mode 100644
index ce23a658..00000000
--- a/app/src/main/java/net/pokeranalytics/android/ui/activity/DataManagementActivity.kt
+++ /dev/null
@@ -1,46 +0,0 @@
-package net.pokeranalytics.android.ui.activity
-
-import android.content.Context
-import android.content.Intent
-import android.os.Bundle
-import net.pokeranalytics.android.R
-import net.pokeranalytics.android.util.PokerAnalyticsActivity
-
-class DataManagementActivity: PokerAnalyticsActivity() {
-
- companion object {
- fun newInstance(context: Context, dataType: Int) {
- val intent = Intent(context, DataManagementActivity::class.java)
- intent.putExtra("dataType", dataType)
- context.startActivity(intent)
- }
- }
-
- override fun onCreate(savedInstanceState: Bundle?) {
- super.onCreate(savedInstanceState)
-// setContentView(R.layout.activity_data_management)
-
- initUI()
- }
-
- /**
- * Init UI
- */
- private fun initUI() {
-
- val isTournament = intent.getIntExtra("dataType", 0)
-// val fragment = newSessionFragment as NewSessionFragment
-// fragment.setData(isTournament)
-
- }
-
- /**
- * Init data
- */
- 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
new file mode 100644
index 00000000..37b35ca5
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DataListAdapter.kt
@@ -0,0 +1,51 @@
+package net.pokeranalytics.android.ui.adapter.components
+
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.RecyclerView
+import kotlinx.android.synthetic.main.row_session.view.*
+import net.pokeranalytics.android.R
+
+interface DataRowDelegate {
+ fun data(position: Int) : DisplayableData
+ fun size() : Int
+}
+
+interface DataRowCallback {
+ fun onRowSelected(position: Int)
+}
+
+interface DisplayableData {
+ var title: String
+}
+
+class DataListAdapter(var delegate: DataRowDelegate, var callBackDelegate: DataRowCallback? = null) : RecyclerView.Adapter() {
+
+ inner class DataViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) {
+ fun bind(row: DisplayableData, listener: View.OnClickListener) {
+ itemView.title.text = row.title
+ itemView.container.setOnClickListener(listener)
+ }
+ }
+
+ override fun getItemViewType(position: Int): Int {
+ return RowViewType.TITLE.ordinal
+ }
+
+ override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder {
+ return DataViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.row_title, parent, false))
+ }
+
+ override fun getItemCount(): Int {
+ return delegate.size()
+ }
+
+ override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) {
+ val listener = View.OnClickListener {
+ callBackDelegate?.onRowSelected(position)
+ }
+ (holder as DataViewHolder).bind(this.delegate.data(position), listener)
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicListAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicListAdapter.kt
index 4b047693..83778819 100644
--- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicListAdapter.kt
+++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicListAdapter.kt
@@ -2,9 +2,7 @@ package net.pokeranalytics.android.ui.adapter.components
import android.view.View
import android.view.ViewGroup
-import android.widget.Toast
import androidx.recyclerview.widget.RecyclerView
-import io.realm.Realm.init
interface EditableDataDelegate {
fun setValue(value: Any, row: DynamicRowInterface)
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt
index 138681c6..4d114ce5 100644
--- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt
+++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt
@@ -62,7 +62,7 @@ enum class BankrollRow(val resId: Int) : DynamicRowInterface {
override var bottomSheetType: BottomSheetType = BottomSheetType.NONE
}
-enum class BusinessObjectRowType(val resId: Int) : DynamicRowInterface {
+enum class DataObjectRowType(val resId: Int) : DynamicRowInterface {
BANKROLL(R.string.bankroll),
GAME(R.string.game),
LOCATION(R.string.location),
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/RowViewType.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/RowViewType.kt
index 6a2b3640..f5ac0bd2 100644
--- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/RowViewType.kt
+++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/RowViewType.kt
@@ -10,7 +10,7 @@ import net.pokeranalytics.android.R
interface DynamicHolder {
- fun bind(row: DynamicRowInterface, delegate: DynamicRowDelegate, listener: View.OnClickListener)
+ fun bind(row: DynamicRowInterface, delegate: DynamicRowDelegate? = null, listener: View.OnClickListener)
}
@@ -21,20 +21,22 @@ enum class RowViewType {
TITLE_VALUE;
inner class FakeViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), DynamicHolder {
- override fun bind(row: DynamicRowInterface, delegate: DynamicRowDelegate, listener: View.OnClickListener) {
+ override fun bind(row: DynamicRowInterface, delegate: DynamicRowDelegate?, listener: View.OnClickListener) {
}
}
inner class TitleValueViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), DynamicHolder {
- override fun bind(row: DynamicRowInterface, delegate: DynamicRowDelegate, listener: View.OnClickListener) {
+ override fun bind(row: DynamicRowInterface, delegate: DynamicRowDelegate?, listener: View.OnClickListener) {
itemView.title.text = row.localizedTitle(itemView.context)
- itemView.value.text = delegate.stringForRow(row)
+ delegate?.let {
+ itemView.value.text = it.stringForRow(row)
+ }
itemView.container.setOnClickListener(listener)
}
}
inner class TitleViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), DynamicHolder {
- override fun bind(row: DynamicRowInterface, delegate: DynamicRowDelegate, listener: View.OnClickListener) {
+ override fun bind(row: DynamicRowInterface, delegate: DynamicRowDelegate?, listener: View.OnClickListener) {
itemView.title.text = row.localizedTitle(itemView.context)
itemView.container.setOnClickListener(listener)
}
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BottomSheetFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/BottomSheetFragment.kt
deleted file mode 100644
index b306cdfd..00000000
--- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/BottomSheetFragment.kt
+++ /dev/null
@@ -1,157 +0,0 @@
-package net.pokeranalytics.android.ui.fragment
-
-import android.app.DatePickerDialog
-import android.os.Bundle
-import com.google.android.material.bottomsheet.BottomSheetDialogFragment
-import android.content.DialogInterface
-import android.view.*
-import androidx.constraintlayout.widget.ConstraintLayout
-import kotlinx.android.synthetic.main.bottom_sheet_blinds.*
-import kotlinx.android.synthetic.main.bottom_sheet_date.*
-import kotlinx.android.synthetic.main.fragment_bottom_sheet.*
-import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.*
-import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
-import net.pokeranalytics.android.ui.adapter.components.EditableDataDelegate
-import net.pokeranalytics.android.ui.fragment.components.BottomSheetType
-import timber.log.Timber
-import android.widget.DatePicker
-import net.pokeranalytics.android.util.DatePickerFragment
-import net.pokeranalytics.android.util.TimePickerFragment
-import java.util.*
-
-
-class BottomSheetFragment : BottomSheetDialogFragment() {
-
- private var row: DynamicRowInterface? = null
- private var valueDelegate: EditableDataDelegate? = null
-
- override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
-
- val view = inflater.inflate(
- net.pokeranalytics.android.R.layout.fragment_bottom_sheet,
- container,
- false
- ) as ConstraintLayout
-
- row?.let {
- when (it.bottomSheetType) {
- BottomSheetType.BANKROLL -> inflater.inflate(
- net.pokeranalytics.android.R.layout.bottom_sheet_bankroll,
- view.bottomSheetContainer,
- true
- )
- BottomSheetType.BLINDS -> inflater.inflate(
- net.pokeranalytics.android.R.layout.bottom_sheet_blinds,
- view.bottomSheetContainer,
- true
- )
- BottomSheetType.DATE -> inflater.inflate(
- net.pokeranalytics.android.R.layout.bottom_sheet_date,
- view.bottomSheetContainer,
- true
- )
- BottomSheetType.GAME -> inflater.inflate(
- net.pokeranalytics.android.R.layout.bottom_sheet_game,
- view.bottomSheetContainer,
- true
- )
- BottomSheetType.LOCATION -> inflater.inflate(
- net.pokeranalytics.android.R.layout.bottom_sheet_location,
- view.bottomSheetContainer,
- true
- )
- BottomSheetType.TABLE_SIZE -> inflater.inflate(
- net.pokeranalytics.android.R.layout.bottom_sheet_table_size,
- view.bottomSheetContainer,
- true
- )
- else -> {
- }
- }
- }
-
- return view
- }
-
- override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- super.onViewCreated(view, savedInstanceState)
- initUI()
- }
-
- override fun onActivityCreated(savedInstanceState: Bundle?) {
- super.onActivityCreated(savedInstanceState)
- // To display correctly the keyboard
- dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)
- }
-
- override fun onStart() {
- super.onStart()
-
- // Open the keyboard
- row?.let {
- when (it.bottomSheetType) {
- BottomSheetType.BLINDS -> {
- smallBlind.requestFocus()
- }
- else -> {
- }
- }
- }
- }
-
- override fun onDismiss(dialog: DialogInterface?) {
- super.onDismiss(dialog)
-
- // Return the value
- row?.let {
- valueDelegate?.setValue("Test", it)
- }
- }
-
- /**
- * Init UI
- */
- private fun initUI() {
-
- row?.let {
- //bottomSheetToolbar.title = row?.localizedTitle(requireContext())
- bottomSheetToolbar.inflateMenu(net.pokeranalytics.android.R.menu.bottom_sheet_menu)
- bottomSheetToolbar.setOnMenuItemClickListener {
- false
- }
- }
-
- row?.let {
- when (it.bottomSheetType) {
- BottomSheetType.DATE -> initDateUI()
- else -> {}
- }
- }
- }
-
- /**
- * Init date UI
- */
- private fun initDateUI() {
-
- startDate.setOnClickListener {
- val dateFragment = DatePickerFragment()
- dateFragment.show(fragmentManager, "datePicker")
- }
-
- endDate.setOnClickListener {
- val timeFragment = TimePickerFragment()
- timeFragment.show(fragmentManager, "timePicker")
- }
-
- }
-
- /**
- * Init
- */
- fun init(row: DynamicRowInterface, valueDelegate: EditableDataDelegate) {
- this.row = row
- this.valueDelegate = valueDelegate
- }
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt
new file mode 100644
index 00000000..40fd66ed
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt
@@ -0,0 +1,79 @@
+package net.pokeranalytics.android.ui.fragment
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import androidx.recyclerview.widget.LinearLayoutManager
+import io.realm.Realm
+import io.realm.RealmObject
+import io.realm.Sort
+import kotlinx.android.synthetic.main.fragment_new_session.*
+import net.pokeranalytics.android.R
+import net.pokeranalytics.android.model.realm.*
+import net.pokeranalytics.android.ui.adapter.components.*
+import net.pokeranalytics.android.util.PokerAnalyticsFragment
+
+class DataListFragment : PokerAnalyticsFragment(), DataRowDelegate, DataRowCallback {
+
+ private lateinit var dataType: DataObjectRowType
+
+ private lateinit var realmObjects: ArrayList
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+ return inflater.inflate(R.layout.fragment_data_list, container, false)
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ initData()
+ initUI()
+ }
+
+ override fun data(position: Int): DisplayableData {
+ return (realmObjects[position] as DisplayableData)
+ }
+
+ override fun onRowSelected(position: Int) {
+ TODO("not implemented") //To change body of created functions use File | Settings | File Templates.
+ }
+
+ override fun size(): Int {
+ return realmObjects.size
+ }
+
+ private fun initData() {
+ }
+
+ /**
+ * Init UI
+ */
+ private fun initUI() {
+
+ val viewManager = LinearLayoutManager(requireContext())
+ val dataListAdapter = DataListAdapter(this, this)
+
+ recyclerView.apply {
+ setHasFixedSize(true)
+ layoutManager = viewManager
+ adapter = dataListAdapter
+ }
+ }
+
+
+ /**
+ * Set fragment data
+ */
+ fun setData(dataType: Int) {
+ this.dataType = DataObjectRowType.values()[dataType]
+ val realm = Realm.getDefaultInstance()
+
+ realmObjects = ArrayList( when (DataObjectRowType.values()[dataType]) {
+ DataObjectRowType.BANKROLL -> realm.where(Bankroll::class.java).findAll().sort("name", Sort.DESCENDING)
+ DataObjectRowType.GAME-> realm.where(Game::class.java).findAll().sort("name", Sort.DESCENDING)
+ DataObjectRowType.LOCATION -> realm.where(Location::class.java).findAll().sort("name", Sort.DESCENDING)
+ DataObjectRowType.TOURNAMENT_TYPE -> realm.where(TournamentFeature::class.java).findAll().sort("name", Sort.DESCENDING)
+ DataObjectRowType.TRANSACTION_TYPE -> realm.where(TransactionType::class.java).findAll().sort("name", Sort.DESCENDING)
+ })
+ }
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt
index 2daa7e57..845b1835 100644
--- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt
+++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/NewSessionFragment.kt
@@ -5,20 +5,16 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Toast
-import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.fragment_new_session.*
-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.adapter.NewSessionAdapter
import net.pokeranalytics.android.ui.adapter.components.DynamicListAdapter
import net.pokeranalytics.android.ui.adapter.components.DynamicRowCallback
import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
import net.pokeranalytics.android.ui.adapter.components.EditableDataDelegate
+import net.pokeranalytics.android.ui.fragment.components.BottomSheetFragment
+import net.pokeranalytics.android.ui.fragment.components.BottomSheetType
import net.pokeranalytics.android.util.PokerAnalyticsFragment
class NewSessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, EditableDataDelegate {
@@ -36,8 +32,15 @@ class NewSessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, Editabl
}
override fun onRowSelected(row: DynamicRowInterface) {
- val bottomSheetFragment = openBottomSheet()
- bottomSheetFragment.init(row, this)
+
+ val data = when (row.bottomSheetType) {
+ BottomSheetType.BLINDS -> newSession
+ BottomSheetType.DATE -> newSession.timeFrame
+ BottomSheetType.GAME -> newSession.game
+ else -> Any()
+ }
+
+ BottomSheetFragment.create(fragmentManager, row, this, data)
}
override fun setValue(value: Any, row: DynamicRowInterface) {
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
index e6ee295c..5b78f727 100644
--- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
+++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt
@@ -8,6 +8,8 @@ import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager
import kotlinx.android.synthetic.main.fragment_settings.*
import net.pokeranalytics.android.R
+import net.pokeranalytics.android.ui.activity.DataListActivity
+import net.pokeranalytics.android.ui.activity.NewSessionActivity
import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.util.PokerAnalyticsFragment
@@ -40,12 +42,12 @@ class SettingsFragment : PokerAnalyticsFragment(), DynamicRowDelegate, DynamicRo
override fun adapterRows(): ArrayList {
val rows = ArrayList()
- rows.addAll(BusinessObjectRowType.values())
+ rows.addAll(DataObjectRowType.values())
return rows
}
override fun onRowSelected(row: DynamicRowInterface) {
- //val bottomSheetFragment = openBottomSheet(row)
+ DataListActivity.newInstance(requireContext(), (row as DataObjectRowType).ordinal)
}
/**
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetBlindsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetBlindsFragment.kt
new file mode 100644
index 00000000..6eaf122d
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetBlindsFragment.kt
@@ -0,0 +1,57 @@
+package net.pokeranalytics.android.ui.fragment.components
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.inputmethod.EditorInfo
+import kotlinx.android.synthetic.main.bottom_sheet_blinds.*
+import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.*
+import net.pokeranalytics.android.R
+import net.pokeranalytics.android.model.realm.Session
+
+class BottomSheetBlindsFragment : BottomSheetFragment() {
+
+ private var session: Session = Session()
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ initData()
+ initUI()
+ }
+
+ override fun clickOnCheck() {
+ super.clickOnCheck()
+ valueDelegate.setValue(session, row)
+ dismiss()
+ }
+
+ override fun onStart() {
+ super.onStart()
+ smallBlind.requestFocus()
+ }
+
+ /**
+ * Init data
+ */
+ private fun initData() {
+ val data = getData()
+ session = if (data is Session) data else Session()
+ }
+
+ /**
+ * Init UI
+ */
+ private fun initUI() {
+
+ LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_blinds, view?.bottomSheetContainer, true)
+
+ bigBlind.setOnEditorActionListener { v, actionId, event ->
+ if (actionId == EditorInfo.IME_ACTION_DONE) {
+ clickOnCheck()
+ }
+ true
+ }
+
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetDateFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetDateFragment.kt
new file mode 100644
index 00000000..377da2c8
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetDateFragment.kt
@@ -0,0 +1,61 @@
+package net.pokeranalytics.android.ui.fragment.components
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import kotlinx.android.synthetic.main.bottom_sheet_date.*
+import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.*
+import net.pokeranalytics.android.R
+import net.pokeranalytics.android.model.realm.TimeFrame
+import net.pokeranalytics.android.ui.fragment.components.BottomSheetFragment
+import net.pokeranalytics.android.util.DatePickerFragment
+import net.pokeranalytics.android.util.TimePickerFragment
+
+class BottomSheetDateFragment : BottomSheetFragment() {
+
+ private var timeFrame: TimeFrame = TimeFrame()
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ initData()
+ initUI()
+ }
+
+ override fun clickOnCheck() {
+ super.clickOnCheck()
+ valueDelegate.setValue(timeFrame, row)
+ dismiss()
+ }
+
+ /**
+ * Init data
+ */
+ private fun initData() {
+ val data = getData()
+ timeFrame = if (data is TimeFrame) data else TimeFrame()
+ }
+
+ /**
+ * Init UI
+ */
+ private fun initUI() {
+
+ LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_date, view?.bottomSheetContainer, true)
+
+ setAddButtonVisible(false)
+
+ startDate.setOnClickListener {
+ val dateFragment = DatePickerFragment()
+ dateFragment.show(fragmentManager, "datePicker")
+ }
+
+ endDate.setOnClickListener {
+ val timeFragment = TimePickerFragment()
+ timeFragment.show(fragmentManager, "timePicker")
+ }
+
+ //data.startDate = Date()
+ //data.endDate = Date()
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetFragment.kt
new file mode 100644
index 00000000..2604736d
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetFragment.kt
@@ -0,0 +1,143 @@
+package net.pokeranalytics.android.ui.fragment.components
+
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import android.view.ViewGroup
+import android.view.WindowManager
+import androidx.constraintlayout.widget.ConstraintLayout
+import androidx.fragment.app.FragmentManager
+import com.google.android.material.bottomsheet.BottomSheetDialogFragment
+import kotlinx.android.synthetic.main.fragment_bottom_sheet.*
+import net.pokeranalytics.android.R
+import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
+import net.pokeranalytics.android.ui.adapter.components.EditableDataDelegate
+
+enum class BottomSheetType {
+ NONE,
+ GAME,
+ BLINDS,
+ LOCATION,
+ BANKROLL,
+ TABLE_SIZE,
+ DATE
+}
+
+interface BottomSheetInterface {
+ fun clickOnClear()
+ fun clickOnCheck()
+ fun clickOnAdd()
+}
+
+open class BottomSheetFragment : BottomSheetDialogFragment(), BottomSheetInterface {
+
+ lateinit var row: DynamicRowInterface
+ lateinit var valueDelegate: EditableDataDelegate
+
+ private var data: Any? = null
+
+ companion object {
+ fun create( fragmentManager: FragmentManager?, row: DynamicRowInterface, valueDelegate: EditableDataDelegate, data: Any?): BottomSheetFragment {
+
+ val bottomSheetFragment = when (row.bottomSheetType) {
+ BottomSheetType.BLINDS -> BottomSheetBlindsFragment()
+ BottomSheetType.DATE -> BottomSheetDateFragment()
+ BottomSheetType.GAME -> BottomSheetGameFragment()
+ else -> BottomSheetFragment()
+ }
+
+ bottomSheetFragment.show(fragmentManager, "bottomSheet")
+ bottomSheetFragment.row = row
+ bottomSheetFragment.valueDelegate = valueDelegate
+ bottomSheetFragment.data = data
+ return bottomSheetFragment
+ }
+ }
+
+ override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
+ val view = inflater.inflate(
+ net.pokeranalytics.android.R.layout.fragment_bottom_sheet,
+ container,
+ false
+ ) as ConstraintLayout
+
+ return view
+ }
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ initUI()
+ }
+
+ override fun onActivityCreated(savedInstanceState: Bundle?) {
+ super.onActivityCreated(savedInstanceState)
+
+ // To display correctly the keyboard
+ dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE)
+ }
+
+ override fun clickOnClear() {
+ }
+
+ override fun clickOnCheck() {
+ }
+
+ override fun clickOnAdd() {
+ }
+
+ /**
+ * Init UI
+ */
+ private fun initUI() {
+ row.let {
+ bottomSheetToolbar.title = row.localizedTitle(requireContext())
+ bottomSheetToolbar.inflateMenu(net.pokeranalytics.android.R.menu.bottom_sheet_menu)
+ bottomSheetToolbar.setOnMenuItemClickListener {
+ false
+ }
+ }
+
+ // Menu
+ bottomSheetToolbar.menu.findItem(R.id.actionClear).setOnMenuItemClickListener {
+ clickOnClear()
+ true
+ }
+ bottomSheetToolbar.menu.findItem(R.id.actionAdd).setOnMenuItemClickListener {
+ clickOnAdd()
+ true
+ }
+ bottomSheetToolbar.menu.findItem(R.id.actionCheck).setOnMenuItemClickListener {
+ clickOnCheck()
+ true
+ }
+ }
+
+ /**
+ * Return the data object
+ */
+ fun getData() : Any? {
+ return data
+ }
+
+ /**
+ * Set clear button visibility
+ */
+ fun setClearButtonVisibile(visible: Boolean) {
+ bottomSheetToolbar.menu.findItem(R.id.actionClear).isVisible = visible
+ }
+
+ /**
+ * Set check button visibility
+ */
+ fun setCheckButtonVisibile(visible: Boolean) {
+ bottomSheetToolbar.menu.findItem(R.id.actionCheck).isVisible = visible
+ }
+
+ /**
+ * Set add button visibility
+ */
+ fun setAddButtonVisible(visible: Boolean) {
+ bottomSheetToolbar.menu.findItem(R.id.actionAdd).isVisible = visible
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetGameFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetGameFragment.kt
new file mode 100644
index 00000000..f6cdec3c
--- /dev/null
+++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetGameFragment.kt
@@ -0,0 +1,77 @@
+package net.pokeranalytics.android.ui.fragment.components
+
+import android.content.Context
+import android.os.Bundle
+import android.view.LayoutInflater
+import android.view.View
+import androidx.recyclerview.widget.LinearLayoutManager
+import kotlinx.android.synthetic.main.bottom_sheet_game.*
+import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.*
+import net.pokeranalytics.android.R
+import net.pokeranalytics.android.model.realm.Game
+import net.pokeranalytics.android.ui.adapter.components.DynamicListAdapter
+import net.pokeranalytics.android.ui.adapter.components.DynamicRowDelegate
+import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
+
+
+
+class BottomSheetGameFragment : BottomSheetFragment(), DynamicRowDelegate {
+
+ private var game: Game = Game()
+
+ override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
+ super.onViewCreated(view, savedInstanceState)
+ initData()
+ initUI()
+ }
+
+ override fun clickOnCheck() {
+ super.clickOnCheck()
+ valueDelegate.setValue(game, row)
+ dismiss()
+ }
+
+ override fun adapterRows(): ArrayList {
+ val array = ArrayList()
+ array.add(TitleObject("Game 1"))
+ array.add(TitleObject("Game 2"))
+ array.add(TitleObject("Game 3"))
+ return array
+ }
+
+ /**
+ * Init data
+ */
+ private fun initData() {
+ val data = getData()
+ game = if (data is Game) data else Game()
+ }
+
+ /**
+ * Init UI
+ */
+ private fun initUI() {
+ LayoutInflater.from(requireContext()).inflate(R.layout.bottom_sheet_game, view?.bottomSheetContainer, true)
+
+ val viewManager = LinearLayoutManager(requireContext())
+ val dataAdapter = DynamicListAdapter(this)
+
+ gameNameRecyclerView.apply {
+ setHasFixedSize(true)
+ layoutManager = viewManager
+ //adapter = dataAdapter
+ }
+
+ }
+
+
+ inner class TitleObject(var title: String) : DynamicRowInterface {
+ override fun localizedTitle(context: Context): String {
+ return title
+ }
+
+ override var viewType: Int = 0
+ override var bottomSheetType: BottomSheetType = BottomSheetType.NONE
+ }
+
+}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetType.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetType.kt
deleted file mode 100644
index 61127db5..00000000
--- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetType.kt
+++ /dev/null
@@ -1,13 +0,0 @@
-package net.pokeranalytics.android.ui.fragment.components
-
-enum class BottomSheetType {
-
- NONE,
- GAME,
- BLINDS,
- LOCATION,
- BANKROLL,
- TABLE_SIZE,
- DATE
-
-}
\ No newline at end of file
diff --git a/app/src/main/java/net/pokeranalytics/android/util/PokerAnalyticsFragment.kt b/app/src/main/java/net/pokeranalytics/android/util/PokerAnalyticsFragment.kt
index 754429c3..ac67fe13 100644
--- a/app/src/main/java/net/pokeranalytics/android/util/PokerAnalyticsFragment.kt
+++ b/app/src/main/java/net/pokeranalytics/android/util/PokerAnalyticsFragment.kt
@@ -3,8 +3,6 @@ package net.pokeranalytics.android.util
import android.os.Bundle
import androidx.fragment.app.Fragment
import io.realm.Realm
-import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
-import net.pokeranalytics.android.ui.fragment.BottomSheetFragment
open class PokerAnalyticsFragment: Fragment() {
@@ -24,13 +22,4 @@ open class PokerAnalyticsFragment: Fragment() {
return pokerAnalyticsActivity.getRealm()
}
- /**
- * Open the bottom sheet
- */
- fun openBottomSheet(): BottomSheetFragment {
- val bottomSheetFragment = BottomSheetFragment()
- bottomSheetFragment.show(fragmentManager, "bottomSheet")
- return bottomSheetFragment
- }
-
}
\ No newline at end of file
diff --git a/app/src/main/res/font/roboto.xml b/app/src/main/res/font/roboto.xml
new file mode 100644
index 00000000..2641caff
--- /dev/null
+++ b/app/src/main/res/font/roboto.xml
@@ -0,0 +1,7 @@
+
+
+
diff --git a/app/src/main/res/font/roboto_bold.xml b/app/src/main/res/font/roboto_bold.xml
new file mode 100644
index 00000000..1e8c20a1
--- /dev/null
+++ b/app/src/main/res/font/roboto_bold.xml
@@ -0,0 +1,7 @@
+
+
+
diff --git a/app/src/main/res/font/roboto_light.xml b/app/src/main/res/font/roboto_light.xml
new file mode 100644
index 00000000..28fbc0d7
--- /dev/null
+++ b/app/src/main/res/font/roboto_light.xml
@@ -0,0 +1,7 @@
+
+
+
diff --git a/app/src/main/res/layout/activity_data_list.xml b/app/src/main/res/layout/activity_data_list.xml
new file mode 100644
index 00000000..2911b5ae
--- /dev/null
+++ b/app/src/main/res/layout/activity_data_list.xml
@@ -0,0 +1,13 @@
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_data_list.xml b/app/src/main/res/layout/fragment_data_list.xml
new file mode 100644
index 00000000..3eaf9bf9
--- /dev/null
+++ b/app/src/main/res/layout/fragment_data_list.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/layout/fragment_new_session.xml b/app/src/main/res/layout/fragment_new_session.xml
index 99f85212..987c681f 100644
--- a/app/src/main/res/layout/fragment_new_session.xml
+++ b/app/src/main/res/layout/fragment_new_session.xml
@@ -1,31 +1,71 @@
-
+
+
-
-
-
-
-
-
\ No newline at end of file
+ android:layout_height="match_parent"
+ android:fillViewport="true"
+ app:layout_behavior="@string/appbar_scrolling_view_behavior">
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
diff --git a/app/src/main/res/menu/bottom_sheet_menu.xml b/app/src/main/res/menu/bottom_sheet_menu.xml
index f1301ad6..e2351f4e 100644
--- a/app/src/main/res/menu/bottom_sheet_menu.xml
+++ b/app/src/main/res/menu/bottom_sheet_menu.xml
@@ -15,7 +15,7 @@
android:title="Search"
app:showAsAction="ifRoom" />
-
+
+
+
- @array/com_google_android_gms_fonts_certs_dev
+ - @array/com_google_android_gms_fonts_certs_prod
+
+
+ -
+ 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
+
+
+
diff --git a/app/src/main/res/values/preloaded_fonts.xml b/app/src/main/res/values/preloaded_fonts.xml
new file mode 100644
index 00000000..1cecfb90
--- /dev/null
+++ b/app/src/main/res/values/preloaded_fonts.xml
@@ -0,0 +1,8 @@
+
+
+
+ - @font/roboto
+ - @font/roboto_bold
+ - @font/roboto_light
+
+
diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml
index dfc3bef0..0afe7cc7 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -8,6 +8,7 @@
Bankroll
Game
Location
+ Session
Tournament Type
Transaction Type
diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml
index 9d7c9fb5..f6d293ed 100644
--- a/app/src/main/res/values/styles.xml
+++ b/app/src/main/res/values/styles.xml
@@ -1,17 +1,41 @@
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+