From d50e71bd80483a37f6312a8e5f0c0d710e9922ad Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Wed, 13 Feb 2019 11:45:15 +0100 Subject: [PATCH 01/17] data manager xml --- app/src/main/AndroidManifest.xml | 1 + .../ui/activity/DataManagementActivity.kt | 13 ++-- .../android/ui/adapter/DataManagerAdapter.kt | 48 +++++++++++++ .../android/ui/adapter/SettingsAdapter.kt | 4 +- .../ui/fragment/DataManagerFragment.kt | 69 +++++++++++++++++++ .../android/ui/fragment/SettingsFragment.kt | 4 ++ .../main/res/layout/activity_data_manager.xml | 13 ++++ .../main/res/layout/fragment_data_manager.xml | 21 ++++++ 8 files changed, 164 insertions(+), 9 deletions(-) create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/adapter/DataManagerAdapter.kt create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/fragment/DataManagerFragment.kt create mode 100644 app/src/main/res/layout/activity_data_manager.xml create mode 100644 app/src/main/res/layout/fragment_data_manager.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2fc1179a..df424857 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -23,6 +23,7 @@ + \ 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 index ce23a658..86666129 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/activity/DataManagementActivity.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/activity/DataManagementActivity.kt @@ -3,7 +3,9 @@ package net.pokeranalytics.android.ui.activity import android.content.Context import android.content.Intent import android.os.Bundle +import kotlinx.android.synthetic.main.activity_data_manager.* import net.pokeranalytics.android.R +import net.pokeranalytics.android.ui.fragment.DataManagerFragment import net.pokeranalytics.android.util.PokerAnalyticsActivity class DataManagementActivity: PokerAnalyticsActivity() { @@ -18,7 +20,7 @@ class DataManagementActivity: PokerAnalyticsActivity() { override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) -// setContentView(R.layout.activity_data_management) + setContentView(R.layout.activity_data_manager) initUI() } @@ -28,9 +30,9 @@ class DataManagementActivity: PokerAnalyticsActivity() { */ private fun initUI() { - val isTournament = intent.getIntExtra("dataType", 0) -// val fragment = newSessionFragment as NewSessionFragment -// fragment.setData(isTournament) + val dataType = intent.getIntExtra("dataType", 0) + val fragment = dataManagerFragment as DataManagerFragment + fragment.setData(dataType) } @@ -38,9 +40,6 @@ class DataManagementActivity: PokerAnalyticsActivity() { * Init data */ private fun initData() { - - - } } \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/DataManagerAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/DataManagerAdapter.kt new file mode 100644 index 00000000..4e7aa663 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/DataManagerAdapter.kt @@ -0,0 +1,48 @@ +package net.pokeranalytics.android.ui.adapter + +import android.view.LayoutInflater +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView +import io.realm.RealmObject +import io.realm.RealmResults +import kotlinx.android.synthetic.main.row_history_session.view.* +import net.pokeranalytics.android.R +import net.pokeranalytics.android.model.realm.Session +import net.pokeranalytics.android.ui.view.SessionRowView +import timber.log.Timber + +class DataManagerAdapter(private var items: RealmResults) : RecyclerView.Adapter() { + + companion object { + const val ROW_DATA: Int = 100 + } + + inner class RowDataViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { + fun bind() { + } + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + when (viewType) { + ROW_DATA -> return RowDataViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.row_data_cell, parent, false)) + else -> throw IllegalStateException("Need to implement type $viewType in DataManager") + } + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + when (getItemViewType(position)) { + ROW_DATA -> (holder as DataManagerAdapter.RowDataViewHolder).bind() + } + } + + override fun getItemCount(): Int { + return items.size + } + + override fun getItemViewType(position: Int): Int { + return ROW_DATA + } + + +} \ No newline at end of file diff --git a/app/src/main/java/net/pokeranalytics/android/ui/adapter/SettingsAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/SettingsAdapter.kt index ff7d8e5f..1ecf3062 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/adapter/SettingsAdapter.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/SettingsAdapter.kt @@ -43,13 +43,13 @@ class SettingsAdapter() : RecyclerView.Adapter() { } } - var onClickOnData: ((position: Int, dataType: DataType) -> Unit)? = null + var onClickOnData: ((position: Int, dataType: Int) -> Unit)? = null inner class RowDataViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView) { fun bind(dataType: DataType) { itemView.dataRow.setData(dataType.localizedName()) itemView.dataRow.setOnClickListener { - onClickOnData?.invoke(adapterPosition, dataType) + onClickOnData?.invoke(adapterPosition, dataType.ordinal) } } } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataManagerFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataManagerFragment.kt new file mode 100644 index 00000000..4a8ff3da --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataManagerFragment.kt @@ -0,0 +1,69 @@ +package net.pokeranalytics.android.ui.fragment + +import android.os.Bundle +import android.view.LayoutInflater +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.coroutines.Dispatchers +import kotlinx.coroutines.GlobalScope +import kotlinx.coroutines.delay +import kotlinx.coroutines.launch +import net.pokeranalytics.android.R +import net.pokeranalytics.android.ui.adapter.DataManagerAdapter +import net.pokeranalytics.android.util.PokerAnalyticsFragment +import timber.log.Timber +import java.util.* + +class DataManagerFragment : PokerAnalyticsFragment() { + + companion object { + fun newInstance(): DataManagerFragment { + val fragment = DataManagerFragment() + val bundle = Bundle() + fragment.arguments = bundle + return fragment + } + } + + private lateinit var dataManagerAdapter: DataManagerAdapter + private var realmSessions: RealmResults? = null + + override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { + return inflater.inflate(R.layout.fragment_data_manager, container, false) + } + + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { + super.onViewCreated(view, savedInstanceState) + initUI() + initData() + } + + override fun onDestroyView() { + super.onDestroyView() + realmSessions?.removeAllChangeListeners() + } + + /** + * Init UI + */ + private fun initUI() { + } + + /** + * Init data + */ + private fun initData() { + + } + + /** + * Set fragment data + */ + fun setData(dataType: Int) { +} + +} \ No newline at end of file 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 4923fbdf..7259a810 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 @@ -7,6 +7,7 @@ import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import kotlinx.android.synthetic.main.fragment_settings.* import net.pokeranalytics.android.R +import net.pokeranalytics.android.ui.activity.DataManagementActivity import net.pokeranalytics.android.ui.adapter.SettingsAdapter import net.pokeranalytics.android.util.PokerAnalyticsFragment @@ -44,6 +45,9 @@ class SettingsFragment : PokerAnalyticsFragment() { val viewManager = LinearLayoutManager(requireContext()) settingsAdapter = SettingsAdapter() + settingsAdapter.onClickOnData = { position, dataType -> + DataManagementActivity.newInstance(requireContext(), 0) + } recyclerView.apply { setHasFixedSize(true) diff --git a/app/src/main/res/layout/activity_data_manager.xml b/app/src/main/res/layout/activity_data_manager.xml new file mode 100644 index 00000000..31d9a675 --- /dev/null +++ b/app/src/main/res/layout/activity_data_manager.xml @@ -0,0 +1,13 @@ + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_data_manager.xml b/app/src/main/res/layout/fragment_data_manager.xml new file mode 100644 index 00000000..9e79794d --- /dev/null +++ b/app/src/main/res/layout/fragment_data_manager.xml @@ -0,0 +1,21 @@ + + + + + + \ No newline at end of file From 9d150a9ab808e9922747ab6d7e67054a23f6e6ce Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Thu, 14 Feb 2019 16:35:32 +0100 Subject: [PATCH 02/17] add DataListAdapter to handle list of business data --- .../android/model/realm/Bankroll.kt | 11 ++- .../android/ui/activity/DataListActivity.kt | 52 ++++++++++++++ .../ui/adapter/components/DataListAdapter.kt | 39 +++++++++++ .../adapter/components/DynamicRowInterface.kt | 5 +- .../ui/adapter/components/RowViewType.kt | 12 ++-- .../android/ui/fragment/DataListFragment.kt | 68 +++++++++++++++++++ .../android/ui/fragment/SettingsFragment.kt | 4 +- .../main/res/layout/activity_data_list.xml | 13 ++++ .../main/res/layout/fragment_data_list.xml | 31 +++++++++ 9 files changed, 223 insertions(+), 12 deletions(-) create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/activity/DataListActivity.kt create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DataListAdapter.kt create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt create mode 100644 app/src/main/res/layout/activity_data_list.xml create mode 100644 app/src/main/res/layout/fragment_data_list.xml 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..0dfe3a0d 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,15 @@ 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.DynamicRowInterface +import net.pokeranalytics.android.ui.adapter.components.RowViewType import java.util.* -open class Bankroll(name: String = "") : RealmObject() { +open class Bankroll(name: String = "") : RealmObject(), DynamicRowInterface { @PrimaryKey var id = UUID.randomUUID().toString() @@ -24,4 +27,10 @@ open class Bankroll(name: String = "") : RealmObject() { var currency: Currency? = null // @todo rate management + + override fun localizedTitle(context: Context): String { + return name + } + + override var viewType: Int = RowViewType.TITLE.ordinal } \ No newline at end of file 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/adapter/components/DataListAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DataListAdapter.kt new file mode 100644 index 00000000..3ac5cbb5 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DataListAdapter.kt @@ -0,0 +1,39 @@ +package net.pokeranalytics.android.ui.adapter.components + +import android.view.View +import android.view.ViewGroup +import androidx.recyclerview.widget.RecyclerView + +interface DataRowDelegate { + var viewType: RowViewType + fun data(position: Int) : DynamicRowInterface + fun size() : Int { return 0 } +} + +interface DataRowCallback { + fun onRowSelected(position: Int) +} + +class DataListAdapter(var delegate: DataRowDelegate, var callBackDelegate: DataRowCallback? = null) : RecyclerView.Adapter() { + + override fun getItemViewType(position: Int): Int { + return delegate.viewType.ordinal + } + + override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { + val rowViewType: RowViewType = RowViewType.values()[viewType] + return rowViewType.viewHolder(parent) + } + + override fun getItemCount(): Int { + return delegate.size() + } + + override fun onBindViewHolder(holder: RecyclerView.ViewHolder, position: Int) { + val listener = View.OnClickListener { + callBackDelegate?.onRowSelected(position) + } + (holder as DynamicHolder).bind(this.delegate.data(position), null, listener) + } + +} \ No newline at end of file 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 1ef17b2d..8919f288 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 @@ -54,7 +54,7 @@ enum class BankrollRow(val resId: Int) : DynamicRowInterface { } -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), @@ -66,5 +66,4 @@ enum class BusinessObjectRowType(val resId: Int) : DynamicRowInterface { } override var viewType: Int = RowViewType.TITLE.ordinal - -} +} \ No newline at end of file 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/DataListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt new file mode 100644 index 00000000..ef60341f --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt @@ -0,0 +1,68 @@ +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.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 + + 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 var viewType: RowViewType + get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. + set(value) {} + + override fun data(position: Int): DynamicRowInterface { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + override fun onRowSelected(position: Int) { + TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + } + + 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] + } +} \ No newline at end of file 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 499a5ad6..0abed1ca 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 @@ -4,7 +4,6 @@ import android.os.Bundle import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.Toast import androidx.recyclerview.widget.LinearLayoutManager import kotlinx.android.synthetic.main.fragment_settings.* import net.pokeranalytics.android.R @@ -40,12 +39,11 @@ 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) } /** 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..6fea404a --- /dev/null +++ b/app/src/main/res/layout/fragment_data_list.xml @@ -0,0 +1,31 @@ + + + + + + + + \ No newline at end of file From 5615854ec177a340dea68fe6e6cf83a504360c30 Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Thu, 14 Feb 2019 16:54:06 +0100 Subject: [PATCH 03/17] update data list adapter --- .../android/model/realm/Bankroll.kt | 9 ++---- .../adapter/components/DynamicRowInterface.kt | 29 ++++++++++++------- .../android/ui/fragment/SettingsFragment.kt | 4 +-- 3 files changed, 23 insertions(+), 19 deletions(-) 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 0dfe3a0d..56b403ec 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 @@ -6,10 +6,11 @@ import io.realm.RealmObject import io.realm.annotations.PrimaryKey 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(), DynamicRowInterface { +open class Bankroll(name: String = "") : RealmObject() { @PrimaryKey var id = UUID.randomUUID().toString() @@ -27,10 +28,4 @@ open class Bankroll(name: String = "") : RealmObject(), DynamicRowInterface { var currency: Currency? = null // @todo rate management - - override fun localizedTitle(context: Context): String { - return name - } - - override var viewType: Int = RowViewType.TITLE.ordinal } \ No newline at end of file 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 8919f288..5f00701b 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 @@ -2,8 +2,15 @@ package net.pokeranalytics.android.ui.adapter.components import android.content.Context import net.pokeranalytics.android.R +import net.pokeranalytics.android.ui.fragment.components.BottomSheetType +interface DynamicRowInterface { + fun localizedTitle(context: Context): String + var viewType: Int + var bottomSheetType: BottomSheetType +} + class SectionRow(stringRes: Int) : DynamicRowInterface { var stringRes: Int = stringRes @@ -13,14 +20,7 @@ class SectionRow(stringRes: Int) : DynamicRowInterface { } override var viewType: Int = 0 - -} - -interface DynamicRowInterface { - - fun localizedTitle(context: Context): String - var viewType: Int - + override var bottomSheetType: BottomSheetType = BottomSheetType.NONE } enum class SessionRow(val resId: Int) : DynamicRowInterface { @@ -39,6 +39,14 @@ enum class SessionRow(val resId: Int) : DynamicRowInterface { } } + override var bottomSheetType: BottomSheetType = BottomSheetType.NONE + get() { + return when (this) { + BLINDS -> BottomSheetType.BLINDS + GAME -> BottomSheetType.GAME + DATE -> BottomSheetType.DATE + } + } } enum class BankrollRow(val resId: Int) : DynamicRowInterface { @@ -51,7 +59,7 @@ enum class BankrollRow(val resId: Int) : DynamicRowInterface { } override var viewType: Int = 1 - + override var bottomSheetType: BottomSheetType = BottomSheetType.NONE } enum class DataObjectRowType(val resId: Int) : DynamicRowInterface { @@ -66,4 +74,5 @@ enum class DataObjectRowType(val resId: Int) : DynamicRowInterface { } override var viewType: Int = RowViewType.TITLE.ordinal -} \ No newline at end of file + override var bottomSheetType: BottomSheetType = BottomSheetType.NONE +} 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 499a5ad6..dd55a229 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 @@ -40,12 +40,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) + //val bottomSheetFragment = openBottomSheet(row) } /** From 95618e18c6c6f946bdd9ca08017c25f3fa6a3e28 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 14 Feb 2019 18:12:44 +0100 Subject: [PATCH 04/17] Improve bottom sheets management --- .../ui/fragment/BottomSheetFragment.kt | 157 ------------------ .../android/ui/fragment/NewSessionFragment.kt | 19 ++- .../components/BottomSheetBlindsFragment.kt | 44 +++++ .../components/BottomSheetDateFragment.kt | 61 +++++++ .../components/BottomSheetFragment.kt | 143 ++++++++++++++++ .../components/BottomSheetGameFragment.kt | 42 +++++ .../ui/fragment/components/BottomSheetType.kt | 13 -- .../android/util/PokerAnalyticsFragment.kt | 11 -- app/src/main/res/menu/bottom_sheet_menu.xml | 2 +- 9 files changed, 302 insertions(+), 190 deletions(-) delete mode 100644 app/src/main/java/net/pokeranalytics/android/ui/fragment/BottomSheetFragment.kt create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetBlindsFragment.kt create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetDateFragment.kt create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetFragment.kt create mode 100644 app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetGameFragment.kt delete mode 100644 app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetType.kt 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/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/components/BottomSheetBlindsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetBlindsFragment.kt new file mode 100644 index 00000000..cd2fd118 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetBlindsFragment.kt @@ -0,0 +1,44 @@ +package net.pokeranalytics.android.ui.fragment.components + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +import kotlinx.android.synthetic.main.fragment_bottom_sheet.view.* +import net.pokeranalytics.android.R +import net.pokeranalytics.android.model.realm.Session +import net.pokeranalytics.android.ui.fragment.components.BottomSheetFragment + +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() + } + + /** + * 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) + + } + +} \ 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..f0ae80a7 --- /dev/null +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetGameFragment.kt @@ -0,0 +1,42 @@ +package net.pokeranalytics.android.ui.fragment.components + +import android.os.Bundle +import android.view.LayoutInflater +import android.view.View +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.fragment.components.BottomSheetFragment + +class BottomSheetGameFragment : BottomSheetFragment() { + + 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() + } + + /** + * 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) + } + +} \ 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/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" /> Date: Thu, 14 Feb 2019 18:53:34 +0100 Subject: [PATCH 05/17] add a DataListAdapter to handle business objects --- app/src/main/AndroidManifest.xml | 2 +- .../android/model/realm/Bankroll.kt | 5 ++- .../ui/adapter/components/DataListAdapter.kt | 26 +++++++++++---- .../android/ui/fragment/DataListFragment.kt | 33 ++++++++++++++----- .../android/ui/fragment/SettingsFragment.kt | 4 ++- 5 files changed, 51 insertions(+), 19 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 1b0bb87e..be419c96 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -20,7 +20,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 56b403ec..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 @@ -4,13 +4,14 @@ 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() @@ -28,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/ui/adapter/components/DataListAdapter.kt b/app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DataListAdapter.kt index 3ac5cbb5..37b35ca5 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 @@ -1,28 +1,40 @@ 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 { - var viewType: RowViewType - fun data(position: Int) : DynamicRowInterface - fun size() : Int { return 0 } + 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 delegate.viewType.ordinal + return RowViewType.TITLE.ordinal } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int): RecyclerView.ViewHolder { - val rowViewType: RowViewType = RowViewType.values()[viewType] - return rowViewType.viewHolder(parent) + return DataViewHolder(LayoutInflater.from(parent.context).inflate(R.layout.row_title, parent, false)) } override fun getItemCount(): Int { @@ -33,7 +45,7 @@ class DataListAdapter(var delegate: DataRowDelegate, var callBackDelegate: DataR val listener = View.OnClickListener { callBackDelegate?.onRowSelected(position) } - (holder as DynamicHolder).bind(this.delegate.data(position), null, listener) + (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/fragment/DataListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt index ef60341f..b771d810 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/DataListFragment.kt @@ -6,42 +6,48 @@ import android.view.View import android.view.ViewGroup import androidx.recyclerview.widget.LinearLayoutManager import io.realm.Realm +import io.realm.RealmObject +import io.realm.RealmResults 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 +import net.pokeranalytics.android.util.data.sessionDao +import java.util.* +import kotlin.collections.ArrayList 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 var viewType: RowViewType - get() = TODO("not implemented") //To change initializer of created properties use File | Settings | File Templates. - set(value) {} - - override fun data(position: Int): DynamicRowInterface { - TODO("not implemented") //To change body of created functions use File | Settings | File Templates. + 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. } - private fun initData() { - } + override fun size(): Int { + return realmObjects.size + } + + private fun initData() { + } /** * Init UI @@ -64,5 +70,14 @@ class DataListFragment : PokerAnalyticsFragment(), DataRowDelegate, DataRowCallb */ 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/SettingsFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/SettingsFragment.kt index dd55a229..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 @@ -45,7 +47,7 @@ class SettingsFragment : PokerAnalyticsFragment(), DynamicRowDelegate, DynamicRo } override fun onRowSelected(row: DynamicRowInterface) { - //val bottomSheetFragment = openBottomSheet(row) + DataListActivity.newInstance(requireContext(), (row as DataObjectRowType).ordinal) } /** From 95fb6f998f5594e933538e7b87439ccc9e7087a0 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 14 Feb 2019 18:17:50 +0100 Subject: [PATCH 06/17] Improve Bottom sheet blinds behavior --- .../components/BottomSheetBlindsFragment.kt | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) 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 index cd2fd118..6eaf122d 100644 --- 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 @@ -3,10 +3,11 @@ 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 -import net.pokeranalytics.android.ui.fragment.components.BottomSheetFragment class BottomSheetBlindsFragment : BottomSheetFragment() { @@ -24,6 +25,11 @@ class BottomSheetBlindsFragment : BottomSheetFragment() { dismiss() } + override fun onStart() { + super.onStart() + smallBlind.requestFocus() + } + /** * Init data */ @@ -39,6 +45,13 @@ class BottomSheetBlindsFragment : BottomSheetFragment() { 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 From 49b59379e945652bccb980fc46828b2c362a2f11 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 14 Feb 2019 18:19:02 +0100 Subject: [PATCH 07/17] Clean imports --- .../android/ui/adapter/components/DynamicListAdapter.kt | 2 -- 1 file changed, 2 deletions(-) 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) From 0b0aa872c4a6fc8c95f874326ecb711278b4aa52 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 14 Feb 2019 18:30:47 +0100 Subject: [PATCH 08/17] Format class --- .../adapter/components/DynamicRowInterface.kt | 104 +++++++++--------- 1 file changed, 52 insertions(+), 52 deletions(-) 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 5f00701b..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 @@ -6,73 +6,73 @@ import net.pokeranalytics.android.ui.fragment.components.BottomSheetType interface DynamicRowInterface { - fun localizedTitle(context: Context): String - var viewType: Int - var bottomSheetType: BottomSheetType + fun localizedTitle(context: Context): String + var viewType: Int + var bottomSheetType: BottomSheetType } class SectionRow(stringRes: Int) : DynamicRowInterface { - var stringRes: Int = stringRes + var stringRes: Int = stringRes - override fun localizedTitle(context: Context): String { - return context.getString(this.stringRes) - } + override fun localizedTitle(context: Context): String { + return context.getString(this.stringRes) + } - override var viewType: Int = 0 - override var bottomSheetType: BottomSheetType = BottomSheetType.NONE + override var viewType: Int = 0 + override var bottomSheetType: BottomSheetType = BottomSheetType.NONE } enum class SessionRow(val resId: Int) : DynamicRowInterface { - BLINDS(R.string.app_name), - GAME(R.string.title_history), - DATE(R.string.title_settings); - - override fun localizedTitle(context: Context): String { - return context.getString(this.resId) - } - - override var viewType: Int = RowViewType.HEADER.ordinal - get() { - return when (this) { - BLINDS, GAME, DATE -> RowViewType.TITLE_VALUE.ordinal - } - } - - override var bottomSheetType: BottomSheetType = BottomSheetType.NONE - get() { - return when (this) { - BLINDS -> BottomSheetType.BLINDS - GAME -> BottomSheetType.GAME - DATE -> BottomSheetType.DATE - } - } + BLINDS(R.string.app_name), + GAME(R.string.title_history), + DATE(R.string.title_settings); + + override fun localizedTitle(context: Context): String { + return context.getString(this.resId) + } + + override var viewType: Int = RowViewType.HEADER.ordinal + get() { + return when (this) { + BLINDS, GAME, DATE -> RowViewType.TITLE_VALUE.ordinal + } + } + + override var bottomSheetType: BottomSheetType = BottomSheetType.NONE + get() { + return when (this) { + BLINDS -> BottomSheetType.BLINDS + GAME -> BottomSheetType.GAME + DATE -> BottomSheetType.DATE + } + } } enum class BankrollRow(val resId: Int) : DynamicRowInterface { - NAME(R.string.app_name), - LIVE(R.string.app_name), - CURRENCY(R.string.app_name); + NAME(R.string.app_name), + LIVE(R.string.app_name), + CURRENCY(R.string.app_name); - override fun localizedTitle(context: Context): String { - return context.getString(this.resId) - } + override fun localizedTitle(context: Context): String { + return context.getString(this.resId) + } - override var viewType: Int = 1 - override var bottomSheetType: BottomSheetType = BottomSheetType.NONE + override var viewType: Int = 1 + override var bottomSheetType: BottomSheetType = BottomSheetType.NONE } enum class DataObjectRowType(val resId: Int) : DynamicRowInterface { - BANKROLL(R.string.bankroll), - GAME(R.string.game), - LOCATION(R.string.location), - TOURNAMENT_TYPE(R.string.tournament_type), - TRANSACTION_TYPE(R.string.transaction_type); - - override fun localizedTitle(context: Context): String { - return context.getString(this.resId) - } - - override var viewType: Int = RowViewType.TITLE.ordinal - override var bottomSheetType: BottomSheetType = BottomSheetType.NONE + BANKROLL(R.string.bankroll), + GAME(R.string.game), + LOCATION(R.string.location), + TOURNAMENT_TYPE(R.string.tournament_type), + TRANSACTION_TYPE(R.string.transaction_type); + + override fun localizedTitle(context: Context): String { + return context.getString(this.resId) + } + + override var viewType: Int = RowViewType.TITLE.ordinal + override var bottomSheetType: BottomSheetType = BottomSheetType.NONE } From 4eb43e7eb3d181f909242582d4449a9a0266379b Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Thu, 14 Feb 2019 18:55:33 +0100 Subject: [PATCH 09/17] Test data for BottomSheetGame --- .../components/BottomSheetGameFragment.kt | 39 ++++++++++++++++++- 1 file changed, 37 insertions(+), 2 deletions(-) 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 index f0ae80a7..1411e863 100644 --- 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 @@ -1,14 +1,21 @@ 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.fragment.components.BottomSheetFragment +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() { + + +class BottomSheetGameFragment : BottomSheetFragment(), DynamicRowDelegate { private var game: Game = Game() @@ -24,6 +31,14 @@ class BottomSheetGameFragment : BottomSheetFragment() { 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 */ @@ -37,6 +52,26 @@ class BottomSheetGameFragment : BottomSheetFragment() { */ 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 From 604d7525638c43be3bedaaad0bc1f54df2e545cb Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Fri, 15 Feb 2019 09:19:57 +0100 Subject: [PATCH 10/17] Avoid crash when click on bottom sheet game --- .../android/ui/fragment/components/BottomSheetGameFragment.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 index 1411e863..f6cdec3c 100644 --- 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 @@ -59,7 +59,7 @@ class BottomSheetGameFragment : BottomSheetFragment(), DynamicRowDelegate { gameNameRecyclerView.apply { setHasFixedSize(true) layoutManager = viewManager - adapter = dataAdapter + //adapter = dataAdapter } } From 401bd95b1ed3b0ff98ea23ddb9d999d65aa0470a Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Fri, 15 Feb 2019 09:36:04 +0100 Subject: [PATCH 11/17] Add fonts & improve styles --- app/src/main/AndroidManifest.xml | 5 +++ app/src/main/res/font/roboto.xml | 7 +++ app/src/main/res/font/roboto_bold.xml | 7 +++ app/src/main/res/font/roboto_light.xml | 7 +++ app/src/main/res/values/font_certs.xml | 17 ++++++++ app/src/main/res/values/preloaded_fonts.xml | 8 ++++ app/src/main/res/values/styles.xml | 48 +++++++++++++++------ 7 files changed, 86 insertions(+), 13 deletions(-) create mode 100644 app/src/main/res/font/roboto.xml create mode 100644 app/src/main/res/font/roboto_bold.xml create mode 100644 app/src/main/res/font/roboto_light.xml create mode 100644 app/src/main/res/values/font_certs.xml create mode 100644 app/src/main/res/values/preloaded_fonts.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 8b57b40e..2ad72383 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -26,6 +26,11 @@ android:launchMode="singleTop"/> + + + \ 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/values/font_certs.xml b/app/src/main/res/values/font_certs.xml new file mode 100644 index 00000000..d2226ac0 --- /dev/null +++ b/app/src/main/res/values/font_certs.xml @@ -0,0 +1,17 @@ + + + + @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/styles.xml b/app/src/main/res/values/styles.xml index 9d7c9fb5..26758f19 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -1,17 +1,39 @@ - - - - - + + + + + + + + + + + + From f22832f5c22ca57df0dd365d9cec89effd74d169 Mon Sep 17 00:00:00 2001 From: Aurelien Hubert Date: Fri, 15 Feb 2019 09:42:58 +0100 Subject: [PATCH 12/17] Update styles --- app/src/main/AndroidManifest.xml | 2 +- app/src/main/res/values/styles.xml | 14 ++++++++------ 2 files changed, 9 insertions(+), 7 deletions(-) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 2ad72383..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"> - - - - - -