diff options
Diffstat (limited to 'wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt')
-rw-r--r-- | wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt | 72 |
1 files changed, 55 insertions, 17 deletions
diff --git a/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt b/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt index 678bed2..1a709b0 100644 --- a/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt +++ b/wallet/src/main/java/net/taler/wallet/transactions/TransactionDetailFragment.kt @@ -20,13 +20,13 @@ import android.os.Bundle import android.view.Menu import android.view.MenuInflater import android.view.MenuItem -import androidx.annotation.StringRes import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.navigation.fragment.findNavController import com.google.android.material.dialog.MaterialAlertDialogBuilder import net.taler.wallet.MainViewModel import net.taler.wallet.R +import net.taler.wallet.transactions.TransactionAction.* abstract class TransactionDetailFragment : Fragment() { @@ -63,27 +63,50 @@ abstract class TransactionDetailFragment : Fragment() { } } - @StringRes - protected open val deleteDialogTitle = R.string.transactions_delete + private fun dialogTitle(t: TransactionAction): Int? = when (t) { + Delete -> R.string.transactions_delete_dialog_title + Abort -> R.string.transactions_abort_dialog_title + else -> null + } - @StringRes - protected open val deleteDialogMessage = R.string.transactions_delete_dialog_message + private fun dialogMessage(t: TransactionAction): Int? = when (t) { + Delete -> R.string.transactions_delete_dialog_message + Abort -> R.string.transactions_abort_dialog_message + else -> null + } - @StringRes - protected open val deleteDialogButton = R.string.transactions_delete + private fun dialogButton(t: TransactionAction): Int? = when (t) { + Delete -> R.string.transactions_delete + Abort -> R.string.transactions_abort + else -> null + } - protected fun onDeleteButtonClicked(t: Transaction) { - MaterialAlertDialogBuilder(requireContext(), R.style.MaterialAlertDialog_Material3) - .setTitle(deleteDialogTitle) - .setMessage(deleteDialogMessage) - .setNeutralButton(R.string.cancel) { dialog, _ -> - dialog.cancel() + protected fun onTransitionButton(t: Transaction, tt: TransactionAction) { + when (tt) { + Delete, Abort -> { + MaterialAlertDialogBuilder(requireContext(), R.style.MaterialAlertDialog_Material3) + .setTitle(dialogTitle(tt)!!) + .setMessage(dialogMessage(tt)!!) + .setNeutralButton(R.string.cancel) { dialog, _ -> + dialog.cancel() + } + .setNegativeButton(dialogButton(tt)!!) { dialog, _ -> + when (tt) { + Delete -> deleteTransaction(t) + Abort -> abortTransaction(t) + else -> {} + } + dialog.dismiss() + } + .show() } - .setNegativeButton(deleteDialogButton) { dialog, _ -> - deleteTransaction(t) - dialog.dismiss() + else -> when (tt) { + Retry -> retryTransaction(t) + Suspend -> suspendTransaction(t) + Resume -> resumeTransaction(t) + else -> {} } - .show() + } } private fun deleteTransaction(t: Transaction) { @@ -91,4 +114,19 @@ abstract class TransactionDetailFragment : Fragment() { findNavController().popBackStack() } + private fun retryTransaction(t: Transaction) { + transactionManager.retryTransaction(t.transactionId) + } + + private fun abortTransaction(t: Transaction) { + transactionManager.abortTransaction(t.transactionId) + } + + private fun suspendTransaction(t: Transaction) { + transactionManager.suspendTransaction(t.transactionId) + } + + private fun resumeTransaction(t: Transaction) { + transactionManager.resumeTransaction(t.transactionId) + } } |