diff --git a/app/src/main/java/com/example/bondoman/activities/AddTransaction.kt b/app/src/main/java/com/example/bondoman/activities/AddTransaction.kt index 04d0987d38d27f946bb8367b975a4ad699b08d3a..5b757bf5961186fdb4df2eb2f85a4963e9bd8323 100644 --- a/app/src/main/java/com/example/bondoman/activities/AddTransaction.kt +++ b/app/src/main/java/com/example/bondoman/activities/AddTransaction.kt @@ -1,25 +1,14 @@ package com.example.bondoman.activities import android.app.Activity -import android.app.DatePickerDialog import android.content.Intent -import android.graphics.Color import android.os.Bundle -import android.text.TextUtils -import android.util.Log -import android.view.View import android.widget.ArrayAdapter import android.widget.Button -import android.widget.DatePicker import android.widget.EditText import androidx.appcompat.app.AppCompatActivity import com.example.bondoman.R import android.widget.Spinner -import com.example.bondoman.adapter.RecyclerViewAdapter -import com.example.bondoman.entities.Transaction -import com.example.bondoman.viewModels.TransactionsViewModel -import java.util.Calendar -import java.util.Date class AddTransaction : AppCompatActivity() { @@ -28,7 +17,10 @@ class AddTransaction : AppCompatActivity() { setContentView(R.layout.activity_add_transaksi) supportActionBar?.title = "Add Transaction" + val editTextTitle = findViewById<EditText>(R.id.editTextTitle) val spinnerCategory : Spinner = findViewById(R.id.spinnerCategory) + val editTextAmount = findViewById<EditText>(R.id.editTextAmount) + val editTextLocation = findViewById<EditText>(R.id.editTextLocation) val adapter = ArrayAdapter.createFromResource( this, @@ -36,14 +28,18 @@ class AddTransaction : AppCompatActivity() { R.layout.spinner_dropdown ) + editTextTitle.setText(intent.getStringExtra("TITLE")) + spinnerCategory.setSelection(intent.getIntExtra("TYPE", 0)) + editTextAmount.setText(intent.getFloatExtra("AMOUNT", 0f).toString()) + spinnerCategory.adapter = adapter val submitButton : Button = findViewById(R.id.buttonSubmit) submitButton.setOnClickListener { - val title = findViewById<EditText>(R.id.editTextTitle).text.toString() + val title = editTextTitle.text.toString() val category = spinnerCategory.selectedItem.toString() - val amount = findViewById<EditText>(R.id.editTextAmount).text.toString().toFloatOrNull() ?: 0f - val location = findViewById<EditText>(R.id.editTextLocation).text.toString() + val amount = editTextAmount.text.toString().toFloatOrNull() ?: 0f + val location = editTextLocation.text.toString() val replyIntent = Intent() if (title.isEmpty()) { diff --git a/app/src/main/java/com/example/bondoman/activities/MainActivity.kt b/app/src/main/java/com/example/bondoman/activities/MainActivity.kt index c7ff18fad0564757348685416f2e6210987bdc36..56ee2a9ed2b49925f97bf5a4c0fece86c4ecdf8b 100644 --- a/app/src/main/java/com/example/bondoman/activities/MainActivity.kt +++ b/app/src/main/java/com/example/bondoman/activities/MainActivity.kt @@ -15,6 +15,7 @@ import com.google.android.material.bottomnavigation.BottomNavigationView class MainActivity : AppCompatActivity() { private lateinit var tokenExpiredReceiver: BroadcastReceiver + private lateinit var randomizeReceiver: BroadcastReceiver private lateinit var tokenServiceIntent : Intent private var isReceiverRegistered = false @@ -39,6 +40,16 @@ class MainActivity : AppCompatActivity() { } } + + randomizeReceiver = object : BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (intent?.action == "com.example.bondoman.RANDOMIZE_TRANSACTION") { + val randomizeIntent = Intent(this@MainActivity, AddTransaction::class.java) + randomizeIntent.putExtras(intent) + startActivity(randomizeIntent) + } + } + } val bottomNavigationView = findViewById<BottomNavigationView >(R.id.bottom_navigation_view) val navController = findNavController(R.id.nav_fragment) @@ -52,8 +63,10 @@ class MainActivity : AppCompatActivity() { override fun onStart() { super.onStart() - val filter = IntentFilter("com.example.bondoman.TOKEN_EXPIRED") - registerReceiver(tokenExpiredReceiver, filter) + val tokenIntentFilter = IntentFilter("com.example.bondoman.TOKEN_EXPIRED") + registerReceiver(tokenExpiredReceiver, tokenIntentFilter) + val randomizeIntentFilter = IntentFilter("com.example.bondoman.RANDOMIZE_TRANSACTION") + registerReceiver(randomizeReceiver, randomizeIntentFilter) isReceiverRegistered = true } diff --git a/app/src/main/java/com/example/bondoman/fragments/SettingsFragment.kt b/app/src/main/java/com/example/bondoman/fragments/SettingsFragment.kt index 4580da3d507fc980ba9498642705d4bfaaa7aba4..7075f070133f6a846cf35185a9d073c1921a47be 100644 --- a/app/src/main/java/com/example/bondoman/fragments/SettingsFragment.kt +++ b/app/src/main/java/com/example/bondoman/fragments/SettingsFragment.kt @@ -36,6 +36,7 @@ import java.io.FileOutputStream import java.text.SimpleDateFormat import java.util.Date import java.util.Locale +import kotlin.random.Random class SettingsFragment : Fragment() { private var _binding: FragmentSettingsBinding? = null @@ -86,6 +87,9 @@ class SettingsFragment : Fragment() { binding.sendButton.setOnClickListener { handleSendButtonClick() } + binding.randomizeButton.setOnClickListener { + broadcastRandomizeTransaction() + } } private fun showLoading() { @@ -191,4 +195,39 @@ class SettingsFragment : Fragment() { FileProvider.getUriForFile(context, context.applicationContext.packageName + ".provider", file) ) } + + private fun broadcastRandomizeTransaction() { + val randomizeIntent = Intent() + randomizeIntent.action = "com.example.bondoman.RANDOMIZE_TRANSACTION" + + val title = titleChoices.random() + val category = categoryChoices.random() + val amount = Random.nextInt(1, 1001) + + randomizeIntent.putExtra("TITLE", title) + randomizeIntent.putExtra("TYPE", category) + randomizeIntent.putExtra("AMOUNT", amount) + + requireActivity().sendBroadcast(randomizeIntent) + } + + companion object { + private val titleChoices = arrayOf( + "Grocery Mart Purchase", + "Spring Wardrobe Update", + "Restaurant Dinner", + "Gas Station Refill", + "New Gadgets", + "Electricity Bill Payment", + "Local Farmer's Market Haul", + "Fitness Studio Membership Renewal", + "Home Essentials Restock", + "Coffee Shop Treat", + ) + + private val categoryChoices = arrayOf( + 0, + 1 + ) + } } \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoman/receivers/RandomizeReceiver.kt b/app/src/main/java/com/example/bondoman/receivers/RandomizeReceiver.kt new file mode 100644 index 0000000000000000000000000000000000000000..20118bfa498be80ceae4fed38015ef05aa389b22 --- /dev/null +++ b/app/src/main/java/com/example/bondoman/receivers/RandomizeReceiver.kt @@ -0,0 +1,14 @@ +package com.example.bondoman.receivers + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.util.Log + +class RandomizeReceiver: BroadcastReceiver() { + override fun onReceive(context: Context?, intent: Intent?) { + if (intent?.action == "com.example.bondoman.RANDOMIZE_TRANSACTION") { + Log.d("AddTransaction", "Received") + } + } +} \ No newline at end of file diff --git a/app/src/main/res/drawable/icon_randomize.png b/app/src/main/res/drawable/icon_randomize.png new file mode 100644 index 0000000000000000000000000000000000000000..29c662674a66ae5dc44f9ceab1efccb67e160e63 Binary files /dev/null and b/app/src/main/res/drawable/icon_randomize.png differ diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index 9e4852d26aebf883e0b805a90eb9872388fb3fa6..71114062d9e7c68054898799c702edb0300df9da 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -12,8 +12,9 @@ android:layout_height="match_parent"> <LinearLayout + android:id="@+id/settings_linear_layout" android:layout_width="329dp" - android:layout_height="452dp" + android:layout_height="wrap_content" android:orientation="vertical" android:background="@color/bg_color" app:layout_constraintBottom_toBottomOf="parent" @@ -55,6 +56,22 @@ android:textSize="17sp" android:textStyle="bold" /> + <Button + android:id="@+id/randomize_button" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginBottom="24dp" + android:background="@drawable/button_background" + android:drawableStart="@drawable/ic_randomize" + android:drawablePadding="16dp" + android:paddingHorizontal="16dp" + android:paddingVertical="16dp" + android:text="Generate Random Transaction" + android:textAlignment="viewStart" + android:textAllCaps="false" + android:textSize="17sp" + android:textStyle="bold" /> + <Button android:id="@+id/logout_button" android:layout_width="match_parent" @@ -70,19 +87,15 @@ android:textAllCaps="false" android:textSize="17sp" android:textStyle="bold" /> - </LinearLayout> - <com.airbnb.lottie.LottieAnimationView - android:id="@+id/loadingAnimation" - android:layout_width="335dp" - android:layout_height="95dp" - app:layout_constraintBottom_toBottomOf="parent" - app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toTopOf="parent" - app:lottie_autoPlay="true" - app:lottie_loop="true" - app:lottie_rawRes="@raw/loading" /> + <com.airbnb.lottie.LottieAnimationView + android:id="@+id/loadingAnimation" + android:layout_width="335dp" + android:layout_height="95dp" + app:lottie_autoPlay="true" + app:lottie_loop="true" + app:lottie_rawRes="@raw/loading" /> + </LinearLayout> <androidx.coordinatorlayout.widget.CoordinatorLayout android:id="@+id/snackbarContainer" @@ -91,9 +104,8 @@ android:orientation="vertical" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" - app:layout_constraintHorizontal_bias="0.495" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/loadingAnimation" - app:layout_constraintVertical_bias="0.818" /> + app:layout_constraintTop_toBottomOf="@id/settings_linear_layout" + app:layout_constraintVertical_bias="0.421" /> </androidx.constraintlayout.widget.ConstraintLayout> </FrameLayout> \ No newline at end of file diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index 0c3615a7a97471191cf041487b84eed409abb9cf..f76093b3d5e56939e774a24951dd146886cec5b6 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -2,10 +2,10 @@ <string name="app_name">BondoMan</string> <!-- TODO: Remove or change this placeholder text --> <string name="hello_blank_fragment">Hello blank fragment</string> - <string name="save_button_text">Simpan daftar transaksi</string> - <string name="send_button_text">Kirim daftar transaksi</string> - <string name="logout_button_text">Keluar</string> - <string name="data_transaksi_title">Data Transaksi</string> - <string name="randomize_buton_text">Randomize transaksi</string> + <string name="save_button_text">Export transaction list</string> + <string name="send_button_text">Send transaction to email</string> + <string name="logout_button_text">Logout</string> + <string name="data_transaksi_title">Transaction Data</string> + <string name="randomize_buton_text">Randomize transaction</string> <string name="items">Items</string> </resources> \ No newline at end of file