diff --git a/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/MainActivity.kt b/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/MainActivity.kt index 264533ba0e95c196dbf7c45e67d54f99431fe6d0..73c0536d1a1abc5d4b91a01c6c8bec8261d21cf9 100644 --- a/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/MainActivity.kt +++ b/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/MainActivity.kt @@ -6,6 +6,7 @@ import android.content.Intent import android.content.pm.ActivityInfo import android.os.Build import android.os.Bundle +import android.util.Log import android.widget.Toast import androidx.annotation.RequiresApi import androidx.appcompat.app.AppCompatActivity @@ -22,10 +23,9 @@ import java.util.Date @AndroidEntryPoint class MainActivity : AppCompatActivity() { - private lateinit var db : TransactionViewModel + private lateinit var transactionViewModel : TransactionViewModel private lateinit var locationViewModel: LocationViewModel - private lateinit var navigationViewModel : NavigationViewModel - + private lateinit var navigationViewModel: NavigationViewModel private lateinit var locationAdapter: LocationAdapter private lateinit var cameraAdapter: CameraAdapter @@ -48,19 +48,19 @@ class MainActivity : AppCompatActivity() { //startService(Intent(this, TokenService::class.java)) // Initialize ViewModel - db = ViewModelProvider(this)[TransactionViewModel::class.java] - locationViewModel = ViewModelProvider(this)[LocationViewModel::class.java] navigationViewModel = ViewModelProvider(this)[NavigationViewModel::class.java] - db.getAllDate() - db.getTransactions("all") - db.getCashFlowAndGrowthByMonth(Date()) - db.getStatisticByMonth(Date()) + transactionViewModel = ViewModelProvider(this)[TransactionViewModel::class.java] + locationViewModel = ViewModelProvider(this)[LocationViewModel::class.java] + transactionViewModel.getAllDate() + transactionViewModel.getTransactions("all") + transactionViewModel.getCashFlowAndGrowthByMonth(Date()) + transactionViewModel.getStatisticByMonth(Date()) // Navigation Button Listener binding.ibTransactionBtn.setOnClickListener { - db.getAllDate() - db.getTransactions("all") - db.getCashFlowAndGrowthByMonth(Date()) + transactionViewModel.getAllDate() + transactionViewModel.getTransactions("all") + transactionViewModel.getCashFlowAndGrowthByMonth(Date()) navigationViewModel.navigate("transaction") navController.navigate(R.id.transactionFragment) } @@ -91,6 +91,9 @@ class MainActivity : AppCompatActivity() { binding.ibScanBtn.setImageResource(R.drawable.scan_inactive_ic) binding.ibStatisticsBtn.setImageResource(R.drawable.statistic_inactive_ic) binding.ibSettingsBtn.setImageResource(R.drawable.setting_inactive_ic) + + Log.d("NavViewModel", it) + when (it) { "transaction" -> { binding.ibTransactionBtn.setImageResource(R.drawable.transaction_active_ic) @@ -111,25 +114,29 @@ class MainActivity : AppCompatActivity() { binding.ibSettingsBtn.setImageResource(R.drawable.setting_active_ic) binding.tvHeader.setText(R.string.title_settings) } + "transactionDetail" -> { + binding.ibTransactionBtn.setImageResource(R.drawable.transaction_active_ic) + binding.tvHeader.setText(R.string.title_transaction_detail) + } } } - db.addTransactionStatus.observe(this){ + transactionViewModel.addTransactionStatus.observe(this){ if (it){ - db.getAllDate() - db.getTransactions("all") - db.getCashFlowAndGrowthByMonth(Date()) - db.getStatisticByMonth(Date()) + transactionViewModel.getAllDate() + transactionViewModel.getTransactions("all") + transactionViewModel.getCashFlowAndGrowthByMonth(Date()) + transactionViewModel.getStatisticByMonth(Date()) navController.navigate(R.id.transactionFragment) - db.resetAddTransactionStatus() - db.changeAddStatus(false) + transactionViewModel.resetAddTransactionStatus() + transactionViewModel.changeAddStatus(false) } } - db.cameraStatus.observe(this){ + transactionViewModel.cameraStatus.observe(this){ if (it){ navController.navigate(R.id.transactionForm) - db.changeCameraStatus(false) + transactionViewModel.changeCameraStatus(false) } } @@ -138,8 +145,8 @@ class MainActivity : AppCompatActivity() { @RequiresApi(Build.VERSION_CODES.S) override fun onStart() { super.onStart() - db = ViewModelProvider(this)[TransactionViewModel::class.java] - db.getAllDate() + transactionViewModel = ViewModelProvider(this)[TransactionViewModel::class.java] + transactionViewModel.getAllDate() locationAdapter = LocationAdapter({ this }, locationViewModel) locationAdapter.requestLocationUpdates() @@ -149,7 +156,7 @@ class MainActivity : AppCompatActivity() { override fun onDestroy() { super.onDestroy() - db.removeObserveAllData(this) + transactionViewModel.removeObserveAllData(this) } override fun onActivityResult(requestCode: Int, resultCode: Int, data: Intent?) { diff --git a/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/transaction/TransactionFragment.kt b/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/transaction/TransactionFragment.kt index 8b5c661a453b30f78ec231e7ce71ea070f28a432..772201574255e14ac9de25bf7d68a7126f32f0eb 100644 --- a/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/transaction/TransactionFragment.kt +++ b/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/transaction/TransactionFragment.kt @@ -2,7 +2,6 @@ package com.example.transactionapp.ui.screen.mainmenu.transaction import android.content.pm.ActivityInfo import android.os.Bundle -import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup @@ -10,6 +9,7 @@ import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import androidx.fragment.app.activityViewModels import androidx.lifecycle.Observer +import androidx.lifecycle.ViewModelProvider import androidx.navigation.NavController import androidx.navigation.Navigation import androidx.navigation.fragment.findNavController @@ -17,6 +17,7 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.example.transactionapp.R import com.example.transactionapp.databinding.FragmentTransactionBinding +import com.example.transactionapp.ui.viewmodel.navigation.NavigationViewModel import com.example.transactionapp.utils.changeNominalToIDN import dagger.hilt.android.AndroidEntryPoint import kotlin.math.abs @@ -24,6 +25,7 @@ import kotlin.math.abs @AndroidEntryPoint class TransactionFragment : Fragment() { private val transactionViewModel: TransactionViewModel by activityViewModels() + private lateinit var navigationViewModel : NavigationViewModel private lateinit var navController: NavController override fun onViewCreated(view: View, savedInstanceState: Bundle?) { @@ -41,6 +43,9 @@ class TransactionFragment : Fragment() { // Bind layout using layout binding val binding = FragmentTransactionBinding.inflate(layoutInflater) + // Get ViewModel + navigationViewModel = ViewModelProvider(requireActivity())[NavigationViewModel::class.java] + // Observe transaction list transactionViewModel.dateAll.observe(requireActivity()) { transactionList -> val transactionAdapter = TransactionAdapter(transactionList, this::onTransactionClicked) @@ -71,6 +76,7 @@ class TransactionFragment : Fragment() { transactionViewModel.navigateToTransactionDetail.observe(requireActivity(), Observer { transactionId -> transactionId?.let { this.findNavController().navigate(TransactionFragmentDirections.actionTransactionFragmentToTransactionDetailsFragment(transactionId)) + navigationViewModel.navigate("transactionDetail") transactionViewModel.onTransactionDetailNavigated() } }) diff --git a/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/transactionDetail/TransactionDetailsFragment.kt b/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/transactionDetail/TransactionDetailsFragment.kt index 1bca52714a78975223cc3678a4d8dcd8ab41f3e8..b8565a061332d5682e5b0e8ed86e4856df7f90c4 100644 --- a/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/transactionDetail/TransactionDetailsFragment.kt +++ b/app/src/main/java/com/example/transactionapp/ui/screen/mainmenu/transactionDetail/TransactionDetailsFragment.kt @@ -43,7 +43,6 @@ class TransactionDetailsFragment : Fragment() { // Get an instance of transaction from transaction id argument val transactionId = TransactionDetailsFragmentArgs.fromBundle(requireArguments()).transactionId - Log.i("Args", transactionId.toString()) db.getTransactionById(transactionId) db.transactionById.observe(viewLifecycleOwner) { binding.titleInput.setText(it.title) diff --git a/app/src/main/java/com/example/transactionapp/ui/viewmodel/navigation/NavigationViewModel.kt b/app/src/main/java/com/example/transactionapp/ui/viewmodel/navigation/NavigationViewModel.kt index a3b3cdc58a421fead5be14f6a5bb7a7a4b94cbb4..973cd2502ea40182b8112546f8710b305375767c 100644 --- a/app/src/main/java/com/example/transactionapp/ui/viewmodel/navigation/NavigationViewModel.kt +++ b/app/src/main/java/com/example/transactionapp/ui/viewmodel/navigation/NavigationViewModel.kt @@ -1,13 +1,15 @@ package com.example.transactionapp.ui.viewmodel.navigation import android.util.Log +import androidx.annotation.StringRes import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel +import com.example.transactionapp.R class NavigationViewModel : ViewModel() { - // fragmentName + // Fragment name private val _fragmentName = MutableLiveData<String>("transaction") val fragmentName : LiveData<String> get() = _fragmentName @@ -15,5 +17,6 @@ class NavigationViewModel : ViewModel() { // Navigate fun navigate(value: String) { _fragmentName.value = value + Log.d("NavViewModel", _fragmentName.value!!) } } \ No newline at end of file