diff --git a/bondoman/app/src/main/AndroidManifest.xml b/bondoman/app/src/main/AndroidManifest.xml index c20e85f0e0048f7fa46aeb724a8712a36ea795f4..8c247b9c0976e8c5eb0f3e6e0a7e2252ebd84faf 100644 --- a/bondoman/app/src/main/AndroidManifest.xml +++ b/bondoman/app/src/main/AndroidManifest.xml @@ -1,14 +1,13 @@ <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" - xmlns:tools="http://schemas.android.com/tools"> + xmlns:tools="http://schemas.android.com/tools" > - <uses-feature android:name="android.hardware.camera.any"/> + <uses-feature android:name="android.hardware.camera.any" /> <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" /> - <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/> - <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/> - <uses-permission android:name="android.permission.CAMERA"/> - + <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" /> + <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.INTERNET" /> <application @@ -21,20 +20,28 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:theme="@style/Theme.Bondoman" - tools:targetApi="31"> + tools:targetApi="31" > + <receiver + android:name=".utils.RandomizeTransaction" + android:enabled="true" + android:exported="false" > + <intent-filter> + <action android:name="com.example.bondoman.RANDOMIZE_TRANSACTION" /> + </intent-filter> + </receiver> + <activity android:name=".LoginPage" - android:screenOrientation="sensor" - android:exported="false" /> - + android:exported="false" + android:screenOrientation="sensor" /> <activity android:name=".MainActivity" - android:screenOrientation="sensor" - android:exported="true"/> + android:exported="true" + android:screenOrientation="sensor" /> <activity - android:name=".SplashScreen" - android:screenOrientation="sensor" - android:exported="true"> + android:name=".SplashScreen" + android:exported="true" + android:screenOrientation="sensor" > <intent-filter> <action android:name="android.intent.action.MAIN" /> @@ -42,15 +49,16 @@ </intent-filter> </activity> - <service android:name=".utils.CheckExpiryToken" + <service + android:name=".utils.CheckExpiryToken" android:enabled="true" - android:exported="false" /> + android:exported="false" /> <provider android:name="androidx.core.content.FileProvider" android:authorities="${applicationId}.provider" android:exported="false" - android:grantUriPermissions="true"> + android:grantUriPermissions="true" > <meta-data android:name="android.support.FILE_PROVIDER_PATHS" android:resource="@xml/file_paths" /> diff --git a/bondoman/app/src/main/java/com/example/bondoman/AddTransactionPage.kt b/bondoman/app/src/main/java/com/example/bondoman/AddTransactionPage.kt index c1792b4d1c155a4d2c5372dc85522ba59382cb66..49d012958c8cae56b38acd3df81ba72712493044 100644 --- a/bondoman/app/src/main/java/com/example/bondoman/AddTransactionPage.kt +++ b/bondoman/app/src/main/java/com/example/bondoman/AddTransactionPage.kt @@ -1,5 +1,9 @@ package com.example.bondoman +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.content.IntentFilter import android.os.Bundle import android.util.Log import android.view.View @@ -10,12 +14,14 @@ import android.widget.RadioButton import android.widget.RadioGroup import androidx.core.content.ContentProviderCompat import androidx.fragment.app.FragmentTransaction +import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.example.bondoman.retrofit.Retrofit import com.example.bondoman.retrofit.endpoint.EndpointCheckExpiry import com.example.bondoman.retrofit.request.CheckExpiryRequest import com.example.bondoman.room.Transaction import com.example.bondoman.room.TransactionDB import com.example.bondoman.utils.AuthManager +import com.example.bondoman.utils.RandomizeTransaction import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.launch @@ -48,6 +54,8 @@ class AddTransactionPage : Fragment(R.layout.fragment_add_transaction) { private lateinit var field_lokasi: EditText val db by lazy { TransactionDB(requireContext()) } + private val randomizeReceiver = RandomizeTransaction() + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -57,12 +65,26 @@ class AddTransactionPage : Fragment(R.layout.fragment_add_transaction) { field_kategori = view.findViewById(R.id.field_kategori) as RadioGroup field_lokasi = view.findViewById(R.id.field_lokasi) as EditText + if (RandomizeTransaction.shouldRandomizePrice) field_nominal.setText(RandomizeTransaction.randomPrice.toString()) setUpListener() + RandomizeTransaction.shouldRandomizePrice = false } // fun showToast(message: String) { // Toast.makeText(requireContext(), message, Toast.LENGTH_SHORT).show() // } + override fun onResume() { + super.onResume() + LocalBroadcastManager.getInstance(requireContext()) + .registerReceiver(randomizeReceiver, IntentFilter("com.example.bondoman.RANDOMIZE_TRANSACTION")) + } + + override fun onPause() { + super.onPause() + LocalBroadcastManager.getInstance(requireContext()).unregisterReceiver(randomizeReceiver) + } + + private fun setUpListener() { add_button.setOnClickListener { @@ -81,6 +103,7 @@ class AddTransactionPage : Fragment(R.layout.fragment_add_transaction) { val payloadJson = JSONObject(String(payload, StandardCharsets.UTF_8)) Log.d("Main Activity", "payloadJson ${payloadJson}") + db.transactionDao().addTransaction( Transaction( 0, @@ -104,4 +127,10 @@ class AddTransactionPage : Fragment(R.layout.fragment_add_transaction) { } } + override fun onDestroyView() { + super.onDestroyView() + // Ensure the receiver is unregistered when the fragment is destroyed + LocalBroadcastManager.getInstance(requireContext()).unregisterReceiver(randomizeReceiver) + } + } diff --git a/bondoman/app/src/main/java/com/example/bondoman/SettingsPage.kt b/bondoman/app/src/main/java/com/example/bondoman/SettingsPage.kt index 04782cf2844d139c6faa1f864af17fc5ee7b80ef..83e668c2dcd1f31bfea077f1d8e29bbcf0c1dd61 100644 --- a/bondoman/app/src/main/java/com/example/bondoman/SettingsPage.kt +++ b/bondoman/app/src/main/java/com/example/bondoman/SettingsPage.kt @@ -3,6 +3,7 @@ package com.example.bondoman import android.app.AlertDialog import android.content.Context import android.content.Intent +import android.content.IntentFilter import android.net.Uri import android.os.Bundle import android.os.Environment @@ -15,11 +16,13 @@ import android.widget.Button import android.widget.Toast import androidx.core.content.FileProvider import androidx.lifecycle.lifecycleScope +import androidx.localbroadcastmanager.content.LocalBroadcastManager import com.example.bondoman.room.Transaction import com.example.bondoman.room.TransactionDB import com.example.bondoman.room.TransactionRepository import com.example.bondoman.room.TransactionRepositoryImplement import com.example.bondoman.utils.AuthManager +import com.example.bondoman.utils.RandomizeTransaction import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch import kotlinx.coroutines.withContext @@ -29,10 +32,12 @@ import java.io.File import java.io.FileOutputStream import java.text.SimpleDateFormat import java.util.Base64 +import kotlin.random.Random class SettingsPage : Fragment() { val db by lazy { TransactionDB(requireContext()) } private lateinit var transactionRepository: TransactionRepository + private val randomizeReceiver = RandomizeTransaction() override fun onCreate(savedInstanceState: Bundle?) { @@ -51,7 +56,6 @@ class SettingsPage : Fragment() { super.onViewCreated(view, savedInstanceState) initAction() } - fun initAction(){ val logout_button = view?.findViewById<Button>(R.id.logout_button) logout_button?.setOnClickListener { @@ -65,8 +69,25 @@ class SettingsPage : Fragment() { send_button?.setOnClickListener { export(".xlsx", true) } + + val randomize_button = view?.findViewById<Button>(R.id.randomize_button) + randomize_button?.setOnClickListener { + randomizeTransaction() + } + } + + override fun onResume() { + super.onResume() + LocalBroadcastManager.getInstance(requireContext()) + .registerReceiver(randomizeReceiver, IntentFilter("com.example.bondoman.RANDOMIZE_TRANSACTION")) } + override fun onPause() { + super.onPause() + LocalBroadcastManager.getInstance(requireContext()).unregisterReceiver(randomizeReceiver) + } + + private fun showExtDialog() { val builder = AlertDialog.Builder(requireContext()) val inflater = requireActivity().layoutInflater @@ -202,4 +223,27 @@ class SettingsPage : Fragment() { activity?.finish() } } + + fun randomizeTransaction(){ + val randomPrice = Random.nextInt(10000) + + val intent = Intent("com.example.bondoman.RANDOMIZE_TRANSACTION").apply { + putExtra("randomPrice", randomPrice) + } + + LocalBroadcastManager.getInstance(requireContext()).sendBroadcast(intent) + replaceFragment(AddTransactionPage(), HeaderTransaction()) + } + + fun replaceFragment(fragment: Fragment, headerFragment: Fragment) { + val transaction = parentFragmentManager.beginTransaction() + transaction.replace(R.id.frame_layout, fragment) + transaction.commit() + + val headerTransaction = parentFragmentManager.beginTransaction() + headerTransaction.replace(R.id.header_layout, headerFragment) + headerTransaction.commit() + } + + } \ No newline at end of file diff --git a/bondoman/app/src/main/java/com/example/bondoman/utils/RandomizeTransaction.kt b/bondoman/app/src/main/java/com/example/bondoman/utils/RandomizeTransaction.kt new file mode 100644 index 0000000000000000000000000000000000000000..d32b675fdf2c871d947c74b0e659365684730149 --- /dev/null +++ b/bondoman/app/src/main/java/com/example/bondoman/utils/RandomizeTransaction.kt @@ -0,0 +1,18 @@ +package com.example.bondoman.utils + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.util.Log + +class RandomizeTransaction : BroadcastReceiver() { + + companion object { + var shouldRandomizePrice = false + var randomPrice:Int? = null + } + override fun onReceive(context: Context, intent: Intent) { + randomPrice = intent.getIntExtra("randomPrice", 0) + shouldRandomizePrice = true + } +} \ No newline at end of file diff --git a/bondoman/app/src/main/res/layout/fragment_settings_page.xml b/bondoman/app/src/main/res/layout/fragment_settings_page.xml index 12d961d881b38c0ebdbed6d7363da95c8e2a6b62..edecea867bd60d8315b8bbb2008231c583c0d5cc 100644 --- a/bondoman/app/src/main/res/layout/fragment_settings_page.xml +++ b/bondoman/app/src/main/res/layout/fragment_settings_page.xml @@ -53,6 +53,24 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/save_button" /> + <Button + android:id="@+id/randomize_button" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_below="@id/save_button" + android:layout_marginStart="30dp" + android:layout_marginTop="20dp" + android:layout_marginEnd="30dp" + android:background="@drawable/custom_button" + android:fontFamily="@font/font_poppins" + android:text="Tumbas Karepe" + android:textAllCaps="false" + android:textColor="@color/white" + android:textSize="16dp" + app:layout_constraintEnd_toEndOf="parent" + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toBottomOf="@+id/send_button" /> + <Button android:id="@+id/logout_button" android:layout_width="match_parent" @@ -69,6 +87,6 @@ android:textSize="16dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/send_button" /> + app:layout_constraintTop_toBottomOf="@+id/randomize_button" /> </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file