gnunet-svn
[Top][All Lists]
Advanced

[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.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]