[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[taler-merchant-terminal-android] 08/08: Scroll to last added product an
From: |
gnunet |
Subject: |
[taler-merchant-terminal-android] 08/08: Scroll to last added product and select it |
Date: |
Tue, 25 Feb 2020 17:07:47 +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 4aa85912e86b8fae15a3ac1d78722c42059d667b
Author: Torsten Grote <address@hidden>
AuthorDate: Tue Feb 25 12:42:13 2020 -0300
Scroll to last added product and select it
---
.../net/taler/merchantpos/order/OrderManager.kt | 4 +++
.../taler/merchantpos/order/OrderStateFragment.kt | 31 ++++++++++++++++------
2 files changed, 27 insertions(+), 8 deletions(-)
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 d7db048..60f1e4a 100644
--- a/app/src/main/java/net/taler/merchantpos/order/OrderManager.kt
+++ b/app/src/main/java/net/taler/merchantpos/order/OrderManager.kt
@@ -43,6 +43,9 @@ class OrderManager(private val mapper: ObjectMapper) :
ConfigurationReceiver {
private val mSelectedOrderLine = MutableLiveData<ConfigProduct>()
+ internal var lastAddedProduct: ConfigProduct? = null
+ private set
+
internal val modifyOrderAllowed =
CombinedLiveData(restartState, mSelectedOrderLine) { restartState,
selectedOrderLine ->
restartState != DISABLED && selectedOrderLine != null
@@ -113,6 +116,7 @@ class OrderManager(private val mapper: ObjectMapper) :
ConfigurationReceiver {
@UiThread
internal fun addProduct(product: ConfigProduct) {
+ lastAddedProduct = product
val order = mOrder.value ?: newOrder
mOrder.value = order + product
mRestartState.value = ENABLED
diff --git
a/app/src/main/java/net/taler/merchantpos/order/OrderStateFragment.kt
b/app/src/main/java/net/taler/merchantpos/order/OrderStateFragment.kt
index 098692c..f016795 100644
--- a/app/src/main/java/net/taler/merchantpos/order/OrderStateFragment.kt
+++ b/app/src/main/java/net/taler/merchantpos/order/OrderStateFragment.kt
@@ -70,14 +70,7 @@ class OrderStateFragment : Fragment() {
this.tracker = tracker
orderManager.order.observe(viewLifecycleOwner, Observer { order ->
- adapter.setItems(order.products) {
- // workaround for bug: SelectionObserver doesn't update when
removing selected item
- if (tracker.hasSelection()) {
- val key = tracker.selection.first()
- val product = order.products.find { it.id == key }
- if (product == null) tracker.clearSelection()
- }
- }
+ onOrderChanged(order, tracker)
})
orderManager.orderTotal.observe(viewLifecycleOwner, Observer {
orderTotal ->
if (orderTotal == 0.0) {
@@ -96,6 +89,24 @@ class OrderStateFragment : Fragment() {
tracker?.onSaveInstanceState(outState)
}
+ private fun onOrderChanged(order: Order, tracker:
SelectionTracker<String>) {
+ adapter.setItems(order.products) {
+ orderManager.lastAddedProduct?.let {
+ val position = adapter.findPosition(it)
+ if (position >= 0) {
+ orderList.scrollToPosition(position)
+ orderList.post { this.tracker?.select(it.id) }
+ }
+ }
+ // workaround for bug: SelectionObserver doesn't update when
removing selected item
+ if (tracker.hasSelection()) {
+ val key = tracker.selection.first()
+ val product = order.products.find { it.id == key }
+ if (product == null) tracker.clearSelection()
+ }
+ }
+ }
+
}
private class OrderAdapter : Adapter<OrderViewHolder>() {
@@ -137,6 +148,10 @@ private class OrderAdapter : Adapter<OrderViewHolder>() {
return differ.currentList.find { it.id == key }
}
+ fun findPosition(product: ConfigProduct): Int {
+ return differ.currentList.indexOf(product)
+ }
+
private inner class OrderViewHolder(private val v: View) : ViewHolder(v) {
private val quantity: TextView = v.findViewById(R.id.quantity)
private val name: TextView = v.findViewById(R.id.name)
--
To stop receiving notification emails like this one, please contact
address@hidden.
- [taler-merchant-terminal-android] branch master updated (a78fac0 -> 4aa8591), gnunet, 2020/02/25
- [taler-merchant-terminal-android] 01/08: Add CI file for automatic nightly repo, gnunet, 2020/02/25
- [taler-merchant-terminal-android] 07/08: Make fragment titles translatable, gnunet, 2020/02/25
- [taler-merchant-terminal-android] 05/08: Redesign payment successful screen, gnunet, 2020/02/25
- [taler-merchant-terminal-android] 02/08: Improve config fragment: remove currency and move fetch button up, gnunet, 2020/02/25
- [taler-merchant-terminal-android] 06/08: Improve display of order total, gnunet, 2020/02/25
- [taler-merchant-terminal-android] 08/08: Scroll to last added product and select it,
gnunet <=
- [taler-merchant-terminal-android] 04/08: Show snackbars at the top of the order, not at the bottom, gnunet, 2020/02/25
- [taler-merchant-terminal-android] 03/08: Redo payment fragment and upgrade gradle/kotlin, gnunet, 2020/02/25