summaryrefslogtreecommitdiff
path: root/app/src/main/java/net/taler/merchantpos/ProcessPayment.kt
diff options
context:
space:
mode:
Diffstat (limited to 'app/src/main/java/net/taler/merchantpos/ProcessPayment.kt')
-rw-r--r--app/src/main/java/net/taler/merchantpos/ProcessPayment.kt60
1 files changed, 56 insertions, 4 deletions
diff --git a/app/src/main/java/net/taler/merchantpos/ProcessPayment.kt b/app/src/main/java/net/taler/merchantpos/ProcessPayment.kt
index 81c1901..c98a3e4 100644
--- a/app/src/main/java/net/taler/merchantpos/ProcessPayment.kt
+++ b/app/src/main/java/net/taler/merchantpos/ProcessPayment.kt
@@ -1,12 +1,28 @@
package net.taler.merchantpos
import android.content.Context
+import android.graphics.Bitmap
+import android.graphics.Color
import android.net.Uri
import android.os.Bundle
import androidx.fragment.app.Fragment
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
+import com.google.zxing.BarcodeFormat
+import com.google.zxing.common.BitMatrix
+import com.google.zxing.qrcode.QRCodeWriter
+import android.opengl.ETC1.getWidth
+import android.opengl.ETC1.getHeight
+import android.widget.Button
+import android.widget.ImageView
+import android.widget.TextView
+import androidx.activity.OnBackPressedCallback
+import androidx.activity.addCallback
+import androidx.lifecycle.ViewModelProviders
+import androidx.navigation.findNavController
+import androidx.navigation.fragment.findNavController
+import com.google.android.material.snackbar.Snackbar
// TODO: Rename parameter arguments, choose names that match
@@ -29,12 +45,19 @@ class ProcessPayment : Fragment() {
private var param2: String? = null
private var listener: OnFragmentInteractionListener? = null
+ private lateinit var model: PosTerminalViewModel
+
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
arguments?.let {
param1 = it.getString(ARG_PARAM1)
param2 = it.getString(ARG_PARAM2)
}
+
+ model = activity?.run {
+ ViewModelProviders.of(this)[PosTerminalViewModel::class.java]
+ } ?: throw Exception("Invalid Activity")
+
}
override fun onCreateView(
@@ -42,12 +65,41 @@ class ProcessPayment : Fragment() {
savedInstanceState: Bundle?
): View? {
// Inflate the layout for this fragment
- return inflater.inflate(R.layout.fragment_process_payment, container, false)
+ val view = inflater.inflate(R.layout.fragment_process_payment, container, false)
+ val img = view.findViewById<ImageView>(R.id.qrcode)
+ val myBitmap = makeQrCode(model.activeContractUri!!)
+ img.setImageBitmap(myBitmap)
+ val cancelPaymentButton = view.findViewById<Button>(R.id.button_cancel_payment)
+ cancelPaymentButton.setOnClickListener {
+ onPaymentCancel()
+ }
+ val textViewAmount = view.findViewById<TextView>(R.id.text_view_amount)
+ textViewAmount.text = model.activeAmountPretty()
+ val textViewOrderId = view.findViewById<TextView>(R.id.text_view_order_reference)
+ textViewOrderId.text = "Order Reference: " + model.activeOrderId
+ return view
}
- // TODO: Rename method, update argument and hook method into UI event
- fun onButtonPressed(uri: Uri) {
- listener?.onFragmentInteraction(uri)
+ private fun onPaymentCancel() {
+ val navController = findNavController()
+ navController.popBackStack()
+
+ val mySnackbar = Snackbar.make(view!!, "Payment Canceled", Snackbar.LENGTH_SHORT)
+ mySnackbar.show()
+ }
+
+ fun makeQrCode(text: String): Bitmap {
+ val qrCodeWriter: QRCodeWriter = QRCodeWriter()
+ val bitMatrix: BitMatrix = qrCodeWriter.encode(text, BarcodeFormat.QR_CODE, 256, 256)
+ val height = bitMatrix.height
+ val width = bitMatrix.width
+ val bmp = Bitmap.createBitmap(width, height, Bitmap.Config.RGB_565)
+ for (x in 0 until width) {
+ for (y in 0 until height) {
+ bmp.setPixel(x, y, if (bitMatrix.get(x, y)) Color.BLACK else Color.WHITE)
+ }
+ }
+ return bmp;
}
override fun onAttach(context: Context) {