|
|
|
|
@ -14,13 +14,13 @@ import kotlinx.coroutines.delay |
|
|
|
|
import kotlinx.coroutines.launch |
|
|
|
|
import net.pokeranalytics.android.R |
|
|
|
|
import net.pokeranalytics.android.model.interfaces.Deletable |
|
|
|
|
import net.pokeranalytics.android.model.interfaces.Identifiable |
|
|
|
|
import net.pokeranalytics.android.ui.activity.DataListActivity |
|
|
|
|
import net.pokeranalytics.android.ui.adapter.RowRepresentableAdapter |
|
|
|
|
|
|
|
|
|
/** |
|
|
|
|
* Deletable Item Fragment |
|
|
|
|
* Don't forget to add a CoordinatorLayout at the top of your XML if you want to display correctly the snack bar |
|
|
|
|
* Don't forget to add a CoordinatorLayout at the top of your XML |
|
|
|
|
* if you want to display correctly the snack bar |
|
|
|
|
*/ |
|
|
|
|
abstract class DeletableItemFragment : RealmFragment() { |
|
|
|
|
|
|
|
|
|
@ -37,7 +37,7 @@ abstract class DeletableItemFragment : RealmFragment() { |
|
|
|
|
private var mainLayout: ViewGroup? = null |
|
|
|
|
private var snackBar: Snackbar? = null |
|
|
|
|
|
|
|
|
|
abstract fun deletableItems() : List<Identifiable> |
|
|
|
|
abstract fun deletableItems() : List<Deletable> |
|
|
|
|
|
|
|
|
|
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { |
|
|
|
|
super.onViewCreated(view, savedInstanceState) |
|
|
|
|
@ -60,7 +60,6 @@ abstract class DeletableItemFragment : RealmFragment() { |
|
|
|
|
deleteItem(dataListAdapter, deletableItems(), id) |
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
} |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
@ -69,9 +68,8 @@ abstract class DeletableItemFragment : RealmFragment() { |
|
|
|
|
* [dataListAdapter]: Adapter to update |
|
|
|
|
* [items]: List of items which contains the element to delete |
|
|
|
|
* [itemId]: Id of the item to delete |
|
|
|
|
* [container]: View to display the Snackbar |
|
|
|
|
*/ |
|
|
|
|
fun deleteItem(dataListAdapter: RowRepresentableAdapter, items: List<Identifiable>, itemId: String) { |
|
|
|
|
fun deleteItem(dataListAdapter: RowRepresentableAdapter, items: List<Deletable>, itemId: String) { |
|
|
|
|
|
|
|
|
|
if (isDetached || activity == null) { |
|
|
|
|
return |
|
|
|
|
@ -85,10 +83,8 @@ abstract class DeletableItemFragment : RealmFragment() { |
|
|
|
|
|
|
|
|
|
if (itemToDelete is RealmObject && itemPosition != -1) { |
|
|
|
|
|
|
|
|
|
val deletableItem = (itemToDelete as Deletable) |
|
|
|
|
|
|
|
|
|
// Check if the object is valid for the deletion |
|
|
|
|
if (deletableItem.isValidForDelete(this.getRealm())) { |
|
|
|
|
if (itemToDelete.isValidForDelete(this.getRealm())) { |
|
|
|
|
deletedItem = getRealm().copyFromRealm(itemToDelete) |
|
|
|
|
lastDeletedItemPosition = itemPosition |
|
|
|
|
getRealm().executeTransaction { |
|
|
|
|
@ -100,8 +96,8 @@ abstract class DeletableItemFragment : RealmFragment() { |
|
|
|
|
showUndoSnackBar() |
|
|
|
|
} else { |
|
|
|
|
dataListAdapter.notifyItemChanged(itemPosition) |
|
|
|
|
val status = deletableItem.getDeleteStatus(requireContext(), this.getRealm()) |
|
|
|
|
val message = deletableItem.getFailedDeleteMessage(status) |
|
|
|
|
val status = itemToDelete.getDeleteStatus(requireContext(), this.getRealm()) |
|
|
|
|
val message = itemToDelete.getFailedDeleteMessage(status) |
|
|
|
|
val builder = AlertDialog.Builder(requireContext()) |
|
|
|
|
.setMessage(message) |
|
|
|
|
.setNegativeButton(R.string.ok, null) |
|
|
|
|
|