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