|
|
|
@ -11,7 +11,6 @@ import io.realm.RealmObject |
|
|
|
import kotlinx.android.synthetic.main.fragment_editable_data.* |
|
|
|
import kotlinx.android.synthetic.main.fragment_editable_data.* |
|
|
|
import kotlinx.android.synthetic.main.fragment_editable_data.view.* |
|
|
|
import kotlinx.android.synthetic.main.fragment_editable_data.view.* |
|
|
|
import net.pokeranalytics.android.R |
|
|
|
import net.pokeranalytics.android.R |
|
|
|
import net.pokeranalytics.android.exceptions.TypeException |
|
|
|
|
|
|
|
import net.pokeranalytics.android.model.LiveData |
|
|
|
import net.pokeranalytics.android.model.LiveData |
|
|
|
import net.pokeranalytics.android.model.interfaces.Identifiable |
|
|
|
import net.pokeranalytics.android.model.interfaces.Identifiable |
|
|
|
import net.pokeranalytics.android.model.interfaces.Savable |
|
|
|
import net.pokeranalytics.android.model.interfaces.Savable |
|
|
|
@ -27,19 +26,19 @@ import net.pokeranalytics.android.ui.adapter.RowRepresentableDelegate |
|
|
|
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment |
|
|
|
import net.pokeranalytics.android.ui.fragment.components.PokerAnalyticsFragment |
|
|
|
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetDelegate |
|
|
|
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetDelegate |
|
|
|
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetFragment |
|
|
|
import net.pokeranalytics.android.ui.fragment.components.bottomsheet.BottomSheetFragment |
|
|
|
import net.pokeranalytics.android.ui.helpers.PlacePickerManager |
|
|
|
|
|
|
|
import net.pokeranalytics.android.ui.view.RowRepresentable |
|
|
|
import net.pokeranalytics.android.ui.view.RowRepresentable |
|
|
|
import net.pokeranalytics.android.ui.view.rowrepresentable.LocationRow |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, BottomSheetDelegate { |
|
|
|
open class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, BottomSheetDelegate { |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
lateinit var parentActivity: PokerAnalyticsActivity |
|
|
|
|
|
|
|
lateinit var item: RealmObject |
|
|
|
|
|
|
|
lateinit var liveDataType: LiveData |
|
|
|
|
|
|
|
lateinit var rowRepresentableAdapter: RowRepresentableAdapter |
|
|
|
|
|
|
|
|
|
|
|
private lateinit var parentActivity: PokerAnalyticsActivity |
|
|
|
|
|
|
|
private lateinit var item: RealmObject |
|
|
|
|
|
|
|
private lateinit var liveDataType: LiveData |
|
|
|
|
|
|
|
private lateinit var rowRepresentableAdapter: RowRepresentableAdapter |
|
|
|
|
|
|
|
private var editableMenu: Menu? = null |
|
|
|
private var editableMenu: Menu? = null |
|
|
|
private var dataType: Int? = null |
|
|
|
private var dataType: Int? = null |
|
|
|
|
|
|
|
private var primaryKey: String? = null |
|
|
|
private var isUpdating = false |
|
|
|
private var isUpdating = false |
|
|
|
|
|
|
|
|
|
|
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { |
|
|
|
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? { |
|
|
|
@ -49,6 +48,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, |
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { |
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { |
|
|
|
super.onViewCreated(view, savedInstanceState) |
|
|
|
super.onViewCreated(view, savedInstanceState) |
|
|
|
initUI() |
|
|
|
initUI() |
|
|
|
|
|
|
|
initData() |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { |
|
|
|
override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) { |
|
|
|
@ -68,18 +68,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { |
|
|
|
override fun onRowSelected(position: Int, row: RowRepresentable, fromAction: Boolean) { |
|
|
|
when (row) { |
|
|
|
BottomSheetFragment.create(fragmentManager, row, this, (this.item as RowRepresentableDataSource).editDescriptors(row)) |
|
|
|
LocationRow.LOCATE_ME -> { |
|
|
|
|
|
|
|
if (item is Location) { |
|
|
|
|
|
|
|
(item as Location).isLookingForPlaces = true |
|
|
|
|
|
|
|
PlacePickerManager.create(parentActivity, row, this) |
|
|
|
|
|
|
|
rowRepresentableAdapter.refreshRow(row) |
|
|
|
|
|
|
|
} else { |
|
|
|
|
|
|
|
throw TypeException("Need to manage LocationRow.LOCATE_ME for ${item::class.java}") |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else -> BottomSheetFragment.create(fragmentManager, row, this, (this.item as RowRepresentableDataSource).editDescriptors(row)) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
override fun clickOnAdd(row: RowRepresentable) { |
|
|
|
override fun clickOnAdd(row: RowRepresentable) { |
|
|
|
@ -90,12 +79,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, |
|
|
|
this.getRealm().executeTransaction { |
|
|
|
this.getRealm().executeTransaction { |
|
|
|
(this.item as Savable).updateValue(value, row) |
|
|
|
(this.item as Savable).updateValue(value, row) |
|
|
|
} |
|
|
|
} |
|
|
|
when (row) { |
|
|
|
rowRepresentableAdapter.refreshRow(row) |
|
|
|
LocationRow.LOCATE_ME -> { |
|
|
|
|
|
|
|
rowRepresentableAdapter.notifyDataSetChanged() |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
else -> rowRepresentableAdapter.refreshRow(row) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
@ -115,6 +99,36 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
|
|
|
* Init data |
|
|
|
|
|
|
|
*/ |
|
|
|
|
|
|
|
private fun initData() { |
|
|
|
|
|
|
|
if (this.dataType != null && this.primaryKey != null) { |
|
|
|
|
|
|
|
val proxyItem: RealmObject? = this.liveDataType.getData(this.getRealm(), primaryKey) |
|
|
|
|
|
|
|
proxyItem?.let { |
|
|
|
|
|
|
|
this.appBar.toolbar.title = "Update ${this.liveDataType.name.toLowerCase().capitalize()}" |
|
|
|
|
|
|
|
isUpdating = true |
|
|
|
|
|
|
|
} ?: run { |
|
|
|
|
|
|
|
this.appBar.toolbar.title = "New ${this.liveDataType.name.toLowerCase().capitalize()}" |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
this.item = this.liveDataType.updateOrCreate(this.getRealm(), primaryKey) |
|
|
|
|
|
|
|
this.rowRepresentableAdapter = RowRepresentableAdapter( |
|
|
|
|
|
|
|
(this.item as RowRepresentableDataSource), |
|
|
|
|
|
|
|
this |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
this.recyclerView.adapter = rowRepresentableAdapter |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// When creating an object, open automatically the keyboard for the first row |
|
|
|
|
|
|
|
if (!isUpdating && this.item is RowRepresentableDataSource) { |
|
|
|
|
|
|
|
val row = (this.item as RowRepresentableDataSource).adapterRows()?.firstOrNull() |
|
|
|
|
|
|
|
row?.let { |
|
|
|
|
|
|
|
onRowSelected(0, it) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
/** |
|
|
|
/** |
|
|
|
* Update menu UI |
|
|
|
* Update menu UI |
|
|
|
*/ |
|
|
|
*/ |
|
|
|
@ -190,26 +204,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, |
|
|
|
fun setData(dataType: Int, primaryKey: String?) { |
|
|
|
fun setData(dataType: Int, primaryKey: String?) { |
|
|
|
this.dataType = dataType |
|
|
|
this.dataType = dataType |
|
|
|
this.liveDataType = LiveData.values()[dataType] |
|
|
|
this.liveDataType = LiveData.values()[dataType] |
|
|
|
val proxyItem: RealmObject? = this.liveDataType.getData(this.getRealm(), primaryKey) |
|
|
|
this.primaryKey = primaryKey |
|
|
|
proxyItem?.let { |
|
|
|
|
|
|
|
this.appBar.toolbar.title = "Update ${this.liveDataType.name.toLowerCase().capitalize()}" |
|
|
|
|
|
|
|
isUpdating = true |
|
|
|
|
|
|
|
} ?: run { |
|
|
|
|
|
|
|
this.appBar.toolbar.title = "New ${this.liveDataType.name.toLowerCase().capitalize()}" |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
this.item = this.liveDataType.updateOrCreate(this.getRealm(), primaryKey) |
|
|
|
|
|
|
|
this.rowRepresentableAdapter = RowRepresentableAdapter( |
|
|
|
|
|
|
|
(this.item as RowRepresentableDataSource), |
|
|
|
|
|
|
|
this |
|
|
|
|
|
|
|
) |
|
|
|
|
|
|
|
this.recyclerView.adapter = rowRepresentableAdapter |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// When creating an object, open automatically the keyboard for the first row |
|
|
|
|
|
|
|
if (!isUpdating && this.item is RowRepresentableDataSource) { |
|
|
|
|
|
|
|
val row = (this.item as RowRepresentableDataSource).adapterRows()?.firstOrNull() |
|
|
|
|
|
|
|
row?.let { |
|
|
|
|
|
|
|
onRowSelected(0, it) |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
} |