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 62e25c8f..27c2dcc4 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
@@ -1,10 +1,7 @@
package net.pokeranalytics.android.ui.fragment
-import android.content.DialogInterface
import android.os.Bundle
-import android.view.LayoutInflater
-import android.view.View
-import android.view.ViewGroup
+import android.view.*
import android.widget.Toast
import androidx.appcompat.app.AlertDialog
import androidx.recyclerview.widget.LinearLayoutManager
@@ -15,7 +12,10 @@ import net.pokeranalytics.android.R
import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.ObjectSavable
import net.pokeranalytics.android.ui.activity.components.PokerAnalyticsActivity
-import net.pokeranalytics.android.ui.adapter.components.*
+import net.pokeranalytics.android.ui.adapter.components.LiveDataDataSource
+import net.pokeranalytics.android.ui.adapter.components.RowRepresentableAdapter
+import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDataSource
+import net.pokeranalytics.android.ui.adapter.components.RowRepresentableDelegate
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.BottomSheetFragment
@@ -25,9 +25,10 @@ import timber.log.Timber
class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, BottomSheetDelegate {
- private lateinit var item: RealmObject
+ private lateinit var item: RealmObject
private lateinit var liveDataType: LiveData
private lateinit var rowRepresentableAdapter: RowRepresentableAdapter
+ private var editableMenu: Menu? = null
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
return inflater.inflate(R.layout.fragment_editable_data, container, false)
@@ -39,6 +40,22 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate,
initUI()
}
+ override fun onCreateOptionsMenu(menu: Menu?, inflater: MenuInflater?) {
+ inflater?.inflate(R.menu.editable_data, menu)
+ this.editableMenu = menu
+ updateMenuUI()
+ super.onCreateOptionsMenu(menu, inflater)
+ }
+
+
+ override fun onOptionsItemSelected(item: MenuItem?): Boolean {
+ when (item!!.itemId) {
+ R.id.save -> saveData()
+ R.id.delete -> deleteData()
+ }
+ return true
+ }
+
override fun onRowSelected(row: RowRepresentable) {
BottomSheetFragment.create(fragmentManager, row, this, (this.item as RowEditable).getBottomSheetData(row))
}
@@ -74,6 +91,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate,
val activity = activity as PokerAnalyticsActivity
activity.setSupportActionBar(toolbar)
activity.supportActionBar?.setDisplayHomeAsUpEnabled(true)
+ setHasOptionsMenu(true)
val viewManager = LinearLayoutManager(requireContext())
@@ -81,49 +99,60 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate,
setHasFixedSize(true)
layoutManager = viewManager
}
+ }
+
+ /**
+ * Update menu UI
+ */
+ private fun updateMenuUI() {
+ editableMenu?.findItem(R.id.delete)?.isVisible = item.isManaged
+ editableMenu?.findItem(R.id.save)?.isVisible = true
+ }
+
+ /**
+ * Save data
+ */
+ private fun saveData() {
+ if ((this.item as ObjectSavable).isValidForSave()) {
+ this.getRealm().executeTransaction {
+ it.copyToRealmOrUpdate(this.item)
+ }
+ activity?.finish()
+ } else {
+ val builder = AlertDialog.Builder(requireContext())
+ .setMessage(R.string.empty_name_for_br_error)
+ .setNegativeButton(R.string.ok, null)
+ builder.show()
+ }
- this.saveButton.text = this.saveButton.context.getString(R.string.save)
- this.saveButton.setOnClickListener {
+ }
- if ((this.item as ObjectSavable).isValidForSave()) {
- this.getRealm().executeTransaction {
- it.copyToRealmOrUpdate(this.item)
+ /**
+ * Delete data
+ */
+ private fun deleteData() {
+
+ val builder = AlertDialog.Builder(requireContext())
+ builder.setTitle(R.string.warning)
+ .setMessage(R.string.are_you_sure_you_want_to_do_that_)
+ .setNegativeButton(R.string.no, null)
+ .setPositiveButton(R.string.yes) { dialog, id ->
+ if (this.item.isManaged) {
+ Toast.makeText(requireContext(), "isManaged", Toast.LENGTH_SHORT).show()
+ Timber.d("is managed")
+ this.getRealm().executeTransaction {
+ this.liveDataType.deleteData(it, (this.item as LiveDataDataSource))
+ }
+ } else {
+ Toast.makeText(requireContext(), "isNotManaged", Toast.LENGTH_SHORT).show()
+ Timber.d("is not managed")
}
this.activity?.let {
it.finish()
}
- } else {
- val builder = AlertDialog.Builder(it.context)
- .setMessage(R.string.empty_name_for_br_error)
- .setNegativeButton(R.string.ok, null)
- builder.show()
}
- }
+ builder.show()
- this.deleteButton.text = this.deleteButton.context.getString(R.string.delete)
- this.deleteButton.setOnClickListener {
- val builder = AlertDialog.Builder(it.context)
- builder.setTitle(R.string.warning)
- .setMessage(R.string.are_you_sure_you_want_to_do_that_)
- .setNeutralButton(R.string.no, null)
- .setNegativeButton(R.string.yes, DialogInterface.OnClickListener { dialog, id ->
-
- if (this.item.isManaged) {
- Toast.makeText(requireContext(), "isManaged", Toast.LENGTH_SHORT).show()
- Timber.d("is managed")
- this.getRealm().executeTransaction {
- this.liveDataType.deleteData(it, (this.item as LiveDataDataSource))
- }
- } else {
- Toast.makeText(requireContext(), "isNotManaged", Toast.LENGTH_SHORT).show()
- Timber.d("is not managed")
- }
- this.activity?.let {
- it.finish()
- }
- })
- builder.show()
- }
}
/**
@@ -131,8 +160,8 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate,
*/
fun setData(dataType: Int, primaryKey: String?) {
this.liveDataType = LiveData.values()[dataType]
- var proxyItem : RealmObject? = this.liveDataType.getData(this.getRealm(), primaryKey)
- proxyItem?.let {
+ var proxyItem: RealmObject? = this.liveDataType.getData(this.getRealm(), primaryKey)
+ proxyItem?.let {
this.appBar.toolbar.title = "Update ${this.liveDataType.name.toLowerCase().capitalize()}"
} ?: run {
this.appBar.toolbar.title = "New ${this.liveDataType.name.toLowerCase().capitalize()}"
diff --git a/app/src/main/res/layout/fragment_editable_data.xml b/app/src/main/res/layout/fragment_editable_data.xml
index ed7b8bf4..bab049a9 100644
--- a/app/src/main/res/layout/fragment_editable_data.xml
+++ b/app/src/main/res/layout/fragment_editable_data.xml
@@ -1,74 +1,61 @@