summaryrefslogtreecommitdiff
path: root/merchant-terminal/src/main/java/net/taler/merchantpos/order
diff options
context:
space:
mode:
Diffstat (limited to 'merchant-terminal/src/main/java/net/taler/merchantpos/order')
-rw-r--r--merchant-terminal/src/main/java/net/taler/merchantpos/order/CategoriesFragment.kt15
-rw-r--r--merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderFragment.kt50
-rw-r--r--merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderStateFragment.kt31
-rw-r--r--merchant-terminal/src/main/java/net/taler/merchantpos/order/ProductsFragment.kt14
4 files changed, 58 insertions, 52 deletions
diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/order/CategoriesFragment.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/order/CategoriesFragment.kt
index 4f8e5af..69e74ce 100644
--- a/merchant-terminal/src/main/java/net/taler/merchantpos/order/CategoriesFragment.kt
+++ b/merchant-terminal/src/main/java/net/taler/merchantpos/order/CategoriesFragment.kt
@@ -23,12 +23,10 @@ import android.view.View.INVISIBLE
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
-import androidx.lifecycle.Observer
import androidx.recyclerview.widget.LinearLayoutManager
-import kotlinx.android.synthetic.main.fragment_categories.*
import net.taler.merchantpos.MainViewModel
-import net.taler.merchantpos.R
import net.taler.merchantpos.config.Category
+import net.taler.merchantpos.databinding.FragmentCategoriesBinding
interface CategorySelectionListener {
fun onCategorySelected(category: Category)
@@ -38,6 +36,8 @@ class CategoriesFragment : Fragment(), CategorySelectionListener {
private val viewModel: MainViewModel by activityViewModels()
private val orderManager by lazy { viewModel.orderManager }
+
+ private lateinit var ui: FragmentCategoriesBinding
private val adapter = CategoryAdapter(this)
override fun onCreateView(
@@ -45,18 +45,19 @@ class CategoriesFragment : Fragment(), CategorySelectionListener {
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
- return inflater.inflate(R.layout.fragment_categories, container, false)
+ ui = FragmentCategoriesBinding.inflate(inflater, container, false)
+ return ui.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- categoriesList.apply {
+ ui.categoriesList.apply {
adapter = this@CategoriesFragment.adapter
layoutManager = LinearLayoutManager(requireContext())
}
- orderManager.categories.observe(viewLifecycleOwner, Observer { categories ->
+ orderManager.categories.observe(viewLifecycleOwner, { categories ->
adapter.setItems(categories)
- progressBar.visibility = INVISIBLE
+ ui.progressBar.visibility = INVISIBLE
})
}
diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderFragment.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderFragment.kt
index 7291a23..1335b65 100644
--- a/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderFragment.kt
+++ b/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderFragment.kt
@@ -22,12 +22,11 @@ import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
-import androidx.lifecycle.Observer
import androidx.transition.TransitionManager.beginDelayedTransition
-import kotlinx.android.synthetic.main.fragment_order.*
import net.taler.common.navigate
import net.taler.merchantpos.MainViewModel
import net.taler.merchantpos.R
+import net.taler.merchantpos.databinding.FragmentOrderBinding
import net.taler.merchantpos.order.OrderFragmentDirections.Companion.actionGlobalConfigFetcher
import net.taler.merchantpos.order.OrderFragmentDirections.Companion.actionOrderToMerchantSettings
import net.taler.merchantpos.order.OrderFragmentDirections.Companion.actionOrderToProcessPayment
@@ -40,17 +39,20 @@ class OrderFragment : Fragment() {
private val orderManager by lazy { viewModel.orderManager }
private val paymentManager by lazy { viewModel.paymentManager }
+ private lateinit var ui: FragmentOrderBinding
+
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
- return inflater.inflate(R.layout.fragment_order, container, false)
+ ui = FragmentOrderBinding.inflate(inflater, container, false)
+ return ui.root
}
override fun onActivityCreated(savedInstanceState: Bundle?) {
super.onActivityCreated(savedInstanceState)
- orderManager.currentOrderId.observe(viewLifecycleOwner, Observer { orderId ->
+ orderManager.currentOrderId.observe(viewLifecycleOwner, { orderId ->
val liveOrder = orderManager.getOrder(orderId)
onOrderSwitched(orderId, liveOrder)
// add a new OrderStateFragment for each order
@@ -72,39 +74,39 @@ class OrderFragment : Fragment() {
private fun onOrderSwitched(orderId: Int, liveOrder: LiveOrder) {
// order title
- liveOrder.order.observe(viewLifecycleOwner, Observer { order ->
+ liveOrder.order.observe(viewLifecycleOwner, { order ->
activity?.title = getString(R.string.order_label_title, order.title)
})
// restart button
- restartButton.setOnClickListener { liveOrder.restartOrUndo() }
- liveOrder.restartState.observe(viewLifecycleOwner, Observer { state ->
+ ui.restartButton.setOnClickListener { liveOrder.restartOrUndo() }
+ liveOrder.restartState.observe(viewLifecycleOwner, { state ->
beginDelayedTransition(view as ViewGroup)
if (state == UNDO) {
- restartButton.setText(R.string.order_undo)
- restartButton.isEnabled = true
- completeButton.isEnabled = false
+ ui.restartButton.setText(R.string.order_undo)
+ ui.restartButton.isEnabled = true
+ ui.completeButton.isEnabled = false
} else {
- restartButton.setText(R.string.order_restart)
- restartButton.isEnabled = state == ENABLED
- completeButton.isEnabled = state == ENABLED
+ ui.restartButton.setText(R.string.order_restart)
+ ui.restartButton.isEnabled = state == ENABLED
+ ui.completeButton.isEnabled = state == ENABLED
}
})
// -1 and +1 buttons
- liveOrder.modifyOrderAllowed.observe(viewLifecycleOwner, Observer { allowed ->
- minusButton.isEnabled = allowed
- plusButton.isEnabled = allowed
+ liveOrder.modifyOrderAllowed.observe(viewLifecycleOwner, { allowed ->
+ ui.minusButton.isEnabled = allowed
+ ui.plusButton.isEnabled = allowed
})
- minusButton.setOnClickListener { liveOrder.decreaseSelectedOrderLine() }
- plusButton.setOnClickListener { liveOrder.increaseSelectedOrderLine() }
+ ui.minusButton.setOnClickListener { liveOrder.decreaseSelectedOrderLine() }
+ ui.plusButton.setOnClickListener { liveOrder.increaseSelectedOrderLine() }
// previous and next button
- prevButton.isEnabled = orderManager.hasPreviousOrder(orderId)
- orderManager.hasNextOrder(orderId).observe(viewLifecycleOwner, Observer { hasNextOrder ->
- nextButton.isEnabled = hasNextOrder
+ ui.prevButton.isEnabled = orderManager.hasPreviousOrder(orderId)
+ orderManager.hasNextOrder(orderId).observe(viewLifecycleOwner, { hasNextOrder ->
+ ui.nextButton.isEnabled = hasNextOrder
})
- prevButton.setOnClickListener { orderManager.previousOrder() }
- nextButton.setOnClickListener { orderManager.nextOrder() }
+ ui.prevButton.setOnClickListener { orderManager.previousOrder() }
+ ui.nextButton.setOnClickListener { orderManager.nextOrder() }
// complete button
- completeButton.setOnClickListener {
+ ui.completeButton.setOnClickListener {
val order = liveOrder.order.value ?: return@setOnClickListener
paymentManager.createPayment(order)
navigate(actionOrderToProcessPayment())
diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderStateFragment.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderStateFragment.kt
index b60f3a5..93c4f97 100644
--- a/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderStateFragment.kt
+++ b/merchant-terminal/src/main/java/net/taler/merchantpos/order/OrderStateFragment.kt
@@ -22,16 +22,15 @@ import android.view.View
import android.view.ViewGroup
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
-import androidx.lifecycle.Observer
import androidx.recyclerview.selection.SelectionPredicates
import androidx.recyclerview.selection.SelectionTracker
import androidx.recyclerview.selection.StorageStrategy
import androidx.recyclerview.widget.LinearLayoutManager
-import kotlinx.android.synthetic.main.fragment_order_state.*
import net.taler.common.fadeIn
import net.taler.common.fadeOut
import net.taler.merchantpos.MainViewModel
import net.taler.merchantpos.R
+import net.taler.merchantpos.databinding.FragmentOrderStateBinding
import net.taler.merchantpos.order.OrderAdapter.OrderLineLookup
class OrderStateFragment : Fragment() {
@@ -39,6 +38,8 @@ class OrderStateFragment : Fragment() {
private val viewModel: MainViewModel by activityViewModels()
private val orderManager by lazy { viewModel.orderManager }
private val liveOrder by lazy { orderManager.getOrder(orderManager.currentOrderId.value!!) }
+
+ private lateinit var ui: FragmentOrderStateBinding
private val adapter = OrderAdapter()
private var tracker: SelectionTracker<String>? = null
@@ -47,18 +48,19 @@ class OrderStateFragment : Fragment() {
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
- return inflater.inflate(R.layout.fragment_order_state, container, false)
+ ui = FragmentOrderStateBinding.inflate(inflater, container, false)
+ return ui.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- orderList.apply {
+ ui.orderList.apply {
adapter = this@OrderStateFragment.adapter
layoutManager = LinearLayoutManager(requireContext())
}
- val detailsLookup = OrderLineLookup(orderList)
+ val detailsLookup = OrderLineLookup(ui.orderList)
val tracker = SelectionTracker.Builder(
"order-selection-id",
- orderList,
+ ui.orderList,
adapter.keyProvider,
detailsLookup,
StorageStrategy.createStringStorage()
@@ -80,16 +82,16 @@ class OrderStateFragment : Fragment() {
liveOrder.selectOrderLine(item)
}
})
- liveOrder.order.observe(viewLifecycleOwner, Observer { order ->
+ liveOrder.order.observe(viewLifecycleOwner, { order ->
onOrderChanged(order, tracker)
})
- liveOrder.orderTotal.observe(viewLifecycleOwner, Observer { orderTotal ->
+ liveOrder.orderTotal.observe(viewLifecycleOwner, { orderTotal ->
if (orderTotal.isZero()) {
- totalView.fadeOut()
- totalView.text = null
+ ui.totalView.fadeOut()
+ ui.totalView.text = null
} else {
- totalView.text = getString(R.string.order_total, orderTotal)
- totalView.fadeIn()
+ ui.totalView.text = getString(R.string.order_total, orderTotal)
+ ui.totalView.fadeIn()
}
})
}
@@ -104,9 +106,8 @@ class OrderStateFragment : Fragment() {
liveOrder.lastAddedProduct?.let {
val position = adapter.findPosition(it)
if (position >= 0) {
- // orderList can be null m(
- orderList?.scrollToPosition(position)
- orderList?.post { this.tracker?.select(it.id) }
+ ui.orderList.scrollToPosition(position)
+ ui.orderList.post { this.tracker?.select(it.id) }
}
}
// workaround for bug: SelectionObserver doesn't update when removing selected item
diff --git a/merchant-terminal/src/main/java/net/taler/merchantpos/order/ProductsFragment.kt b/merchant-terminal/src/main/java/net/taler/merchantpos/order/ProductsFragment.kt
index 00eb509..a3898fd 100644
--- a/merchant-terminal/src/main/java/net/taler/merchantpos/order/ProductsFragment.kt
+++ b/merchant-terminal/src/main/java/net/taler/merchantpos/order/ProductsFragment.kt
@@ -24,14 +24,13 @@ import android.view.ViewGroup
import android.widget.TextView
import androidx.fragment.app.Fragment
import androidx.fragment.app.activityViewModels
-import androidx.lifecycle.Observer
import androidx.recyclerview.widget.GridLayoutManager
import androidx.recyclerview.widget.RecyclerView.Adapter
import androidx.recyclerview.widget.RecyclerView.ViewHolder
-import kotlinx.android.synthetic.main.fragment_products.*
import net.taler.merchantpos.MainViewModel
import net.taler.merchantpos.R
import net.taler.merchantpos.config.ConfigProduct
+import net.taler.merchantpos.databinding.FragmentProductsBinding
import net.taler.merchantpos.order.ProductAdapter.ProductViewHolder
interface ProductSelectionListener {
@@ -44,27 +43,30 @@ class ProductsFragment : Fragment(), ProductSelectionListener {
private val orderManager by lazy { viewModel.orderManager }
private val adapter = ProductAdapter(this)
+ private lateinit var ui: FragmentProductsBinding
+
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
- return inflater.inflate(R.layout.fragment_products, container, false)
+ ui = FragmentProductsBinding.inflate(inflater, container, false)
+ return ui.root
}
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
- productsList.apply {
+ ui.productsList.apply {
adapter = this@ProductsFragment.adapter
layoutManager = GridLayoutManager(requireContext(), 3)
}
- orderManager.products.observe(viewLifecycleOwner, Observer { products ->
+ orderManager.products.observe(viewLifecycleOwner, { products ->
if (products == null) {
adapter.setItems(emptyList())
} else {
adapter.setItems(products)
}
- progressBar.visibility = INVISIBLE
+ ui.progressBar.visibility = INVISIBLE
})
}