From 89ba7c3312711b0275d39347f6a6d2e7604127be Mon Sep 17 00:00:00 2001 From: Razmig Sarkissian Date: Mon, 18 Feb 2019 10:37:52 +0100 Subject: [PATCH] fix issue with settings data creation --- .../android/model/realm/Game.kt | 11 ++- .../adapter/components/DynamicRowInterface.kt | 14 +++- .../ui/fragment/EditableDataFragment.kt | 25 +++--- .../res/layout/fragment_editable_data.xml | 83 ++++++++----------- app/src/main/res/values/strings.xml | 5 ++ 5 files changed, 76 insertions(+), 62 deletions(-) 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 4bd8134e..28ce2521 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,10 +2,13 @@ package net.pokeranalytics.android.model.realm import io.realm.RealmObject import io.realm.annotations.PrimaryKey +import net.pokeranalytics.android.ui.adapter.components.BankrollRow 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 java.util.* -open class Game : RealmObject(), DisplayableDataSource { +open class Game : RealmObject(), DynamicRowDelegate, DisplayableDataSource { @PrimaryKey var id = UUID.randomUUID().toString() @@ -20,4 +23,10 @@ open class Game : RealmObject(), DisplayableDataSource { get() { return name } + + override fun adapterRows(): ArrayList { + val rows = ArrayList() + rows.addAll(BankrollRow.values()) + return rows + } } 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 c12a4886..087ffe96 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,15 +62,21 @@ enum class SessionRow(val resId: Int) : DynamicRowInterface { } 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.name), + LIVE(R.string.live), + CURRENCY(R.string.currency); override fun localizedTitle(context: Context): String { return context.getString(this.resId) } - override var viewType: Int = 1 + override var viewType: Int = RowViewType.HEADER.ordinal + get() { + return when (this) { + NAME, LIVE, CURRENCY -> RowViewType.TITLE_VALUE.ordinal + } + } + override var bottomSheetType: BottomSheetType = BottomSheetType.NONE get() { return when (this) { 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 9aedd133..c782b4db 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 @@ -8,11 +8,12 @@ import android.widget.Toast import androidx.recyclerview.widget.LinearLayoutManager import io.realm.Realm import io.realm.RealmObject -import kotlinx.android.synthetic.main.fragment_new_session.* +import kotlinx.android.synthetic.main.bottom_sheet_bankroll.* +import kotlinx.android.synthetic.main.fragment_editable_data.* import net.pokeranalytics.android.R -import net.pokeranalytics.android.ui.adapter.components.DynamicRowCallback -import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface -import net.pokeranalytics.android.ui.adapter.components.SettingRow +import net.pokeranalytics.android.model.realm.Bankroll +import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity +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 @@ -23,9 +24,8 @@ class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback, Botto private lateinit var item: RealmObject private var dataType: SettingRow = SettingRow.BANKROLL - override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { - return inflater.inflate(R.layout.fragment_data_list, container, false) + return inflater.inflate(R.layout.fragment_editable_data, container, false) } override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -44,12 +44,15 @@ class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback, Botto } private fun initData() { - } + } /** * Init UI */ private fun initUI() { + val activity = activity as PokerAnalyticsActivity + activity.setSupportActionBar(toolbar) + activity.supportActionBar?.setDisplayHomeAsUpEnabled(true) val viewManager = LinearLayoutManager(requireContext()) @@ -63,6 +66,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback, Botto * Set fragment data */ fun setData(dataType: Int, primaryKey: String?) { + this.dataType = SettingRow.values()[dataType] val realm = Realm.getDefaultInstance() var _item : RealmObject? = null @@ -77,12 +81,13 @@ class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback, Botto _item?.let { this.item = realm.copyFromRealm(it) } ?: run { - this.item = realm.createObject(this.dataType.clazz(), UUID.randomUUID().toString()) + this.item = realm.createObject(Bankroll::class.java, UUID.randomUUID().toString()) } realm.commitTransaction() //TODO: Crash happens here - //val dynamicListAdapter = DynamicListAdapter((this.item as DynamicRowDelegate), this) - //this.recyclerView.adapter = dynamicListAdapter + val dynamicListAdapter = DynamicListAdapter((this.item as DynamicRowDelegate), this) + this.recyclerView.adapter = dynamicListAdapter + } } \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_editable_data.xml b/app/src/main/res/layout/fragment_editable_data.xml index 76e12a6b..d072701e 100644 --- a/app/src/main/res/layout/fragment_editable_data.xml +++ b/app/src/main/res/layout/fragment_editable_data.xml @@ -1,68 +1,57 @@ + xmlns:app="http://schemas.android.com/apk/res-auto" + xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent"> - - + android:layout_height="match_parent" + android:fillViewport="true" + app:layout_behavior="@string/appbar_scrolling_view_behavior"> - + + android:id="@+id/recyclerView" + android:layout_width="0dp" + android:layout_height="0dp" + app:layout_constraintBottom_toBottomOf="parent" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent" /> + android:id="@+id/appBar" + android:layout_width="match_parent" + android:layout_height="128dp" + android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> + android:id="@+id/collapsingToolbar" + android:layout_width="match_parent" + android:layout_height="match_parent" + app:contentScrim="?attr/colorPrimary" + app:expandedTitleGravity="bottom" + app:expandedTitleMarginStart="72dp" + app:expandedTitleTextAppearance="@style/PokerAnalyticsTheme.Toolbar.ExpandedTitleAppearance" + app:collapsedTitleTextAppearance="@style/PokerAnalyticsTheme.Toolbar.CollapsedTitleAppearance" + app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> + android:id="@+id/toolbar" + android:layout_width="match_parent" + android:layout_height="?attr/actionBarSize" + app:title="Poker Analytics" + app:titleTextColor="@color/white" + app:layout_collapseMode="pin" /> diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0afe7cc7..ba4cfea3 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -12,4 +12,9 @@ Tournament Type Transaction Type + Name + Live + Currency + +