From 3b6e3f82b57e6d2ba47f61870c9dc1efeb302e67 Mon Sep 17 00:00:00 2001 From: arieljovananda88 <jovanandaa@gmail.com> Date: Thu, 4 Apr 2024 02:03:12 +0700 Subject: [PATCH] feat: add scan results --- .../java/com/example/bondoman/MainActivity.kt | 8 +++- .../example/bondoman/ui/scan/ScanFragment.kt | 41 +++++++++++++++++-- 2 files changed, 45 insertions(+), 4 deletions(-) diff --git a/app/src/main/java/com/example/bondoman/MainActivity.kt b/app/src/main/java/com/example/bondoman/MainActivity.kt index ba0141b..c4a3ac7 100644 --- a/app/src/main/java/com/example/bondoman/MainActivity.kt +++ b/app/src/main/java/com/example/bondoman/MainActivity.kt @@ -39,6 +39,8 @@ class MainActivity : AppCompatActivity() { private lateinit var binding: ActivityMainBinding + private val handler = Handler() + private val db by lazy { BondomanDatabase.getDatabase(applicationContext) } @@ -116,7 +118,6 @@ class MainActivity : AppCompatActivity() { private fun startBackgroundWorker() { // Create a handler - val handler = Handler() // Define a runnable task to be executed val runnable = object : Runnable { @@ -188,4 +189,9 @@ class MainActivity : AppCompatActivity() { setTitle(headerTitle) fragmentTransaction.commit() } + + override fun onDestroy() { + super.onDestroy() + handler.removeCallbacksAndMessages(null) + } } \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoman/ui/scan/ScanFragment.kt b/app/src/main/java/com/example/bondoman/ui/scan/ScanFragment.kt index fd29788..6880581 100644 --- a/app/src/main/java/com/example/bondoman/ui/scan/ScanFragment.kt +++ b/app/src/main/java/com/example/bondoman/ui/scan/ScanFragment.kt @@ -19,6 +19,7 @@ import java.util.concurrent.Executors import android.content.Context import android.content.Intent import android.graphics.BitmapFactory +import android.location.Location import android.provider.MediaStore import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts @@ -29,10 +30,14 @@ import android.util.Log import android.widget.ImageView import androidx.camera.core.ImageCaptureException import androidx.camera.core.ImageProxy +import androidx.fragment.app.activityViewModels import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.example.bondoman.models.Item +import com.example.bondoman.models.Transaction +import com.example.bondoman.models.TransactionViewModel import com.example.bondoman.services.RetrofitClient +import com.example.bondoman.services.TransactionEvent import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch @@ -41,6 +46,8 @@ import okhttp3.MediaType import okhttp3.MultipartBody import okhttp3.RequestBody import retrofit2.HttpException +import java.math.BigDecimal +import java.math.RoundingMode class ScanFragment : Fragment() { @@ -51,7 +58,7 @@ class ScanFragment : Fragment() { private lateinit var cameraExecutor: ExecutorService - private lateinit var imageView: ImageView + private val viewModel by activityViewModels<TransactionViewModel>() private val PICK_IMAGE_REQUEST = 1 @@ -234,17 +241,45 @@ class ScanFragment : Fragment() { itemList.layoutManager = LinearLayoutManager(context) itemList.adapter = ItemAdapter(items) + println(items) + // Create and show the dialog val dialog = AlertDialog.Builder(context) .setView(dialogView) - .setPositiveButton("OK") { _, _ -> - // Do something when OK button is clicked, if needed + .setPositiveButton("Add") { _, _ -> + addScanResults(items) + }.setNegativeButton("Cancel") { dialog, _ -> + dialog.dismiss() } .create() dialog.show() } + private fun addScanResults(items: List<Item>?){ + if (items != null) { + for(item in items){ + val judul = item.name + " X" + item.qty + val nominalText = item.price + try{ + var nominalNum = BigDecimal(nominalText) + nominalNum = nominalNum.setScale(2, RoundingMode.HALF_UP) + viewModel._onEvent(TransactionEvent.SetNominal(nominalNum)) + + }catch (e : NumberFormatException){ + e.printStackTrace() + } + val category = Transaction.Category.PEMBELIAN + + + viewModel._onEvent(TransactionEvent.SetJudul(judul)) + viewModel._onEvent(TransactionEvent.SetKategori(category)) + viewModel._onEvent(TransactionEvent.SetLokasi(Transaction.Position(0.0, 0.0))) + viewModel._onEvent(TransactionEvent.SaveTransaction) + } + } + } + override fun onDestroy() { -- GitLab