diff --git a/app/build.gradle.kts b/app/build.gradle.kts index b27415d983e652133d2a97e1589f5466b2f0139c..1121e4ea78df542ef5edbb42ab0a8284fdfefa78 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -132,4 +132,7 @@ dependencies { implementation("androidx.camera:camera-video:$cameraxVersion") implementation("androidx.camera:camera-view:$cameraxVersion") implementation("androidx.camera:camera-extensions:$cameraxVersion") + + implementation("com.google.android.gms:play-services-location:17.0.0") + } \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index bfce828dde64304855a8f45c60ee8ad4be8fce21..dd0109049113a2495ced8eb1ae9dce4735bb56e5 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -6,6 +6,9 @@ <uses-permission android:name="android.permission.CAMERA" /> <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" /> + <uses-permission android:name="android.permission.ACCESS_FINE_LOCATION"/> + <uses-permission android:name="android.permission.ACCESS_BACKGROUND_LOCATION" /> + <application android:allowBackup="true" android:dataExtractionRules="@xml/data_extraction_rules" 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 64d11bd16dfd86e5b8e6763f5c8163da21134719..1d3779673f07b82b4a606adf69711f9114ecebbc 100644 --- a/app/src/main/java/com/example/bondoman/activities/AddTransaction.kt +++ b/app/src/main/java/com/example/bondoman/activities/AddTransaction.kt @@ -1,40 +1,46 @@ package com.example.bondoman.activities +import android.Manifest import android.app.Activity -import android.app.DatePickerDialog +import android.content.Intent +import android.os.Bundle import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter -import android.graphics.Color +import android.content.pm.PackageManager +import android.location.Geocoder +import android.location.Location 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 android.widget.Spinner import androidx.appcompat.app.AppCompatActivity +import androidx.core.app.ActivityCompat +import androidx.core.content.ContextCompat 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.services.TokenCheckService -import com.example.bondoman.viewModels.TransactionsViewModel -import java.util.Calendar -import java.util.Date +import com.google.android.gms.location.FusedLocationProviderClient +import com.google.android.gms.location.LocationServices +import java.io.IOException +import java.util.Locale class AddTransaction : AppCompatActivity() { private lateinit var tokenExpiredReceiver: BroadcastReceiver private lateinit var tokenServiceIntent : Intent private var isReceiverRegistered = false + private lateinit var fusedLocationClient: FusedLocationProviderClient + private lateinit var locationText : EditText override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_add_transaksi) tokenServiceIntent= Intent(this, TokenCheckService::class.java) startService(tokenServiceIntent) + fusedLocationClient = LocationServices.getFusedLocationProviderClient(this) tokenExpiredReceiver = object : BroadcastReceiver(){ override fun onReceive(context: Context?, intent: Intent?) { @@ -54,7 +60,10 @@ class AddTransaction : AppCompatActivity() { } 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, @@ -62,14 +71,21 @@ 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) + locationText = findViewById(R.id.editTextLocation) submitButton.setOnClickListener { - val title = findViewById<EditText>(R.id.editTextTitle).text.toString() + val title = editTextTitle.text.toString() val category = spinnerCategory.selectedItem.toString() + val amount = editTextAmount.text.toString().toFloatOrNull() ?: 0f + val location = editTextLocation.text.toString() val amount = findViewById<EditText>(R.id.editTextAmount).text.toString().toFloatOrNull() ?: 0f - val location = findViewById<EditText>(R.id.editTextLocation).text.toString() + val location = locationText.text.toString() val replyIntent = Intent() if (title.isEmpty()) { @@ -83,7 +99,7 @@ class AddTransaction : AppCompatActivity() { } finish() } - + getLastLocation() } override fun onBackPressed() { @@ -91,12 +107,6 @@ class AddTransaction : AppCompatActivity() { finish() } - companion object { - const val TITLE = "TITLE" - const val TYPE = "TYPE" - const val AMOUNT = "AMOUNT" - const val LOCATION = "LOCATION" - } override fun onStart() { super.onStart() val filter = IntentFilter("com.example.bondoman.TOKEN_EXPIRED") @@ -120,4 +130,46 @@ class AddTransaction : AppCompatActivity() { isReceiverRegistered = false } } + + override fun onRequestPermissionsResult(requestCode: Int, permissions: Array<out String>, grantResults: IntArray) { + super.onRequestPermissionsResult(requestCode, permissions, grantResults) + if (requestCode == REQUEST_LOCATION_PERMISSION) { + if (grantResults.isNotEmpty() && grantResults[0] == PackageManager.PERMISSION_GRANTED) { + getLastLocation() + } + } + } + private fun getLastLocation() { + if (ContextCompat.checkSelfPermission(this, Manifest.permission.ACCESS_FINE_LOCATION) == PackageManager.PERMISSION_GRANTED) { + fusedLocationClient.lastLocation.addOnSuccessListener { location: Location? -> + location?.let { + updateLocationEditTextWithPlaceName(location.latitude, location.longitude) + } + } + }else { + ActivityCompat.requestPermissions(this, arrayOf(Manifest.permission.ACCESS_FINE_LOCATION), REQUEST_LOCATION_PERMISSION) + } + } + private fun updateLocationEditTextWithPlaceName(latitude: Double, longitude: Double) { + val geocoder = Geocoder(this, Locale.getDefault()) + try { + val addresses = geocoder.getFromLocation(latitude, longitude, 1) + if (addresses != null && addresses.isNotEmpty()) { + val address = addresses[0] + locationText.setText(address.getAddressLine(0).toString()) + } else { + locationText.setText("${latitude}, ${longitude}") + } + } catch (e: IOException) { + Log.e("Location", "Service Not Available", e) + } + } + companion object { + const val TITLE = "TITLE" + const val TYPE = "TYPE" + const val AMOUNT = "AMOUNT" + const val LOCATION = "LOCATION" + const val REQUEST_LOCATION_PERMISSION = 1 // Define the constant here + + } } \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoman/activities/EditTransaction.kt b/app/src/main/java/com/example/bondoman/activities/EditTransaction.kt index 3218e5da3cd1442968e31001f77895541a1bd4f7..ca10024840556fb159f2170f8efe56d482afa613 100644 --- a/app/src/main/java/com/example/bondoman/activities/EditTransaction.kt +++ b/app/src/main/java/com/example/bondoman/activities/EditTransaction.kt @@ -1,31 +1,25 @@ package com.example.bondoman.activities import android.app.Activity -import android.app.DatePickerDialog import android.content.BroadcastReceiver import android.content.Context import android.content.Intent import android.content.IntentFilter -import android.graphics.Color +import android.net.Uri import android.os.Bundle 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 android.widget.TextView import androidx.appcompat.app.AppCompatActivity import com.example.bondoman.R -import android.widget.Spinner -import android.widget.TextView import com.example.bondoman.services.TokenCheckService -import java.util.Calendar - class EditTransaction() : AppCompatActivity() { private lateinit var tokenExpiredReceiver: BroadcastReceiver private lateinit var tokenServiceIntent : Intent private var isReceiverRegistered = false + private lateinit var location : EditText override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_edit_transaksi) @@ -54,8 +48,8 @@ class EditTransaction() : AppCompatActivity() { val type : TextView = findViewById(R.id.editTextType) val title : EditText = findViewById(R.id.editTextTitle) val amount : EditText = findViewById(R.id.editTextAmount) - val location : EditText = findViewById(R.id.editTextLocation) - + location = findViewById(R.id.editTextLocation) + val seeLocationText : TextView = findViewById(R.id.textViewSeeLocationLabel) val intentData = intent title.setText(intentData?.getStringExtra("title") ?: "") @@ -92,7 +86,9 @@ class EditTransaction() : AppCompatActivity() { } finish() } - + seeLocationText.setOnClickListener { + seeLocation() + } } override fun onBackPressed() { @@ -124,4 +120,11 @@ class EditTransaction() : AppCompatActivity() { } } + private fun seeLocation(){ + val locationText = location.text.toString() + val gmmIntentUri = Uri.parse("geo:0,0?q=$locationText") + val mapIntent = Intent(Intent.ACTION_VIEW, gmmIntentUri) + mapIntent.setPackage("com.google.android.apps.maps") + startActivity(mapIntent) + } } \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoman/activities/LoginActivity.kt b/app/src/main/java/com/example/bondoman/activities/LoginActivity.kt index 8ed2971de92abec9d984a6786f6fb6fa8089e737..2c8e505e2c9468c16d6986719898abb10f1b2ea9 100644 --- a/app/src/main/java/com/example/bondoman/activities/LoginActivity.kt +++ b/app/src/main/java/com/example/bondoman/activities/LoginActivity.kt @@ -5,7 +5,6 @@ import android.app.Dialog import android.content.Intent import android.graphics.Color import android.graphics.drawable.ColorDrawable -import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.os.Handler import android.util.DisplayMetrics @@ -17,14 +16,12 @@ import android.widget.Button import android.widget.EditText import android.widget.ImageView import android.widget.Toast +import androidx.appcompat.app.AppCompatActivity import androidx.cardview.widget.CardView import androidx.lifecycle.lifecycleScope -import com.airbnb.lottie.LottieAnimationView import com.example.bondoman.R -import com.example.bondoman.apiServices.IAuthService import com.example.bondoman.lib.SecurePreferences import com.example.bondoman.repositories.AuthRepository -import com.example.bondoman.retrofits.Retro import kotlinx.coroutines.launch import kotlin.math.log 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 eb54ef4d61233829b4f8e15f9dd769f6b04e38fb..7f1a1dd95e79abb0dc6fcef13c090de26a390322 100644 --- a/app/src/main/java/com/example/bondoman/activities/MainActivity.kt +++ b/app/src/main/java/com/example/bondoman/activities/MainActivity.kt @@ -23,6 +23,7 @@ import com.google.android.material.navigation.NavigationView class MainActivity : AppCompatActivity() { private lateinit var tokenExpiredReceiver: BroadcastReceiver + private lateinit var randomizeReceiver: BroadcastReceiver private lateinit var tokenServiceIntent : Intent private var isReceiverRegistered = false private lateinit var bottomNavigationView: BottomNavigationView; @@ -52,7 +53,17 @@ class MainActivity : AppCompatActivity() { } } - bottomNavigationView = findViewById<BottomNavigationView + + 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) navigationView = findViewById<NavigationView>(R.id.navigation_view) @@ -109,8 +120,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/adapter/RecyclerViewAdapter.kt b/app/src/main/java/com/example/bondoman/adapter/RecyclerViewAdapter.kt index c579deb752c851a599164a896d57af4ee392a36d..f902d359ea6774fb28232564d0ce48dca4bdd2df 100644 --- a/app/src/main/java/com/example/bondoman/adapter/RecyclerViewAdapter.kt +++ b/app/src/main/java/com/example/bondoman/adapter/RecyclerViewAdapter.kt @@ -4,10 +4,7 @@ import android.content.Intent import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.Button -import android.widget.TextView import androidx.cardview.widget.CardView -import androidx.core.content.ContextCompat.startActivity import androidx.lifecycle.LiveData import androidx.recyclerview.widget.RecyclerView import com.example.bondoman.R diff --git a/app/src/main/java/com/example/bondoman/adapter/TransactionListAdapter.kt b/app/src/main/java/com/example/bondoman/adapter/TransactionListAdapter.kt index b0ba205fba51770a6adc4809d3bc5390729123a1..81dbe187d02afcea8788ffa240d159765a87f347 100644 --- a/app/src/main/java/com/example/bondoman/adapter/TransactionListAdapter.kt +++ b/app/src/main/java/com/example/bondoman/adapter/TransactionListAdapter.kt @@ -6,7 +6,6 @@ import android.view.View import android.view.ViewGroup import android.widget.TextView import androidx.cardview.widget.CardView -import androidx.lifecycle.LiveData import androidx.recyclerview.widget.DiffUtil import androidx.recyclerview.widget.ListAdapter import androidx.recyclerview.widget.RecyclerView @@ -15,7 +14,6 @@ import com.example.bondoman.activities.EditTransaction import com.example.bondoman.entities.Transaction import com.example.bondoman.lib.SecurePreferences import com.example.bondoman.viewModels.TransactionsViewModel -import java.text.SimpleDateFormat import java.time.LocalDate import java.time.format.DateTimeFormatter import java.util.Locale diff --git a/app/src/main/java/com/example/bondoman/apiServices/IAuthService.kt b/app/src/main/java/com/example/bondoman/apiServices/IAuthService.kt index 9112f0914cc5e33a9a6c2572a9499121eacdbf37..172847f50a5d6a714e14a4476d4b1e2dc0a53c27 100644 --- a/app/src/main/java/com/example/bondoman/apiServices/IAuthService.kt +++ b/app/src/main/java/com/example/bondoman/apiServices/IAuthService.kt @@ -1,6 +1,5 @@ package com.example.bondoman.apiServices -import retrofit2.Call import retrofit2.http.Body import retrofit2.http.Header import retrofit2.http.POST 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 02b177ade5dfae0e5362742d42830177ffc67b20..b3fef09cf849add6a337c936ecb780d8c9d94ef6 100644 --- a/app/src/main/java/com/example/bondoman/fragments/SettingsFragment.kt +++ b/app/src/main/java/com/example/bondoman/fragments/SettingsFragment.kt @@ -42,6 +42,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 @@ -95,6 +96,8 @@ class SettingsFragment : Fragment() { binding.sendButton.setOnClickListener { handleSendButtonClick() } + binding.randomizeButton.setOnClickListener { + broadcastRandomizeTransaction() binding.logoutButton.setOnClickListener{ lifecycleScope.launch { showLoading() @@ -228,4 +231,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/fragments/TransaksiFragment.kt b/app/src/main/java/com/example/bondoman/fragments/TransaksiFragment.kt index 637784ae3200acad88f00fc414faf1387aa73ded..c62887fd669ca369a7933b385c8d784adc43ade0 100644 --- a/app/src/main/java/com/example/bondoman/fragments/TransaksiFragment.kt +++ b/app/src/main/java/com/example/bondoman/fragments/TransaksiFragment.kt @@ -7,14 +7,12 @@ import android.util.Log import android.view.LayoutInflater import android.view.View import android.view.ViewGroup -import android.widget.Toast import androidx.fragment.app.Fragment import androidx.fragment.app.viewModels import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.example.bondoman.R import com.example.bondoman.activities.AddTransaction -import com.example.bondoman.activities.EditTransaction import com.example.bondoman.adapter.TransactionListAdapter import com.example.bondoman.database.TransactionDatabase import com.example.bondoman.entities.Transaction @@ -47,14 +45,11 @@ class TransaksiFragment : Fragment() { securePreferences = SecurePreferences(requireContext()) } - override fun onCreateView( inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle? ): View? { val view = inflater.inflate(R.layout.fragment_transaksi, container, false) - - val recyclerView: RecyclerView = view.findViewById(R.id.recycler_view) adapter = TransactionListAdapter(wordViewModel, ::itemEditRequest, securePreferences) recyclerView.layoutManager = LinearLayoutManager(requireContext()) @@ -79,8 +74,6 @@ class TransaksiFragment : Fragment() { override fun onActivityResult(requestCode: Int, resultCode: Int, intentData: Intent?) { super.onActivityResult(requestCode, resultCode, intentData) - Log.i("Masuk", "Masuk") - if (requestCode == newTransactionRequestCode && resultCode == Activity.RESULT_OK) { val title = intentData?.getStringExtra(AddTransaction.TITLE) ?: "" val amount = intentData?.getFloatExtra(AddTransaction.AMOUNT, 0.0f) ?: 0.0f diff --git a/app/src/main/java/com/example/bondoman/fragments/TwibbonFragment.kt b/app/src/main/java/com/example/bondoman/fragments/TwibbonFragment.kt index d3bea777cb6c5294354d6a937dd1182cd63d2660..a69442a1dce9773f2d8a187dc44c084ad07dfa2c 100644 --- a/app/src/main/java/com/example/bondoman/fragments/TwibbonFragment.kt +++ b/app/src/main/java/com/example/bondoman/fragments/TwibbonFragment.kt @@ -4,10 +4,7 @@ import android.Manifest import android.content.pm.PackageManager import android.graphics.Bitmap import android.graphics.BitmapFactory -import android.graphics.ImageFormat import android.graphics.Matrix -import android.graphics.Rect -import android.graphics.YuvImage import android.hardware.camera2.CameraCharacteristics import android.media.ExifInterface import android.media.Image @@ -34,7 +31,6 @@ import androidx.core.content.ContextCompat import androidx.fragment.app.Fragment import com.example.bondoman.R import java.io.ByteArrayInputStream -import java.io.ByteArrayOutputStream import java.util.concurrent.ExecutorService import java.util.concurrent.Executors 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/java/com/example/bondoman/repositories/AuthRepository.kt b/app/src/main/java/com/example/bondoman/repositories/AuthRepository.kt index 430b7e15aa1dc4dae782800832ea6045e7740219..5192451aed57d31f4e931e2d2897d8ba7a52de2d 100644 --- a/app/src/main/java/com/example/bondoman/repositories/AuthRepository.kt +++ b/app/src/main/java/com/example/bondoman/repositories/AuthRepository.kt @@ -2,7 +2,6 @@ package com.example.bondoman.repositories import android.util.Log import com.example.bondoman.apiServices.IAuthService -import com.example.bondoman.apiServices.IScanService import com.example.bondoman.apiServices.LoginRequest import com.example.bondoman.lib.SecurePreferences import com.example.bondoman.retrofits.Retro diff --git a/app/src/main/res/drawable-hdpi/ic_randomize.png b/app/src/main/res/drawable-hdpi/ic_randomize.png new file mode 100644 index 0000000000000000000000000000000000000000..5a4557d24aee299cb5034a713107cb498af72805 Binary files /dev/null and b/app/src/main/res/drawable-hdpi/ic_randomize.png differ diff --git a/app/src/main/res/drawable-mdpi/ic_randomize.png b/app/src/main/res/drawable-mdpi/ic_randomize.png new file mode 100644 index 0000000000000000000000000000000000000000..d6be20a40c785f0ac8642edd924bcd052cda2bce Binary files /dev/null and b/app/src/main/res/drawable-mdpi/ic_randomize.png differ diff --git a/app/src/main/res/drawable-xhdpi/ic_randomize.png b/app/src/main/res/drawable-xhdpi/ic_randomize.png new file mode 100644 index 0000000000000000000000000000000000000000..14c8a161763dac7ceed252db918f5754b575dc71 Binary files /dev/null and b/app/src/main/res/drawable-xhdpi/ic_randomize.png differ diff --git a/app/src/main/res/drawable-xxhdpi/ic_randomize.png b/app/src/main/res/drawable-xxhdpi/ic_randomize.png new file mode 100644 index 0000000000000000000000000000000000000000..2bc6d51a60a40548ae9895c3b7eabb9ca547b204 Binary files /dev/null and b/app/src/main/res/drawable-xxhdpi/ic_randomize.png differ diff --git a/app/src/main/res/drawable-xxxhdpi/ic_randomize.png b/app/src/main/res/drawable-xxxhdpi/ic_randomize.png new file mode 100644 index 0000000000000000000000000000000000000000..9c17bb1ddc59cf28bde6489e0de7007abf1e5bf1 Binary files /dev/null and b/app/src/main/res/drawable-xxxhdpi/ic_randomize.png differ diff --git a/app/src/main/res/drawable/ic_search.xml b/app/src/main/res/drawable/ic_search.xml new file mode 100644 index 0000000000000000000000000000000000000000..d52a85d7b663e9a892310ff7faccf2bd6157f31e --- /dev/null +++ b/app/src/main/res/drawable/ic_search.xml @@ -0,0 +1,9 @@ +<vector xmlns:android="http://schemas.android.com/apk/res/android" + android:width="24dp" + android:height="24dp" + android:viewportWidth="24" + android:viewportHeight="24"> + <path + android:fillColor="#000000" + android:pathData="M15.5,14h-0.79l-0.28,-0.27C15.41,12.59 16,11.11 16,9.5 16,5.91 13.09,3 9.5,3S3,5.91 3,9.5 5.91,16 9.5,16c1.61,0 3.09,-0.59 4.23,-1.57l0.27,0.28v0.79l5,4.99L20.49,19l-4.99,-5zm-6,0C7.01,14 5,11.99 5,9.5S7.01,5 9.5,5 14,7.01 14,9.5 11.99,14 9.5,14z"/> +</vector> 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