|
|
|
|
@ -38,22 +38,15 @@ open class EditableDataFragment : DataManagerFragment(), RowRepresentableDelegat |
|
|
|
|
|
|
|
|
|
open fun initData() { |
|
|
|
|
|
|
|
|
|
this.viewModel.dataType = this.arguments?.getInt(BundleKey.DATA_TYPE.value) |
|
|
|
|
this.viewModel.primaryKey = this.arguments?.getString(BundleKey.PRIMARY_KEY.value) |
|
|
|
|
viewModel.loadItemWithRealm(getRealm()) |
|
|
|
|
this.model.dataType = this.arguments?.getInt(BundleKey.DATA_TYPE.value) |
|
|
|
|
this.model.primaryKey = this.arguments?.getString(BundleKey.PRIMARY_KEY.value) |
|
|
|
|
|
|
|
|
|
val dataSource = getDataSource() |
|
|
|
|
this.rowRepresentableAdapter = RowRepresentableAdapter(getDataSource(), this) |
|
|
|
|
//this.rowRepresentableAdapter.setHasStableIds(true) |
|
|
|
|
this.recyclerView.adapter = rowRepresentableAdapter |
|
|
|
|
this.model.loadItemWithRealm(getRealm()) |
|
|
|
|
|
|
|
|
|
// When creating an object, open automatically the keyboard for the first row |
|
|
|
|
if (!deleteButtonShouldAppear && shouldOpenKeyboard) { |
|
|
|
|
val row = dataSource.adapterRows()?.firstOrNull() |
|
|
|
|
row?.let { |
|
|
|
|
onRowSelected(0, it) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
open fun indexOfFirstRowToSelect(): Int { |
|
|
|
|
return 0 |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -75,7 +68,7 @@ open class EditableDataFragment : DataManagerFragment(), RowRepresentableDelegat |
|
|
|
|
override fun onRowValueChanged(value: Any?, row: RowRepresentable) { |
|
|
|
|
this.getRealm().executeTransaction { |
|
|
|
|
try { |
|
|
|
|
(this.viewModel.item as Editable).updateValue(value, row) |
|
|
|
|
(this.model.item as Editable).updateValue(value, row) |
|
|
|
|
} catch (e: Exception) { |
|
|
|
|
Crashlytics.log("Exception caught: row = $row, value=$value, class=${this.javaClass}") |
|
|
|
|
throw e |
|
|
|
|
@ -92,10 +85,10 @@ open class EditableDataFragment : DataManagerFragment(), RowRepresentableDelegat |
|
|
|
|
|
|
|
|
|
setDisplayHomeAsUpEnabled(true) |
|
|
|
|
|
|
|
|
|
val liveDataType = this.viewModel.liveDataType |
|
|
|
|
val liveDataType = this.model.liveDataType |
|
|
|
|
|
|
|
|
|
val proxyItem: RealmModel? = |
|
|
|
|
liveDataType.getData(this.getRealm(), this.viewModel.primaryKey) |
|
|
|
|
liveDataType.getData(this.getRealm(), this.model.primaryKey) |
|
|
|
|
proxyItem?.let { |
|
|
|
|
this.appBar.toolbar.title = liveDataType.updateEntityLocalizedTitle(requireContext()) |
|
|
|
|
deleteButtonShouldAppear = true |
|
|
|
|
@ -109,13 +102,26 @@ open class EditableDataFragment : DataManagerFragment(), RowRepresentableDelegat |
|
|
|
|
setHasFixedSize(true) |
|
|
|
|
layoutManager = viewManager |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
val dataSource = getDataSource() |
|
|
|
|
this.rowRepresentableAdapter = RowRepresentableAdapter(getDataSource(), this) |
|
|
|
|
//this.rowRepresentableAdapter.setHasStableIds(true) |
|
|
|
|
this.recyclerView.adapter = rowRepresentableAdapter |
|
|
|
|
|
|
|
|
|
// When creating an object, open automatically the keyboard for the first row |
|
|
|
|
if (!deleteButtonShouldAppear && shouldOpenKeyboard) { |
|
|
|
|
val index = indexOfFirstRowToSelect() |
|
|
|
|
dataSource.adapterRows()?.get(index)?.let { row -> |
|
|
|
|
onRowSelected(index, row) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Return the data source |
|
|
|
|
*/ |
|
|
|
|
open fun getDataSource(): RowRepresentableDataSource { |
|
|
|
|
return this.viewModel.item as RowRepresentableDataSource |
|
|
|
|
return this.model.item as RowRepresentableDataSource |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |