diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 71e257f2475e2f340cddb896c7e0cd6230854123..4374a8346c6ba60dcd83eb81baec70695568b3ec 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -21,14 +21,14 @@ <activity android:name=".MainActivity" android:exported="true"> - </activity> - <activity - android:name=".ui.login.LoginActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> + </activity> + <activity + android:name=".ui.login.LoginActivity" android:exported="true"> <intent-filter> <action android:name="android.intent.action.SEND" /> <category android:name="android.intent.category.DEFAULT" /> diff --git a/app/src/main/java/com/example/abe/MainActivity.kt b/app/src/main/java/com/example/abe/MainActivity.kt index 48a696247c1817c6b804041ebe052b323339bcbf..05ec1ca42b5db60317a083ab3c9dfc933c31b0ff 100644 --- a/app/src/main/java/com/example/abe/MainActivity.kt +++ b/app/src/main/java/com/example/abe/MainActivity.kt @@ -2,17 +2,21 @@ package com.example.abe import android.app.Activity import android.content.BroadcastReceiver +import android.content.Context import android.content.Intent import android.content.IntentFilter import android.os.Bundle +import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.viewModels import androidx.appcompat.app.AppCompatActivity import androidx.fragment.app.DialogFragment import androidx.lifecycle.lifecycleScope import androidx.localbroadcastmanager.content.LocalBroadcastManager +import androidx.navigation.NavController import androidx.navigation.findNavController import androidx.navigation.ui.AppBarConfiguration +import androidx.navigation.ui.navigateUp import androidx.navigation.ui.setupActionBarWithNavController import androidx.navigation.ui.setupWithNavController import com.example.abe.databinding.ActivityMainBinding @@ -25,6 +29,8 @@ import com.google.android.material.bottomnavigation.BottomNavigationView import kotlinx.coroutines.launch class MainActivity : AppCompatActivity(), ExportAlertDialogFragment.ExportAlertDialogListener, FragmentListener, TransactionFragment.ItemClickListener { + private lateinit var appBarConfiguration: AppBarConfiguration + private lateinit var navController: NavController private lateinit var binding: ActivityMainBinding private val viewModel: MainActivityViewModel by viewModels { @@ -32,7 +38,19 @@ class MainActivity : AppCompatActivity(), ExportAlertDialogFragment.ExportAlertD } private val filter = IntentFilter().apply { addAction("RANDOMIZE_TRANSACTION") } - private val br: BroadcastReceiver = TransactionBroadcastReceiver() + private val br = object : BroadcastReceiver() { + override fun onReceive(context: Context, intent: Intent) { + when(intent.action) { + "RANDOMIZE_TRANSACTION" -> { + val randomAmount = intent.getIntExtra("random_amount", 0) + val bundle = Bundle().apply { + putInt("random_amount", randomAmount) + } + navController.navigate(R.id.action_navigation_transactions_to_navigation_form_transaction, bundle) + } + } + } + } override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) @@ -42,9 +60,9 @@ class MainActivity : AppCompatActivity(), ExportAlertDialogFragment.ExportAlertD val navView: BottomNavigationView = binding.navView - val navController = findNavController(R.id.nav_host_fragment_activity_main) + navController = findNavController(R.id.nav_host_fragment_activity_main) - val appBarConfiguration = AppBarConfiguration( + appBarConfiguration = AppBarConfiguration( setOf( R.id.navigation_transactions ) @@ -56,7 +74,6 @@ class MainActivity : AppCompatActivity(), ExportAlertDialogFragment.ExportAlertD } override fun onIntentReceived(action: String, info: String?) { - val navController = findNavController(R.id.nav_host_fragment_activity_main) when(action) { "OPEN_FORM" -> { navController.navigate(R.id.action_navigation_transactions_to_navigation_form_transaction) @@ -65,7 +82,6 @@ class MainActivity : AppCompatActivity(), ExportAlertDialogFragment.ExportAlertD } override fun onItemClicked(id: Int) { - val navController = findNavController(R.id.nav_host_fragment_activity_main) val bundle = Bundle() bundle.putBoolean("is-update", true) bundle.putInt("idx-id", id) @@ -139,4 +155,9 @@ class MainActivity : AppCompatActivity(), ExportAlertDialogFragment.ExportAlertD super.onDestroy() LocalBroadcastManager.getInstance(this).registerReceiver(br, filter) } + + override fun onSupportNavigateUp(): Boolean { + return super.onSupportNavigateUp() || navController.navigateUp(appBarConfiguration) + } + } diff --git a/app/src/main/java/com/example/abe/TransactionBroadcastReceiver.kt b/app/src/main/java/com/example/abe/TransactionBroadcastReceiver.kt deleted file mode 100644 index 6a03bd6805856ee620e351778b83f6612a0402ea..0000000000000000000000000000000000000000 --- a/app/src/main/java/com/example/abe/TransactionBroadcastReceiver.kt +++ /dev/null @@ -1,23 +0,0 @@ -package com.example.abe - -import android.content.BroadcastReceiver -import android.content.Context -import android.content.Intent -import com.example.abe.ui.form_transaction.FormTransaction - - -private const val TAG = "TransactionBroadcastReceiver" - -class TransactionBroadcastReceiver : BroadcastReceiver() { - override fun onReceive(context: Context, intent: Intent) { - when(intent.action) { - "RANDOMIZE_TRANSACTION" -> { - val newIntent = Intent(context, FormTransaction::class.java) - newIntent.putExtra("random_amount", intent.getIntExtra("random_amount", 10000)) - - newIntent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK) - context.startActivity(newIntent) - } - } - } -} \ No newline at end of file diff --git a/app/src/main/java/com/example/abe/ui/form_transaction/FormTransaction.kt b/app/src/main/java/com/example/abe/ui/form_transaction/FormTransaction.kt index b90c4a8c617aac29ca8b36163a887b77e739ea47..d22f32ee28399cf6cd8acb10692ff4cc8c50db2c 100644 --- a/app/src/main/java/com/example/abe/ui/form_transaction/FormTransaction.kt +++ b/app/src/main/java/com/example/abe/ui/form_transaction/FormTransaction.kt @@ -43,7 +43,7 @@ class FormTransaction : Fragment() { FormTransactionViewModelFactory((activity?.application as ABEApplication).repository) } - private lateinit var user:String + private lateinit var user: String private var id: Int? = null @@ -59,7 +59,8 @@ class FormTransaction : Fragment() { binding.lifecycleOwner = this viewModel.amountNumber.observe(viewLifecycleOwner, {}) - fusedLocationProviderClient = LocationServices.getFusedLocationProviderClient(requireActivity()) + fusedLocationProviderClient = + LocationServices.getFusedLocationProviderClient(requireActivity()) if (requireActivity().intent.hasExtra("random_amount")) { viewModel.setRandomAmount(requireActivity().intent.getIntExtra("random_amount", 10000)) @@ -87,13 +88,21 @@ class FormTransaction : Fragment() { getLocation() - val sharedPref = requireActivity().getSharedPreferences(getString(R.string.preference_file_key), Context.MODE_PRIVATE) + val sharedPref = requireActivity().getSharedPreferences( + getString(R.string.preference_file_key), + Context.MODE_PRIVATE + ) user = sharedPref.getString("user", "").toString() if (arguments != null) { val args = Bundle(arguments) - val trxId = args.getInt("idx-id") - displayTrx(trxId) + if (args.containsKey("idx-id")) { + val trxId = args.getInt("idx-id") + displayTrx(trxId) + } else if (args.containsKey("random_amount")) { + viewModel.setRandomAmount(args.getInt("random_amount")) + binding.btnDelete.visibility = View.GONE + } } else { binding.btnDelete.visibility = View.GONE } @@ -161,8 +170,7 @@ class FormTransaction : Fragment() { ) { if (id != null) { viewModel.updateTransaction(id!!) - } - else { + } else { viewModel.insertTransaction(user) } findNavController().navigateUp() @@ -172,7 +180,7 @@ class FormTransaction : Fragment() { private fun deleteButtonListener() { binding.btnDelete.setOnClickListener { - id?.let { viewModel.deleteTransaction(id!!)} + id?.let { viewModel.deleteTransaction(id!!) } findNavController().navigateUp() } } @@ -249,7 +257,8 @@ class FormTransaction : Fragment() { } } } else { - Toast.makeText(requireActivity(), "Please turn on location", Toast.LENGTH_LONG).show() + Toast.makeText(requireActivity(), "Please turn on location", Toast.LENGTH_LONG) + .show() val intent = Intent(Settings.ACTION_LOCATION_SOURCE_SETTINGS) startActivity(intent) } diff --git a/app/src/main/java/com/example/abe/ui/transactions/TransactionFragment.kt b/app/src/main/java/com/example/abe/ui/transactions/TransactionFragment.kt index b5c11e1333a6d83f8e03fbfd827c5209b1719949..9f9b8eb63407d44195b0fb75ca7353e4511dfe80 100644 --- a/app/src/main/java/com/example/abe/ui/transactions/TransactionFragment.kt +++ b/app/src/main/java/com/example/abe/ui/transactions/TransactionFragment.kt @@ -13,7 +13,6 @@ import androidx.recyclerview.widget.LinearLayoutManager import com.example.abe.ABEApplication import com.example.abe.databinding.FragmentTransactionsBinding import com.example.abe.types.FragmentListener -import com.example.abe.ui.form_transaction.FormTransaction class TransactionFragment : Fragment() {