Improve deletion (work in progress)

dev
Aurelien Hubert 7 years ago
parent d77ced5d7e
commit eed359b08d
  1. 66
      app/src/main/java/net/pokeranalytics/android/ui/fragment/BankrollFragment.kt
  2. 1
      app/src/main/res/layout/fragment_bankroll.xml

@ -6,15 +6,12 @@ import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import androidx.appcompat.app.AlertDialog
import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.LinearLayoutManager
import com.github.mikephil.charting.data.LineDataSet import com.github.mikephil.charting.data.LineDataSet
import com.google.android.material.snackbar.Snackbar
import io.realm.RealmObject import io.realm.RealmObject
import io.realm.RealmResults import io.realm.RealmResults
import kotlinx.android.synthetic.main.fragment_bankroll.* import kotlinx.android.synthetic.main.fragment_bankroll.*
import kotlinx.android.synthetic.main.fragment_bankroll.addButton
import kotlinx.android.synthetic.main.fragment_bankroll.toolbar
import kotlinx.android.synthetic.main.fragment_data_list.*
import kotlinx.android.synthetic.main.fragment_stats.recyclerView import kotlinx.android.synthetic.main.fragment_stats.recyclerView
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.GlobalScope import kotlinx.coroutines.GlobalScope
@ -27,6 +24,7 @@ import net.pokeranalytics.android.calculus.bankroll.BankrollCalculator
import net.pokeranalytics.android.calculus.bankroll.BankrollReport import net.pokeranalytics.android.calculus.bankroll.BankrollReport
import net.pokeranalytics.android.calculus.bankroll.BankrollReportSetup import net.pokeranalytics.android.calculus.bankroll.BankrollReportSetup
import net.pokeranalytics.android.model.LiveData import net.pokeranalytics.android.model.LiveData
import net.pokeranalytics.android.model.interfaces.Deletable
import net.pokeranalytics.android.model.realm.Bankroll import net.pokeranalytics.android.model.realm.Bankroll
import net.pokeranalytics.android.ui.activity.BankrollDetailsActivity import net.pokeranalytics.android.ui.activity.BankrollDetailsActivity
import net.pokeranalytics.android.ui.activity.DataListActivity import net.pokeranalytics.android.ui.activity.DataListActivity
@ -49,7 +47,8 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou
companion object { companion object {
const val REQUEST_CODE_DETAILS = 1000 const val REQUEST_CODE_DETAILS = 100
const val REQUEST_CODE_CREATE = 101
/** /**
* Create new instance * Create new instance
@ -94,10 +93,11 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou
deleteItem(lastItemClickedPosition) deleteItem(lastItemClickedPosition)
} }
} }
} else if (requestCode == REQUEST_CODE_CREATE && resultCode == Activity.RESULT_OK) {
//TODO: Refresh bankrolls
initData()
} }
initData()
//TODO: Refresh bankroll
} }
override fun adapterRows(): List<RowRepresentable>? { override fun adapterRows(): List<RowRepresentable>? {
@ -192,11 +192,7 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou
addButton.setOnClickListener { addButton.setOnClickListener {
LiveData.BANKROLL?.let { LiveData.BANKROLL?.let {
EditableDataActivity.newInstance( EditableDataActivity.newInstanceForResult(this@BankrollFragment, dataType = it.ordinal, primaryKey = null, requestCode = REQUEST_CODE_CREATE)
requireContext(),
dataType = it.ordinal,
primaryKey = null
)
} }
} }
} }
@ -209,47 +205,46 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou
//TODO: Get bankroll from bankrollReport and delete it //TODO: Get bankroll from bankrollReport and delete it
/*
if (isDetached || activity == null) { if (isDetached || activity == null) {
return return
} }
// Save the delete position & create a copy of the object // Save the delete position & create a copy of the object
var mRecentlyDeletedItem = rowRepresentableForPosition(position) val bankrollReport = bankrollReportForRow[rowRepresentableForPosition(position)]
val mRecentlyDeletedItem = bankrollReport?.setup?.bankroll
lastDeletedItemPosition = position lastDeletedItemPosition = position
if (mRecentlyDeletedItem is Bankroll) {
if (mRecentlyDeletedItem is BankrollReport) { // Check if the object is valid for the deletion
if ((mRecentlyDeletedItem as Deletable).isValidForDelete(this.getRealm())) {
if (mRecentlyDeletedItem is RealmObject) { deletedItem = getRealm().copyFromRealm(mRecentlyDeletedItem)
// Check if the object is valid for the deletion getRealm().executeTransaction {
if ((mRecentlyDeletedItem as Deletable).isValidForDelete(this.getRealm())) { mRecentlyDeletedItem.deleteFromRealm()
deletedItem = getRealm().copyFromRealm(mRecentlyDeletedItem)
getRealm().executeTransaction {
mRecentlyDeletedItem.deleteFromRealm()
}
bankrollAdapter.notifyItemRemoved(position)
showUndoSnackBar()
} else {
bankrollAdapter.notifyItemChanged(position)
val builder = AlertDialog.Builder(requireContext())
.setMessage((mRecentlyDeletedItem as Deletable).getFailedDeleteMessage())
.setNegativeButton(R.string.ok, null)
builder.show()
} }
//bankrollAdapter.notifyItemRemoved(position)
//showUndoSnackBar()
//TODO: Refresh bankrolls
initData()
} else {
bankrollAdapter.notifyItemChanged(position)
val builder = AlertDialog.Builder(requireContext())
.setMessage((mRecentlyDeletedItem as Deletable).getFailedDeleteMessage())
.setNegativeButton(R.string.ok, null)
builder.show()
} }
} }
*/
} }
/** /**
* Show undo snack bar * Show undo snack bar
*/ */
private fun showUndoSnackBar() { private fun showUndoSnackBar() {
/*
val message = String.format(getString(R.string.data_deleted), getString(R.string.bankroll)) val message = String.format(getString(R.string.data_deleted), getString(R.string.bankroll))
val snackBar = Snackbar.make(constraintLayout, message, Snackbar.LENGTH_INDEFINITE) val snackBar = Snackbar.make(coordinatorLayout, message, Snackbar.LENGTH_INDEFINITE)
snackBar.setAction(R.string.cancel) { snackBar.setAction(R.string.cancel) {
getRealm().executeTransaction { realm -> getRealm().executeTransaction { realm ->
deletedItem?.let { deletedItem?.let {
@ -259,6 +254,7 @@ class BankrollFragment : PokerAnalyticsFragment(), StaticRowRepresentableDataSou
} }
} }
snackBar.show() snackBar.show()
*/
} }
} }

@ -1,6 +1,7 @@
<?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"
android:id="@+id/coordinatorLayout"
android:layout_width="match_parent" android:layout_width="match_parent"
android:layout_height="match_parent"> android:layout_height="match_parent">

Loading…
Cancel
Save