From c20a3be31a2d2eb12d51d9547fda0a9ccf7b7539 Mon Sep 17 00:00:00 2001
From: Chiquita Ahsanunnisa <16521248@mahasiswa.itb.ac.id>
Date: Sun, 31 Mar 2024 14:14:29 +0700
Subject: [PATCH] feat: editable location

---
 .../java/com/example/bondoman/BondomanApp.kt    |  1 +
 .../addtransaction/AddTransactionFragment.kt    | 17 ++++++++++++-----
 .../ui/hub/transaction/TransactionAdapter.kt    |  4 +++-
 3 files changed, 16 insertions(+), 6 deletions(-)

diff --git a/app/src/main/java/com/example/bondoman/BondomanApp.kt b/app/src/main/java/com/example/bondoman/BondomanApp.kt
index 035197a..d4dfb46 100644
--- a/app/src/main/java/com/example/bondoman/BondomanApp.kt
+++ b/app/src/main/java/com/example/bondoman/BondomanApp.kt
@@ -13,5 +13,6 @@ class BondomanApp : Application() {
     // Global statics should be here
     companion object{
         const val ACTION_RANDOM_TRANSACTION = "com.example.bondoman.ACTION_RANDOM_TRANSACTION"
+        const val LOCATION_MARK: Double = 200.0
     }
 }
\ No newline at end of file
diff --git a/app/src/main/java/com/example/bondoman/ui/hub/addtransaction/AddTransactionFragment.kt b/app/src/main/java/com/example/bondoman/ui/hub/addtransaction/AddTransactionFragment.kt
index c5c7a22..35f4ef0 100644
--- a/app/src/main/java/com/example/bondoman/ui/hub/addtransaction/AddTransactionFragment.kt
+++ b/app/src/main/java/com/example/bondoman/ui/hub/addtransaction/AddTransactionFragment.kt
@@ -17,6 +17,7 @@ import android.widget.Toast
 import androidx.core.app.ActivityCompat
 import androidx.core.content.ContextCompat
 import androidx.fragment.app.Fragment
+import com.example.bondoman.BondomanApp
 import com.example.bondoman.R
 import com.example.bondoman.database.entity.TransactionEntity
 import com.example.bondoman.databinding.FragmentAddTransactionBinding
@@ -91,12 +92,18 @@ class AddTransactionFragment : Fragment() {
         val titleInitial = arguments?.getString(KEY_TITLE) ?: ""
         val amountInitial = arguments?.getInt(KEY_AMOUNT, 0) ?: 0
         val categoryInitial = arguments?.getInt(KEY_CATEGORY, 0) ?: 0
-        val locationInitial = arguments?.getString(KEY_LOCATION) ?: ""
+        var latInitial = arguments?.getDouble(KEY_LATITUDE)
+        var lngInitial = arguments?.getDouble(KEY_LONGITUDE)
+        if (latInitial == BondomanApp.LOCATION_MARK || lngInitial == BondomanApp.LOCATION_MARK) {
+            latInitial = null
+            lngInitial = null
+        }
+        locationViewModel.setLoc(latInitial, lngInitial)
 
         binding.titleInput.setText(titleInitial)
         binding.amountInput.setText(amountInitial.toString())
         binding.categoryInput.setSelection(categoryInitial, true)
-        binding.locationText.text = locationInitial
+        // location initial already set by observer
 
         // Initialize category dropdown color
         (binding.categoryInput.selectedView as TextView).setTextColor(ContextCompat.getColor(requireContext(), R.color.black))
@@ -107,8 +114,6 @@ class AddTransactionFragment : Fragment() {
 
         if(actionCode == ACTION_EDIT) {
             binding.categoryInput.isEnabled = false
-            locateButton.isEnabled = false
-            deleteButton.isEnabled = false
         }
 
         fusedLocationClient = LocationServices.getFusedLocationProviderClient(requireContext())
@@ -271,7 +276,9 @@ class AddTransactionFragment : Fragment() {
         const val KEY_TITLE = "Title"
         const val KEY_AMOUNT = "Amount"
         const val KEY_CATEGORY = "Category"
-        const val KEY_LOCATION = "Location"
+//        const val KEY_LOCATION = "Location"
+        const val KEY_LATITUDE = "Latitude"
+        const val KEY_LONGITUDE = "Longitude"
 
         const val KEY_ACTION = "Action"
         const val KEY_TRANSACTION_ID = "TransactionId"
diff --git a/app/src/main/java/com/example/bondoman/ui/hub/transaction/TransactionAdapter.kt b/app/src/main/java/com/example/bondoman/ui/hub/transaction/TransactionAdapter.kt
index 1836697..ea03a9b 100644
--- a/app/src/main/java/com/example/bondoman/ui/hub/transaction/TransactionAdapter.kt
+++ b/app/src/main/java/com/example/bondoman/ui/hub/transaction/TransactionAdapter.kt
@@ -13,6 +13,7 @@ import android.view.ViewGroup
 import androidx.fragment.app.DialogFragment
 import androidx.fragment.app.FragmentManager
 import androidx.recyclerview.widget.RecyclerView
+import com.example.bondoman.BondomanApp
 import com.example.bondoman.R
 import com.example.bondoman.database.entity.TransactionEntity
 import com.example.bondoman.databinding.ItemTransactionBinding
@@ -98,7 +99,8 @@ class TransactionAdapter(
                 bundle.putString(AddTransactionFragment.KEY_TITLE, tsList[position].title)
                 bundle.putInt(AddTransactionFragment.KEY_AMOUNT, tsList[position].amount)
                 bundle.putInt(AddTransactionFragment.KEY_CATEGORY, context.resources.getStringArray(R.array.category_choices).indexOf(tsList[position].category))
-                bundle.putString(AddTransactionFragment.KEY_LOCATION, location)
+                bundle.putDouble(AddTransactionFragment.KEY_LATITUDE, tsList[position].latitude ?: BondomanApp.LOCATION_MARK)
+                bundle.putDouble(AddTransactionFragment.KEY_LONGITUDE, tsList[position].longitude ?: BondomanApp.LOCATION_MARK)
                 bundle.putString(AddTransactionFragment.KEY_TIMESTAMP, tsList[position].timestamp)
 
                 val transaction = fragmentManager.beginTransaction()
-- 
GitLab