fix issue with settings data creation

dev_raz_wip
Razmig Sarkissian 7 years ago
parent 9a4f194564
commit 89ba7c3312
  1. 11
      app/src/main/java/net/pokeranalytics/android/model/realm/Game.kt
  2. 14
      app/src/main/java/net/pokeranalytics/android/ui/adapter/components/DynamicRowInterface.kt
  3. 25
      app/src/main/java/net/pokeranalytics/android/ui/fragment/EditableDataFragment.kt
  4. 83
      app/src/main/res/layout/fragment_editable_data.xml
  5. 5
      app/src/main/res/values/strings.xml

@ -2,10 +2,13 @@ package net.pokeranalytics.android.model.realm
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.annotations.PrimaryKey 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.DisplayableDataSource
import net.pokeranalytics.android.ui.adapter.components.DynamicRowDelegate
import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface
import java.util.* import java.util.*
open class Game : RealmObject(), DisplayableDataSource { open class Game : RealmObject(), DynamicRowDelegate, DisplayableDataSource {
@PrimaryKey @PrimaryKey
var id = UUID.randomUUID().toString() var id = UUID.randomUUID().toString()
@ -20,4 +23,10 @@ open class Game : RealmObject(), DisplayableDataSource {
get() { get() {
return name return name
} }
override fun adapterRows(): ArrayList<DynamicRowInterface> {
val rows = ArrayList<DynamicRowInterface>()
rows.addAll(BankrollRow.values())
return rows
}
} }

@ -62,15 +62,21 @@ enum class SessionRow(val resId: Int) : DynamicRowInterface {
} }
enum class BankrollRow(val resId: Int) : DynamicRowInterface { enum class BankrollRow(val resId: Int) : DynamicRowInterface {
NAME(R.string.app_name), NAME(R.string.name),
LIVE(R.string.app_name), LIVE(R.string.live),
CURRENCY(R.string.app_name); CURRENCY(R.string.currency);
override fun localizedTitle(context: Context): String { override fun localizedTitle(context: Context): String {
return context.getString(this.resId) 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 override var bottomSheetType: BottomSheetType = BottomSheetType.NONE
get() { get() {
return when (this) { return when (this) {

@ -8,11 +8,12 @@ import android.widget.Toast
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import io.realm.Realm import io.realm.Realm
import io.realm.RealmObject 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.R
import net.pokeranalytics.android.ui.adapter.components.DynamicRowCallback import net.pokeranalytics.android.model.realm.Bankroll
import net.pokeranalytics.android.ui.adapter.components.DynamicRowInterface import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
import net.pokeranalytics.android.ui.adapter.components.SettingRow import net.pokeranalytics.android.ui.adapter.components.*
import net.pokeranalytics.android.ui.fragment.components.BottomSheetDelegate import net.pokeranalytics.android.ui.fragment.components.BottomSheetDelegate
import net.pokeranalytics.android.ui.fragment.components.BottomSheetFragment import net.pokeranalytics.android.ui.fragment.components.BottomSheetFragment
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment
@ -23,9 +24,8 @@ class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback, Botto
private lateinit var item: RealmObject private lateinit var item: RealmObject
private var dataType: SettingRow = SettingRow.BANKROLL private var dataType: SettingRow = SettingRow.BANKROLL
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_data_list, container, false) return inflater.inflate(R.layout.fragment_editable_data, container, false)
} }
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
@ -44,12 +44,15 @@ class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback, Botto
} }
private fun initData() { private fun initData() {
} }
/** /**
* Init UI * Init UI
*/ */
private fun initUI() { private fun initUI() {
val activity = activity as PokerAnalyticsActivity
activity.setSupportActionBar(toolbar)
activity.supportActionBar?.setDisplayHomeAsUpEnabled(true)
val viewManager = LinearLayoutManager(requireContext()) val viewManager = LinearLayoutManager(requireContext())
@ -63,6 +66,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback, Botto
* Set fragment data * Set fragment data
*/ */
fun setData(dataType: Int, primaryKey: String?) { fun setData(dataType: Int, primaryKey: String?) {
this.dataType = SettingRow.values()[dataType] this.dataType = SettingRow.values()[dataType]
val realm = Realm.getDefaultInstance() val realm = Realm.getDefaultInstance()
var _item : RealmObject? = null var _item : RealmObject? = null
@ -77,12 +81,13 @@ class EditableDataFragment : PokerAnalyticsFragment(), DynamicRowCallback, Botto
_item?.let { _item?.let {
this.item = realm.copyFromRealm(it) this.item = realm.copyFromRealm(it)
} ?: run { } ?: run {
this.item = realm.createObject(this.dataType.clazz(), UUID.randomUUID().toString()) this.item = realm.createObject(Bankroll::class.java, UUID.randomUUID().toString())
} }
realm.commitTransaction() realm.commitTransaction()
//TODO: Crash happens here //TODO: Crash happens here
//val dynamicListAdapter = DynamicListAdapter((this.item as DynamicRowDelegate), this) val dynamicListAdapter = DynamicListAdapter((this.item as DynamicRowDelegate), this)
//this.recyclerView.adapter = dynamicListAdapter this.recyclerView.adapter = dynamicListAdapter
} }
} }

@ -1,68 +1,57 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" <androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools" xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">
<androidx.core.widget.NestedScrollView <androidx.core.widget.NestedScrollView
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.constraintlayout.widget.ConstraintLayout
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="400dp"> android:layout_height="match_parent"
android:fillViewport="true"
app:layout_behavior="@string/appbar_scrolling_view_behavior">
<androidx.appcompat.widget.AppCompatTextView <androidx.constraintlayout.widget.ConstraintLayout
android:id="@+id/title" android:layout_width="match_parent"
style="@style/PokerAnalyticsTheme.TextView.Title" android:layout_height="wrap_content">
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:layout_marginEnd="8dp"
android:text="Edit Data"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
<androidx.recyclerview.widget.RecyclerView <androidx.recyclerview.widget.RecyclerView
android:id="@+id/recyclerView" android:id="@+id/recyclerView"
android:layout_width="0dp" android:layout_width="0dp"
android:layout_height="0dp" android:layout_height="0dp"
android:layout_marginTop="8dp" app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toBottomOf="@+id/title" />
</androidx.constraintlayout.widget.ConstraintLayout> </androidx.constraintlayout.widget.ConstraintLayout>
</androidx.core.widget.NestedScrollView> </androidx.core.widget.NestedScrollView>
<com.google.android.material.appbar.AppBarLayout <com.google.android.material.appbar.AppBarLayout
android:id="@+id/appBar" android:id="@+id/appBar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="128dp" android:layout_height="128dp"
android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"> android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar">
<com.google.android.material.appbar.CollapsingToolbarLayout <com.google.android.material.appbar.CollapsingToolbarLayout
android:id="@+id/collapsingToolbar" android:id="@+id/collapsingToolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_height="match_parent"
app:contentScrim="?attr/colorPrimary" app:contentScrim="?attr/colorPrimary"
app:expandedTitleGravity="bottom" app:expandedTitleGravity="bottom"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap"> app:expandedTitleMarginStart="72dp"
app:expandedTitleTextAppearance="@style/PokerAnalyticsTheme.Toolbar.ExpandedTitleAppearance"
app:collapsedTitleTextAppearance="@style/PokerAnalyticsTheme.Toolbar.CollapsedTitleAppearance"
app:layout_scrollFlags="scroll|exitUntilCollapsed|snap">
<androidx.appcompat.widget.Toolbar <androidx.appcompat.widget.Toolbar
android:id="@+id/toolbar" android:id="@+id/toolbar"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize" android:layout_height="?attr/actionBarSize"
app:title="Poker Analytics" app:title="Poker Analytics"
app:titleTextColor="@color/white" app:titleTextColor="@color/white"
app:layout_collapseMode="pin" /> app:layout_collapseMode="pin" />
</com.google.android.material.appbar.CollapsingToolbarLayout> </com.google.android.material.appbar.CollapsingToolbarLayout>

@ -12,4 +12,9 @@
<string name="tournament_type">Tournament Type</string> <string name="tournament_type">Tournament Type</string>
<string name="transaction_type">Transaction Type</string> <string name="transaction_type">Transaction Type</string>
<string name="name">Name</string>
<string name="live">Live</string>
<string name="currency">Currency</string>
</resources> </resources>

Loading…
Cancel
Save