diff --git a/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt b/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt index c3488443..e0a0da15 100644 --- a/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt +++ b/app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt @@ -2,7 +2,10 @@ package net.pokeranalytics.android.model.realm import io.realm.RealmObject import io.realm.annotations.PrimaryKey -import net.pokeranalytics.android.ui.adapter.components.* +import net.pokeranalytics.android.ui.adapter.components.DisplayableDataSource +import net.pokeranalytics.android.ui.adapter.components.DynamicRowDelegate +import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface +import net.pokeranalytics.android.ui.adapter.components.GameRow import java.util.* open class Game : RealmObject(), DynamicRowDelegate, DisplayableDataSource { 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 765f7b97..6ad6ac68 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 @@ -139,6 +139,8 @@ open class Session : RealmObject(), SessionInterface, DynamicRowDelegate, Displa return when (row) { SessionRow.BLINDS -> if (cgSmallBlind != null && cgBigBlind != null) "$cgSmallBlind / $cgBigBlind" else "--" SessionRow.GAME -> game?.title ?: "--" + SessionRow.LOCATION -> location?.title ?: "--" + SessionRow.BANKROLL -> bankroll?.title ?: "--" SessionRow.DATE -> if (timeFrame != null) timeFrame?.startDate.toString() else "--" else -> "--" } 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 f5ac0bd2..2f104040 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 @@ -3,7 +3,6 @@ package net.pokeranalytics.android.ui.adapter.components import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.Toast import androidx.recyclerview.widget.RecyclerView import kotlinx.android.synthetic.main.row_session.view.* import net.pokeranalytics.android.R @@ -28,6 +27,7 @@ enum class RowViewType { inner class TitleValueViewHolder(itemView: View) : RecyclerView.ViewHolder(itemView), DynamicHolder { override fun bind(row: DynamicRowInterface, delegate: DynamicRowDelegate?, listener: View.OnClickListener) { itemView.title.text = row.localizedTitle(itemView.context) + delegate?.let { itemView.value.text = it.stringForRow(row) } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt index b2bf1e9e..9e416fb3 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt @@ -42,6 +42,10 @@ class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback, Botto Toast.makeText(requireContext(), "Add new element: $row", Toast.LENGTH_SHORT).show() } + override fun clickOnClear(row: DynamicRowInterface) { + Toast.makeText(requireContext(), "Clear: $row", Toast.LENGTH_SHORT).show() + } + override fun setValue(value: Any, row: DynamicRowInterface) { Toast.makeText(requireContext(), "Callback for ${row.localizedTitle(requireContext())} ($value)", Toast.LENGTH_SHORT).show() } 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 32523b25..5dad5ae1 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 @@ -8,6 +8,9 @@ import android.widget.Toast import androidx.recyclerview.widget.LinearLayoutManager import kotlinx.android.synthetic.main.fragment_new_session.* import net.pokeranalytics.android.R +import net.pokeranalytics.android.model.realm.Bankroll +import net.pokeranalytics.android.model.realm.Game +import net.pokeranalytics.android.model.realm.Location import net.pokeranalytics.android.model.realm.Session import net.pokeranalytics.android.ui.activity.EditableDataActivity import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity @@ -15,10 +18,12 @@ import net.pokeranalytics.android.ui.adapter.components.* import net.pokeranalytics.android.ui.fragment.components.BottomSheetDelegate import net.pokeranalytics.android.ui.fragment.components.BottomSheetFragment import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment +import timber.log.Timber class NewSessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomSheetDelegate { - private lateinit var newSession: Session + private lateinit var currentSession: Session + private lateinit var sessionAdapter : DynamicListAdapter override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { return inflater.inflate(R.layout.fragment_new_session, container, false) @@ -31,7 +36,7 @@ class NewSessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomS } override fun onRowSelected(row: DynamicRowInterface) { - val data = newSession.getBottomSheetData(row, getRealm()) + val data = currentSession.getBottomSheetData(row, getRealm()) BottomSheetFragment.create(fragmentManager, row, this, data) } @@ -46,12 +51,33 @@ class NewSessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomS } + override fun clickOnClear(row: DynamicRowInterface) { + when(row) { + SessionRow.GAME -> currentSession.game = null + SessionRow.BANKROLL -> currentSession.bankroll = null + SessionRow.LOCATION -> currentSession.location = null + } + sessionAdapter.notifyItemChanged(SessionRow.values().indexOf(row)) + } + override fun setValue(value: Any, row: DynamicRowInterface) { + Timber.d("Value: $value") + Timber.d("Row: $row") + + when(row) { + SessionRow.GAME -> if (value is Game) currentSession.game = value + SessionRow.BANKROLL -> if (value is Bankroll) currentSession.bankroll = value + SessionRow.LOCATION -> if (value is Location) currentSession.location = value + } + + sessionAdapter.notifyItemChanged(SessionRow.values().indexOf(row)) + Timber.d("Index: ${SessionRow.values().indexOf(row)}") + Toast.makeText(requireContext(), "Callback for ${row.localizedTitle(requireContext())} ($value)", Toast.LENGTH_SHORT).show() } private fun initData() { - newSession = Session() + currentSession = Session() } /** @@ -64,12 +90,12 @@ class NewSessionFragment : PokerAnalyticsFragment(), DynamicRowCallback, BottomS activity.supportActionBar?.setDisplayHomeAsUpEnabled(true) val viewManager = LinearLayoutManager(requireContext()) - val newSessionAdapter = DynamicListAdapter(newSession, this) + sessionAdapter = DynamicListAdapter(currentSession, this) recyclerView.apply { setHasFixedSize(true) layoutManager = viewManager - adapter = newSessionAdapter + adapter = sessionAdapter } } 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 index 66669d4d..ee906132 100644 --- 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 @@ -22,13 +22,12 @@ enum class BottomSheetType { } interface BottomSheetInterface { - fun clickOnClear() fun clickOnCheck() - fun clickOnAdd() } interface BottomSheetDelegate { fun clickOnAdd(row: DynamicRowInterface) + fun clickOnClear(row: DynamicRowInterface) fun setValue(value: Any, row: DynamicRowInterface) } @@ -80,17 +79,9 @@ open class BottomSheetFragment : BottomSheetDialogFragment(), BottomSheetInterfa dialog?.window?.setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_VISIBLE) } - override fun clickOnClear() { - } - override fun clickOnCheck() { } - override fun clickOnAdd() { - when (row) { - } - } - /** * Init UI */ @@ -105,7 +96,8 @@ open class BottomSheetFragment : BottomSheetDialogFragment(), BottomSheetInterfa // Menu bottomSheetToolbar.menu.findItem(R.id.actionClear).setOnMenuItemClickListener { - clickOnClear() + bottomSheetDelegate.clickOnClear(row) + dismiss() true } bottomSheetToolbar.menu.findItem(R.id.actionAdd).setOnMenuItemClickListener { @@ -114,6 +106,7 @@ open class BottomSheetFragment : BottomSheetDialogFragment(), BottomSheetInterfa } bottomSheetToolbar.menu.findItem(R.id.actionCheck).setOnMenuItemClickListener { clickOnCheck() + dismiss() true } diff --git a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetListFragment.kt b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetListFragment.kt index 1d3e5484..ef323ecf 100644 --- a/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetListFragment.kt +++ b/app/src/main/java/net/pokeranalytics/android/ui/fragment/components/BottomSheetListFragment.kt @@ -3,7 +3,6 @@ package net.pokeranalytics.android.ui.fragment.components import android.os.Bundle import android.view.LayoutInflater import android.view.View -import android.widget.Toast import androidx.recyclerview.widget.LinearLayoutManager import io.realm.RealmResults import kotlinx.android.synthetic.main.bottom_sheet_double_list.* @@ -13,7 +12,6 @@ import net.pokeranalytics.android.model.realm.Game import net.pokeranalytics.android.ui.adapter.components.DataListAdapter import net.pokeranalytics.android.ui.adapter.components.DisplayableDataSource import net.pokeranalytics.android.ui.adapter.components.DisplayableDelegate -import timber.log.Timber class BottomSheetListFragment : BottomSheetFragment(), DisplayableDelegate { @@ -29,7 +27,6 @@ class BottomSheetListFragment : BottomSheetFragment(), DisplayableDelegate { override fun clickOnCheck() { super.clickOnCheck() bottomSheetDelegate.setValue("", row) - dismiss() } override fun onResume() { @@ -47,7 +44,11 @@ class BottomSheetListFragment : BottomSheetFragment(), DisplayableDelegate { override fun onRowSelected(position: Int) { realmData?.let { - Toast.makeText(requireContext(), "Select: ${it[position]}", Toast.LENGTH_SHORT).show() + val selectedData = it[position] + selectedData?.let {data -> + bottomSheetDelegate.setValue(data, row) + dismiss() + } } } diff --git a/app/src/main/res/layout/row_session.xml b/app/src/main/res/layout/row_session.xml index 6198d040..079f9c7f 100644 --- a/app/src/main/res/layout/row_session.xml +++ b/app/src/main/res/layout/row_session.xml @@ -1,41 +1,44 @@ - + - + - + \ No newline at end of file