|
|
|
|
@ -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 |
|
|
|
|
@ -28,6 +28,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, |
|
|
|
|
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,33 +99,44 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, |
|
|
|
|
setHasFixedSize(true) |
|
|
|
|
layoutManager = viewManager |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
this.saveButton.text = this.saveButton.context.getString(R.string.save) |
|
|
|
|
this.saveButton.setOnClickListener { |
|
|
|
|
/** |
|
|
|
|
* 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) |
|
|
|
|
} |
|
|
|
|
this.activity?.let { |
|
|
|
|
it.finish() |
|
|
|
|
} |
|
|
|
|
activity?.finish() |
|
|
|
|
} else { |
|
|
|
|
val builder = AlertDialog.Builder(it.context) |
|
|
|
|
val builder = AlertDialog.Builder(requireContext()) |
|
|
|
|
.setMessage(R.string.empty_name_for_br_error) |
|
|
|
|
.setNegativeButton(R.string.ok, null) |
|
|
|
|
builder.show() |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
this.deleteButton.text = this.deleteButton.context.getString(R.string.delete) |
|
|
|
|
this.deleteButton.setOnClickListener { |
|
|
|
|
val builder = AlertDialog.Builder(it.context) |
|
|
|
|
/** |
|
|
|
|
* 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_) |
|
|
|
|
.setNeutralButton(R.string.no, null) |
|
|
|
|
.setNegativeButton(R.string.yes, DialogInterface.OnClickListener { dialog, id -> |
|
|
|
|
|
|
|
|
|
.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") |
|
|
|
|
@ -121,9 +150,9 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, |
|
|
|
|
this.activity?.let { |
|
|
|
|
it.finish() |
|
|
|
|
} |
|
|
|
|
}) |
|
|
|
|
builder.show() |
|
|
|
|
} |
|
|
|
|
builder.show() |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
@ -131,7 +160,7 @@ class EditableDataFragment : PokerAnalyticsFragment(), RowRepresentableDelegate, |
|
|
|
|
*/ |
|
|
|
|
fun setData(dataType: Int, primaryKey: String?) { |
|
|
|
|
this.liveDataType = LiveData.values()[dataType] |
|
|
|
|
var proxyItem : RealmObject? = this.liveDataType.getData(this.getRealm(), primaryKey) |
|
|
|
|
var proxyItem: RealmObject? = this.liveDataType.getData(this.getRealm(), primaryKey) |
|
|
|
|
proxyItem?.let { |
|
|
|
|
this.appBar.toolbar.title = "Update ${this.liveDataType.name.toLowerCase().capitalize()}" |
|
|
|
|
} ?: run { |
|
|
|
|
|