[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-merchant-terminal-android] 05/19: Allow user to undo restarting t
From: |
gnunet |
Subject: |
[taler-merchant-terminal-android] 05/19: Allow user to undo restarting the order |
Date: |
Fri, 21 Feb 2020 18:59:58 +0100 |
This is an automated email from the git hooks/post-receive script.
torsten-grote pushed a commit to branch master
in repository merchant-terminal-android.
commit 1f5c20e394ae9223aeb523817934af9226c52537
Author: Torsten Grote <address@hidden>
AuthorDate: Fri Jan 31 14:28:23 2020 -0300
Allow user to undo restarting the order
---
.../net/taler/merchantpos/order/OrderFragment.kt | 15 +++++++++++++--
.../java/net/taler/merchantpos/order/OrderManager.kt | 20 ++++++++++++++++++--
app/src/main/res/values/strings.xml | 1 +
3 files changed, 32 insertions(+), 4 deletions(-)
diff --git a/app/src/main/java/net/taler/merchantpos/order/OrderFragment.kt
b/app/src/main/java/net/taler/merchantpos/order/OrderFragment.kt
index 1cb89ba..936caa9 100644
--- a/app/src/main/java/net/taler/merchantpos/order/OrderFragment.kt
+++ b/app/src/main/java/net/taler/merchantpos/order/OrderFragment.kt
@@ -6,11 +6,14 @@ import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
+import androidx.lifecycle.Observer
import androidx.navigation.NavController
import androidx.navigation.Navigation.findNavController
import kotlinx.android.synthetic.main.fragment_order.*
import net.taler.merchantpos.MainViewModel
import net.taler.merchantpos.R
+import net.taler.merchantpos.order.RestartState.ENABLED
+import net.taler.merchantpos.order.RestartState.UNDO
class OrderFragment : Fragment() {
@@ -26,8 +29,16 @@ class OrderFragment : Fragment() {
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- // TODO build undo-feature that allows to undo a restart and bring
back old order
- restartButton.setOnClickListener { orderManager.restart() }
+ restartButton.setOnClickListener { orderManager.restartOrUndo() }
+ orderManager.restartState.observe(viewLifecycleOwner, Observer { state
->
+ if (state == UNDO) {
+ restartButton.setText(R.string.order_undo)
+ restartButton.isEnabled = true
+ } else {
+ restartButton.setText(R.string.order_restart)
+ restartButton.isEnabled = state == ENABLED
+ }
+ })
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
diff --git a/app/src/main/java/net/taler/merchantpos/order/OrderManager.kt
b/app/src/main/java/net/taler/merchantpos/order/OrderManager.kt
index e7928c7..56dd95e 100644
--- a/app/src/main/java/net/taler/merchantpos/order/OrderManager.kt
+++ b/app/src/main/java/net/taler/merchantpos/order/OrderManager.kt
@@ -8,8 +8,11 @@ import androidx.lifecycle.Transformations.map
import com.fasterxml.jackson.core.type.TypeReference
import com.fasterxml.jackson.databind.ObjectMapper
import net.taler.merchantpos.config.ConfigurationReceiver
+import net.taler.merchantpos.order.RestartState.*
import org.json.JSONObject
+enum class RestartState { ENABLED, DISABLED, UNDO }
+
class OrderManager(private val mapper: ObjectMapper) : ConfigurationReceiver {
companion object {
@@ -28,6 +31,10 @@ class OrderManager(private val mapper: ObjectMapper) :
ConfigurationReceiver {
private val mCategories = MutableLiveData<List<Category>>()
internal val categories: LiveData<List<Category>> = mCategories
+ private var undoOrder: HashMap<Product, Int>? = null
+ private val mRestartState = MutableLiveData<RestartState>().apply { value
= DISABLED }
+ internal val restartState: LiveData<RestartState> = mRestartState
+
override suspend fun onConfigurationReceived(json: JSONObject): Boolean {
// parse categories
val categoriesStr = json.getJSONArray("categories").toString()
@@ -91,11 +98,20 @@ class OrderManager(private val mapper: ObjectMapper) :
ConfigurationReceiver {
val quantity = map[product] ?: 0
map[product] = quantity + 1
mOrder.value = map
+ mRestartState.value = ENABLED
}
@UiThread
- internal fun restart() {
- mOrder.value = HashMap()
+ internal fun restartOrUndo() {
+ if (restartState.value == UNDO) {
+ mOrder.value = undoOrder
+ mRestartState.value = ENABLED
+ undoOrder = null
+ } else {
+ undoOrder = mOrder.value
+ mOrder.value = HashMap()
+ mRestartState.value = UNDO
+ }
}
private fun getTotal(map: HashMap<Product, Int>): Double {
diff --git a/app/src/main/res/values/strings.xml
b/app/src/main/res/values/strings.xml
index dbfa175..f179915 100644
--- a/app/src/main/res/values/strings.xml
+++ b/app/src/main/res/values/strings.xml
@@ -19,6 +19,7 @@
<string name="order_total">Total: %1$.2f</string>
<string name="order_restart">Restart</string>
+ <string name="order_undo">Undo</string>
<string name="button_reconfigure">Reconfigure</string>
<string name="button_history">History</string>
<string name="button_logout">Logout</string>
--
To stop receiving notification emails like this one, please contact
address@hidden.
- [taler-merchant-terminal-android] branch master updated (f463d1b -> 39af919), gnunet, 2020/02/21
- [taler-merchant-terminal-android] 03/19: Fix crash when loading history, gnunet, 2020/02/21
- [taler-merchant-terminal-android] 01/19: Upgrade libraries to latest stable versions, gnunet, 2020/02/21
- [taler-merchant-terminal-android] 05/19: Allow user to undo restarting the order,
gnunet <=
- [taler-merchant-terminal-android] 07/19: Add ordered products to order's contract terms, gnunet, 2020/02/21
- [taler-merchant-terminal-android] 08/19: Use actual taler icon for the app, gnunet, 2020/02/21
- [taler-merchant-terminal-android] 09/19: Factor out NFC code from MainActivity, gnunet, 2020/02/21
- [taler-merchant-terminal-android] 06/19: Create payments directly from the order, gnunet, 2020/02/21
- [taler-merchant-terminal-android] 04/19: Fetch merchant config from central configuration JSON, gnunet, 2020/02/21
- [taler-merchant-terminal-android] 02/19: Add screen to process an order, gnunet, 2020/02/21
- [taler-merchant-terminal-android] 18/19: Don't talk about NFC if it is not supported, gnunet, 2020/02/21
- [taler-merchant-terminal-android] 14/19: Use product categories for order summary, gnunet, 2020/02/21
- [taler-merchant-terminal-android] 11/19: Allow user to decide if they want to save password, add FORGET option, gnunet, 2020/02/21
- [taler-merchant-terminal-android] 13/19: Make NFC and QR code re-useable in another app, gnunet, 2020/02/21