diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 1c8421167432f4e800a185ac8886e4b7d62a3499..f7505cd6720bae64f398ffd651864da9352c2da8 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -58,7 +58,7 @@ dependencies { androidTestImplementation("androidx.test.ext:junit:1.1.5") androidTestImplementation("androidx.test.espresso:espresso-core:3.5.1") - val cameraxVersion = "1.3.0-rc01" + val cameraxVersion = "1.3.2" implementation("androidx.camera:camera-core:$cameraxVersion") implementation("androidx.camera:camera-camera2:$cameraxVersion") implementation("androidx.camera:camera-lifecycle:$cameraxVersion") diff --git a/app/src/main/java/com/example/bandung_bondowoso/MainActivity.kt b/app/src/main/java/com/example/bandung_bondowoso/MainActivity.kt index d28853329b08cc55e280b39976c46dba4ba4fea4..81b3533b54b05886f18347e2ce36cbdfbed3c823 100644 --- a/app/src/main/java/com/example/bandung_bondowoso/MainActivity.kt +++ b/app/src/main/java/com/example/bandung_bondowoso/MainActivity.kt @@ -66,6 +66,7 @@ class MainActivity : AppCompatActivity(), ConnectionChangeListener { ) authViewModel.isLoggedIn.observe(this) { Log.d("MainActivity", "isLoggedIn: $it") + if (it == false) { Log.d("MainActivity", "onExpired") if (navController.currentDestination?.id != R.id.fragment_login) { @@ -78,6 +79,11 @@ class MainActivity : AppCompatActivity(), ConnectionChangeListener { navController.navigate(R.id.action_fragment_login_to_navigation_transaction) } } + + if (it != null) { + binding.loading.visibility = View.GONE + binding.container.visibility = View.VISIBLE + } } /* Randomize Transaction Configuration */ @@ -189,6 +195,16 @@ class MainActivity : AppCompatActivity(), ConnectionChangeListener { if (destination.id == R.id.fragment_login) { Log.d("MainActivity", "onCreate: fragment_login") navView.visibility = View.GONE + } else if (destination.id !in intArrayOf( + R.id.navigation_transaction, + R.id.navigation_scan, + R.id.navigation_graph, + R.id.navigation_twibbon, + R.id.navigation_settings + ) + ) { + Log.d("MainActivity", "onCreate: not navigation") + navView.visibility = View.GONE } else { Log.d("MainActivity", "onCreate: not fragment_login") navView.visibility = View.VISIBLE diff --git a/app/src/main/java/com/example/bandung_bondowoso/view/scan/ScanHomeFragment.kt b/app/src/main/java/com/example/bandung_bondowoso/view/scan/ScanHomeFragment.kt index 072e947d4ecf8084c1352c49a3d0eeb02b7e2e22..cd091ef09797c1d14b55f34b171f2bf5909e9a0f 100644 --- a/app/src/main/java/com/example/bandung_bondowoso/view/scan/ScanHomeFragment.kt +++ b/app/src/main/java/com/example/bandung_bondowoso/view/scan/ScanHomeFragment.kt @@ -10,9 +10,12 @@ import androidx.activity.result.contract.ActivityResultContracts import androidx.fragment.app.Fragment import androidx.navigation.Navigation import com.example.bandung_bondowoso.R +import com.example.bandung_bondowoso.broadcast.connection.ConnectionChangeListener import com.example.bandung_bondowoso.databinding.FragmentScanHomeBinding +import com.example.bandung_bondowoso.util.ConnectionStateMonitor +import com.example.bandung_bondowoso.view.network.NoNetworkFragment -class ScanHomeFragment: Fragment() { +class ScanHomeFragment: Fragment(), ConnectionChangeListener { private var _binding :FragmentScanHomeBinding ? = null; private val binding get() = _binding!! private val pickMedia = registerForActivityResult(ActivityResultContracts.PickVisualMedia()) { uri -> @@ -22,6 +25,8 @@ class ScanHomeFragment: Fragment() { Log.d("PhotoPicker", "No photo selected") } } + private val connectionStateMonitor = ConnectionStateMonitor(this) + override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, @@ -36,6 +41,9 @@ class ScanHomeFragment: Fragment() { binding.toGaleriButton.setOnClickListener{ pickImageGallery() } + + connectionStateMonitor.enable(requireContext()) + return root; } @@ -43,4 +51,27 @@ class ScanHomeFragment: Fragment() { pickMedia.launch(PickVisualMediaRequest(ActivityResultContracts.PickVisualMedia.ImageOnly)) } + override fun onConnectionChanged(isConnected: Boolean) { + activity?.runOnUiThread(Runnable { + if (!isConnected) { + // change fragment to no network fragment + Log.d("DashboardFragment", binding.scanChildFragment.toString()) + childFragmentManager.beginTransaction() + .replace(binding.scanChildFragment.id, NoNetworkFragment()) + .commit() + binding.scanFragment.visibility = View.GONE + binding.scanChildFragment.visibility = View.VISIBLE + } else { + // remove no network fragment + Log.d("DashboardFragment", "Connected") + val fragment = childFragmentManager.findFragmentById(binding.scanChildFragment.id) + if (fragment is NoNetworkFragment) { + childFragmentManager.beginTransaction().remove(fragment).commit() + } + binding.scanFragment.visibility = View.VISIBLE + binding.scanChildFragment.visibility = View.GONE + } + }) + } + } \ No newline at end of file diff --git a/app/src/main/java/com/example/bandung_bondowoso/view/transaction/CreateTransactionFragment.kt b/app/src/main/java/com/example/bandung_bondowoso/view/transaction/CreateTransactionFragment.kt index 3c8a4632c40c3a0d9c4e5ee1c62777d36b324c58..b9336b3252bd4aab48b6c0a35520ba13f10eedd3 100644 --- a/app/src/main/java/com/example/bandung_bondowoso/view/transaction/CreateTransactionFragment.kt +++ b/app/src/main/java/com/example/bandung_bondowoso/view/transaction/CreateTransactionFragment.kt @@ -105,7 +105,6 @@ class CreateTransactionFragment : Fragment() { override fun onViewCreated(view: View, savedInstanceState: Bundle?) { Log.d(tag, "onViewCreated") super.onViewCreated(view, savedInstanceState) - (activity as MainActivity).binding.navView.visibility = View.GONE randomizeTransactionViewModel = ViewModelProvider(requireActivity()).get( RandomizeTransactionViewModel::class.java) transactionHelper = TransactionHelper(requireContext()) diff --git a/app/src/main/java/com/example/bandung_bondowoso/viewmodel/AuthViewModel.kt b/app/src/main/java/com/example/bandung_bondowoso/viewmodel/AuthViewModel.kt index b68f49a9f60fea1cfca081ddc306153e21f16a5a..0bc871b6045d1c7be1c4232ac1fc7b9be7ef23b3 100644 --- a/app/src/main/java/com/example/bandung_bondowoso/viewmodel/AuthViewModel.kt +++ b/app/src/main/java/com/example/bandung_bondowoso/viewmodel/AuthViewModel.kt @@ -17,12 +17,12 @@ import com.example.bandung_bondowoso.repository.UserRepository import kotlinx.coroutines.launch class AuthViewModel: ViewModel(), JwtExpiredListener, JwtValidListener { - private val _isLoggedIn = MutableLiveData<Boolean>() - val isLoggedIn: LiveData<Boolean> = _isLoggedIn + private val _isLoggedIn = MutableLiveData<Boolean?>() + val isLoggedIn: LiveData<Boolean?> = _isLoggedIn override fun onExpired() { Log.d("AuthViewModel", "onExpired") - _isLoggedIn.value = true + _isLoggedIn.value = false } override fun onValid() { diff --git a/app/src/main/res/drawable/bg_button_danger.xml b/app/src/main/res/drawable/bg_button_danger.xml new file mode 100644 index 0000000000000000000000000000000000000000..df25fce0ee745c6384b2fd5af3cc6de6e708e012 --- /dev/null +++ b/app/src/main/res/drawable/bg_button_danger.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <corners android:radius="12dp" /> + <solid android:color="@color/md_theme_red" /> +</shape> diff --git a/app/src/main/res/drawable/bg_button_secondary.xml b/app/src/main/res/drawable/bg_button_secondary.xml new file mode 100644 index 0000000000000000000000000000000000000000..bf7cfeff6f297aaee06a8035c75493508d82d795 --- /dev/null +++ b/app/src/main/res/drawable/bg_button_secondary.xml @@ -0,0 +1,5 @@ +<?xml version="1.0" encoding="utf-8"?> +<shape xmlns:android="http://schemas.android.com/apk/res/android"> + <corners android:radius="12dp" /> + <solid android:color="@color/md_theme_secondary" /> +</shape> diff --git a/app/src/main/res/layout/activity_main.xml b/app/src/main/res/layout/activity_main.xml index 2d12927229947b48ec80b7f249c7d33a43cdb591..ff8ea4437924a5d916dd4d7c47ddd94eebb0eef7 100644 --- a/app/src/main/res/layout/activity_main.xml +++ b/app/src/main/res/layout/activity_main.xml @@ -1,8 +1,14 @@ <?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" +<FrameLayout + xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/md_theme_background" > +<androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/container" + android:visibility="gone" android:layout_width="match_parent" android:background="@color/md_theme_surface" android:layout_height="match_parent" @@ -40,5 +46,19 @@ app:layout_constraintTop_toTopOf="parent" app:layout_constraintVertical_bias="1.0" app:navGraph="@navigation/mobile_navigation" /> - -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file +</androidx.constraintlayout.widget.ConstraintLayout> + <FrameLayout + android:id="@+id/loading" + android:visibility="visible" + android:layout_width="match_parent" + android:layout_height="match_parent"> + <ProgressBar + android:layout_width="100dp" + android:layout_height="100dp" + android:layout_gravity="center" + android:indeterminate="true" + android:indeterminateTint="@color/md_theme_primary" + android:indeterminateTintMode="src_atop" + android:translationZ="10dp" /> + </FrameLayout> +</FrameLayout> diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml index 0918f1940969668798af39d30d53a641a8efed1f..3020057fa8253b52ba8f6e99ef70a85c3d4c1b24 100644 --- a/app/src/main/res/layout/fragment_login.xml +++ b/app/src/main/res/layout/fragment_login.xml @@ -67,6 +67,7 @@ android:layout_height="wrap_content" android:autofillHints="emailAddress" android:inputType="textEmailAddress" + android:maxLength="255" /> </com.google.android.material.textfield.TextInputLayout> @@ -91,6 +92,7 @@ android:layout_height="wrap_content" android:autofillHints="password" android:inputType="textPassword" + android:maxLength="100" /> </com.google.android.material.textfield.TextInputLayout> diff --git a/app/src/main/res/layout/fragment_scan_home.xml b/app/src/main/res/layout/fragment_scan_home.xml index 53b37e0ea2256f75fb66ecce9900ca11f9fbf7af..1b4225689c6d7a21babea1df5d56a6d0aa36be7e 100644 --- a/app/src/main/res/layout/fragment_scan_home.xml +++ b/app/src/main/res/layout/fragment_scan_home.xml @@ -1,11 +1,16 @@ <?xml version="1.0" encoding="utf-8"?> -<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android" +<FrameLayout + xmlns:android="http://schemas.android.com/apk/res/android" + xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - - android:background="@color/md_theme_primary" - xmlns:app="http://schemas.android.com/apk/res-auto"> + android:background="@color/md_theme_background" > +<androidx.constraintlayout.widget.ConstraintLayout + android:id="@+id/scan_fragment" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:background="@color/md_theme_primary"> <TextView android:id="@+id/tv_scan_title" style="@style/TextAppearance.HeadlineLarge" @@ -23,7 +28,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="20dp" - android:text="Tidak perlu masukin manual! Scan saja!!" + android:text="@string/scan_description" android:textColor="@color/white" android:textSize="16sp" app:layout_constraintStart_toStartOf="@+id/tv_scan_title" @@ -34,14 +39,15 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginStart="0dp" - android:layout_marginTop="0dp" android:src="@drawable/scan" app:layout_constraintStart_toStartOf="@+id/tv_scan_title" - app:layout_constraintTop_toBottomOf="@+id/tv_scan_deskripsi" /> + app:layout_constraintTop_toBottomOf="@+id/tv_scan_deskripsi" + android:contentDescription="@string/scan_image" /> <LinearLayout + android:id = "@+id/ll_button" android:layout_width="match_parent" - android:layout_height="190dp" + android:layout_height="220dp" android:background="@color/white" android:orientation="vertical" app:layout_constraintBottom_toBottomOf="parent" @@ -56,7 +62,7 @@ android:layout_marginStart="30dp" android:layout_marginTop="25dp" android:layout_marginEnd="30dp" - android:text="Foto Struk" /> + android:text="@string/btn_scan" /> <Button android:id = "@+id/to_galeri_button" @@ -66,8 +72,13 @@ android:layout_marginStart="30dp" android:layout_marginTop="10dp" android:layout_marginEnd="30dp" - android:text="Buka Galeri" /> + android:text="@string/btn_scan_gallery" /> </LinearLayout> - - -</androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file +</androidx.constraintlayout.widget.ConstraintLayout> + <androidx.fragment.app.FragmentContainerView + android:id="@+id/scan_child_fragment" + android:layout_width="match_parent" + android:layout_height="match_parent" + android:visibility="gone" + /> +</FrameLayout> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index 4b23fcd871b98019bf83b80b8f3d0325fde9d2a5..ca2d4c0ca52489b6e78d4b4d2854343e86476f00 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -108,6 +108,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/simpan" + style="@style/buttonStylePrimary" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/tv_description_settings_card_excel" /> @@ -165,6 +166,7 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/kirim" + style="@style/buttonStylePrimary" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/tv_description_settings_card_email" /> @@ -249,6 +251,7 @@ android:layout_height="wrap_content" android:layout_marginTop="@dimen/title_top_margin" android:text="@string/button_random" + style="@style/buttonStylePrimary" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toBottomOf="@+id/textView2" /> diff --git a/app/src/main/res/layout/fragment_transaction.xml b/app/src/main/res/layout/fragment_transaction.xml index 70f7b8a1c36e40502fbe1c9d3529dcbe515787c9..a588bb6b8dd56c04a9064ccc68996d2531d704e2 100644 --- a/app/src/main/res/layout/fragment_transaction.xml +++ b/app/src/main/res/layout/fragment_transaction.xml @@ -94,7 +94,6 @@ style="@style/FloatingActionButtonStyle" android:layout_width="60dp" android:layout_height="60dp" - android:layout_marginEnd="@dimen/fragment_horizontal_padding" android:layout_marginBottom="30dp" android:clickable="true" app:backgroundTint="@color/md_theme_primary" diff --git a/app/src/main/res/layout/fragment_transaction_create.xml b/app/src/main/res/layout/fragment_transaction_create.xml index 5bbbff922ad7bc9ba4be2634e851e02db0fa5344..eeafc7e8e1d10363d10a2c303e927400f8f0290c 100644 --- a/app/src/main/res/layout/fragment_transaction_create.xml +++ b/app/src/main/res/layout/fragment_transaction_create.xml @@ -4,6 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:paddingHorizontal="@dimen/fragment_horizontal_padding" tools:context=".view.transaction.CreateTransactionFragment"> <TextView @@ -12,7 +13,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/title_top_margin" - android:layout_marginStart="@dimen/title_start_margin" android:text="@string/title_transaction_new" android:textColor="@color/md_theme_primary" app:layout_constraintStart_toStartOf="parent" @@ -20,9 +20,9 @@ <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/cl_field" - android:layout_width="310dp" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="64dp" + android:layout_marginTop="30dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tv_transaction_new"> @@ -123,6 +123,7 @@ style="@style/TextAppearance.BodyLarge" android:layout_width="match_parent" android:layout_height="wrap_content" + android:maxLength="150" android:textColor="@color/md_theme_primary"/> </com.google.android.material.textfield.TextInputLayout> @@ -168,7 +169,7 @@ </androidx.constraintlayout.widget.ConstraintLayout> <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="310dp" + android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" @@ -177,12 +178,11 @@ <Button android:id="@+id/btn_cancel" - android:layout_width="wrap_content" + android:layout_width="150dp" android:layout_height="wrap_content" - android:backgroundTint="@color/md_theme_red" android:text="@string/btn_cancel" - android:textAllCaps="true" - android:textAppearance="@style/TextAppearance.LabelLarge" + style="@style/buttonStyleDanger" + app:backgroundTint="@null" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/btn_submit" app:layout_constraintHorizontal_bias="0.0" @@ -192,12 +192,10 @@ <Button android:id="@+id/btn_submit" - android:layout_width="wrap_content" + android:layout_width="150dp" android:layout_height="wrap_content" - android:backgroundTint="@color/md_theme_primary" + style="@style/buttonStylePrimary" android:text="@string/btn_submit" - android:textAllCaps="true" - android:textAppearance="@style/TextAppearance.LabelLarge" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> diff --git a/app/src/main/res/layout/fragment_transaction_edit.xml b/app/src/main/res/layout/fragment_transaction_edit.xml index 0c4bb8c3cd6acc93a54579aeaa457294d7176fbc..52a007704d425ee2776eecea938b139554b7c00d 100644 --- a/app/src/main/res/layout/fragment_transaction_edit.xml +++ b/app/src/main/res/layout/fragment_transaction_edit.xml @@ -4,6 +4,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" + android:paddingHorizontal="@dimen/fragment_horizontal_padding" tools:context=".view.transaction.EditTransactionFragment"> <TextView @@ -12,7 +13,6 @@ android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_marginTop="@dimen/title_top_margin" - android:layout_marginStart="@dimen/title_start_margin" android:text="@string/title_transaction_new" android:textColor="@color/md_theme_primary" app:layout_constraintStart_toStartOf="parent" @@ -20,9 +20,9 @@ <androidx.constraintlayout.widget.ConstraintLayout android:id="@+id/cl_field" - android:layout_width="310dp" + android:layout_width="match_parent" android:layout_height="wrap_content" - android:layout_marginTop="64dp" + android:layout_marginTop="30dp" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/tv_transaction_edit"> @@ -123,6 +123,7 @@ style="@style/TextAppearance.BodyLarge" android:layout_width="match_parent" android:layout_height="wrap_content" + android:maxLength="150" android:textColor="@color/md_theme_primary" /> @@ -168,7 +169,7 @@ </androidx.constraintlayout.widget.ConstraintLayout> <androidx.constraintlayout.widget.ConstraintLayout - android:layout_width="310dp" + android:layout_width="match_parent" android:layout_height="wrap_content" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" @@ -177,12 +178,10 @@ <Button android:id="@+id/btn_cancel" - android:layout_width="wrap_content" + android:layout_width="150dp" android:layout_height="wrap_content" - android:backgroundTint="@color/md_theme_red" android:text="@string/btn_cancel" - android:textAllCaps="true" - android:textAppearance="@style/TextAppearance.LabelLarge" + style="@style/buttonStyleDanger" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toStartOf="@+id/btn_submit" app:layout_constraintHorizontal_bias="0.0" @@ -192,12 +191,10 @@ <Button android:id="@+id/btn_submit" - android:layout_width="wrap_content" + android:layout_width="150dp" android:layout_height="wrap_content" - android:backgroundTint="@color/md_theme_primary" + style="@style/buttonStylePrimary" android:text="@string/btn_submit" - android:textAllCaps="true" - android:textAppearance="@style/TextAppearance.LabelLarge" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> diff --git a/app/src/main/res/values-night/themes.xml b/app/src/main/res/values-night/themes.xml index 28eb1ea00e3e2e3fee5ffaa6035c98a952d40285..d5163d3b443b045918a2f93789fdceefbad25206 100644 --- a/app/src/main/res/values-night/themes.xml +++ b/app/src/main/res/values-night/themes.xml @@ -151,4 +151,9 @@ <style name="buttonStylePrimary" parent="Widget.MaterialComponents.Button"> <item name="android:background">@drawable/bg_button_primary</item> </style> + + <style name="buttonStyleDanger" parent="Widget.MaterialComponents.Button"> + <item name="android:background">@drawable/bg_button_danger</item> + <item name="android:textColor">@color/white</item> + </style> </resources> \ 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 3c1ebe3e1d852ade6962ad48106579ba7c075d32..db85c79ae5cbb93fc6e52e21fd6867790df01203 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -96,4 +96,8 @@ <string name="tv_settings_alert_email_no_network">Tidak ada koneksi internet</string> <string name="tv_description_settings_email_no_network">Silahkan cek pengaturan internet kamu</string> <string name="btn_retake">Retake</string> + <string name="scan_image">scan image</string> + <string name="scan_description">Tidak perlu masukin manual! Scan saja!!</string> + <string name="btn_scan">Foto Struk</string> + <string name="btn_scan_gallery">Buka Galeri</string> </resources> \ No newline at end of file diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 0288683a471345bfc77d675b5d00ef7a8bda056e..cafda946330a40d5b83ec312891229bc99ddfb2b 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -167,6 +167,12 @@ <item name="android:background">@drawable/bg_button_primary</item> <item name="android:textColor">@color/white</item> </style> + + <style name="buttonStyleDanger" parent="Widget.MaterialComponents.Button"> + <item name="android:background">@drawable/bg_button_danger</item> + <item name="android:textColor">@color/white</item> + </style> + <style name="LoginTextInputLayoutStyle" parent="Widget.MaterialComponents.TextInputLayout.OutlinedBox.Dense"> <item name="boxStrokeColor">@color/md_theme_primary</item> <item name="boxStrokeWidth">2dp</item>