diff --git a/README.md b/README.md index c926f59ae090d086d10bf592a91aa075c5faa127..d15808c3d3c303115b32ee4d9807c761b13ba7e9 100644 --- a/README.md +++ b/README.md @@ -4,7 +4,6 @@ Aplikasi ini merupakan aplikasi manajemen keuangan sederhana yang memungkinkan pengguna untuk mencatat transaksi, baik pemasukan maupun pengeluaran, serta melihat rangkuman transaksi dalam bentuk grafik. Fitur utama aplikasi meliputi login untuk mengakses fitur-fitur, penambahan, pengubahan, dan penghapusan transaksi, pemindaian nota untuk mencatat transaksi, melihat daftar transaksi yang telah dilakukan, menyimpan daftar transaksi dalam format spreadsheet, dan mengirimkan daftar transaksi melalui email. Aplikasi juga dilengkapi dengan fitur pemantauan jangka waktu token login (JWT), deteksi koneksi internet, dan penerimaan siaran untuk merandomisasi transaksi. - ## Library - **Google Play Services Location**: Mengakses layanan lokasi Google. @@ -34,43 +33,43 @@ Aplikasi ini merupakan aplikasi manajemen keuangan sederhana yang memungkinkan p ## Screenshots [](screenshot/206842_0.jpg) -*Halaman Login* +_Halaman Login_ [](screenshot/206843_0.jpg) -*Halaman splash* +_Halaman splash_ [](screenshot/206844_0.jpg) -*Halaman settings* +_Halaman settings_ [](screenshot/206845_0.jpg) -*Halaman Penambahan Transaksi* +_Halaman Penambahan Transaksi_ [](screenshot/206846_0.jpg) -*Halaman Update Transaksi* +_Halaman Update Transaksi_ [](screenshot/206847_0.jpg) -*Halaman Scan* +_Halaman Scan_ [](screenshot/206849_0.jpg) -*Halaman Twibbon* +_Halaman Twibbon_ [](screenshot/206850_0.jpg) -*Halaman Chart* +_Halaman Chart_ [](screenshot/206851.jpg) -*Halaman Hasil Scan Nota* +_Halaman Hasil Scan Nota_ [](screenshot/206854.jpg) -*Halaman Daftar Transaksi* +_Halaman Daftar Transaksi_ ## Pembagian Kerja Anggota Kelompok Anggota kelompok dan pembagian tugas mereka adalah sebagai berikut: -| NIM | Anggota | Tugas | Jam Pengerjaan | -|-----------|-----------|-----------------------------------------------------------|----------------| -| 13521080 | Fajar Maulana H | Membuat fitur menambahkan,mengedit,menampilkan,dan menghapus transaksi | 30 jam | -| 13521086 | Ariel Jovananda | Mengimplementasikan fitur autentikasi pengguna,Scan,Twibbon | 30 jam | -| 13521106 | Mohammad Farhan Fahrezy | Halaman Setting, Menyimpan daftar, email, broadcast receiver| 30 jam | +| NIM | Anggota | Tugas | Jam Pengerjaan | +| -------- | ----------------------- | ---------------------------------------------------------------------- | -------------- | +| 13521080 | Fajar Maulana H | Membuat fitur menambahkan,mengedit,menampilkan,dan menghapus transaksi | 30 jam | +| 13521086 | Ariel Jovananda | Mengimplementasikan fitur autentikasi pengguna,Scan,Twibbon | 30 jam | +| 13521106 | Mohammad Farhan Fahrezy | Halaman Setting, Menyimpan daftar, email, broadcast receiver | 30 jam | Total waktu pengerjaan proyek: 53 jam diff --git a/app/src/main/ic_launcher-playstore.png b/app/src/main/ic_launcher-playstore.png new file mode 100644 index 0000000000000000000000000000000000000000..14b31727f9ae292412314b3cc639cf984e14cc6a Binary files /dev/null and b/app/src/main/ic_launcher-playstore.png differ diff --git a/app/src/main/java/com/example/bondoman/MainActivity.kt b/app/src/main/java/com/example/bondoman/MainActivity.kt index d4209da82001a39c9828a364f128937c2c39411f..f720d5efe22ad5916bdd500da9ae6b2f967162dc 100644 --- a/app/src/main/java/com/example/bondoman/MainActivity.kt +++ b/app/src/main/java/com/example/bondoman/MainActivity.kt @@ -4,6 +4,7 @@ import android.Manifest.permission.ACCESS_COARSE_LOCATION import android.Manifest.permission.ACCESS_FINE_LOCATION import android.app.AlertDialog import android.content.Context +import android.content.IntentFilter import androidx.appcompat.app.AppCompatActivity import android.os.Bundle import android.os.Handler @@ -23,9 +24,10 @@ import android.net.NetworkCapabilities import android.util.Log.d import androidx.activity.result.contract.ActivityResultContracts import androidx.activity.viewModels -import com.example.bondoman.models.TransactionViewModel +import com.example.bondoman.ui.cart.TransactionViewModel import com.example.bondoman.room.BondomanDatabase import com.example.bondoman.services.LocationDefault +import com.example.bondoman.services.SettingBroadcastReceiver import com.example.bondoman.ui.chart.ChartViewModel import com.example.bondoman.ui.nointernet.NoInternetFragment import com.example.bondoman.ui.settings.SettingsViewModel @@ -54,9 +56,14 @@ class MainActivity : AppCompatActivity() { SettingsViewModel.provideFactory(db.dao, applicationContext,this) } + private val settingBroadcastReceiver = SettingBroadcastReceiver() + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + registerReceiver(settingBroadcastReceiver, IntentFilter("IDUPIN_RANZOMIZER_TRANSAKSI"), + RECEIVER_NOT_EXPORTED + ) locationPermission() d("OKE",viewModel.state.value.toString()) d("DONTDELETE",chartViewModel.toString()) @@ -193,5 +200,6 @@ class MainActivity : AppCompatActivity() { override fun onDestroy() { super.onDestroy() handler.removeCallbacksAndMessages(null) + unregisterReceiver(settingBroadcastReceiver) } } \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoman/services/SettingBroadcastReceiver.kt b/app/src/main/java/com/example/bondoman/services/SettingBroadcastReceiver.kt new file mode 100644 index 0000000000000000000000000000000000000000..e9d1cce15a11850f702bf9ad9b0de2930737963d --- /dev/null +++ b/app/src/main/java/com/example/bondoman/services/SettingBroadcastReceiver.kt @@ -0,0 +1,16 @@ +package com.example.bondoman.services + +import android.content.BroadcastReceiver +import android.content.Context +import android.content.Intent +import android.util.Log + + +class SettingBroadcastReceiver() : BroadcastReceiver() { + + override fun onReceive(context: Context?, intent: Intent?) { + if(intent?.action == "IDUPIN_RANZOMIZER_TRANSAKSI"){ + Log.d("BROADCASTBB","Dapet") + } + } +} diff --git a/app/src/main/java/com/example/bondoman/ui/cart/CartAdapter.kt b/app/src/main/java/com/example/bondoman/ui/cart/CartAdapter.kt index e59deed9739a1930817f047221a3ebf06c1ece81..7ff98711c98623e574ee36b3b9c0043d6ec659ab 100644 --- a/app/src/main/java/com/example/bondoman/ui/cart/CartAdapter.kt +++ b/app/src/main/java/com/example/bondoman/ui/cart/CartAdapter.kt @@ -6,12 +6,11 @@ import androidx.fragment.app.FragmentManager import androidx.recyclerview.widget.RecyclerView import com.example.bondoman.R import com.example.bondoman.models.Transaction -import com.example.bondoman.models.TransactionViewModel -import com.example.bondoman.ui.cart.EditFragment +import com.example.bondoman.ui.cart.TransactionViewModel +import com.example.bondoman.ui.cart.edit.EditFragment import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.collect import kotlinx.coroutines.launch class CartAdapter( diff --git a/app/src/main/java/com/example/bondoman/ui/cart/CartFragment.kt b/app/src/main/java/com/example/bondoman/ui/cart/CartFragment.kt index b5e396b49fefa7fa8c762251e1fe04884442bba4..8947cffed3314e694df9fb29287e2a0ffb9b5e2d 100644 --- a/app/src/main/java/com/example/bondoman/ui/cart/CartFragment.kt +++ b/app/src/main/java/com/example/bondoman/ui/cart/CartFragment.kt @@ -18,20 +18,14 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.example.bondoman.R import com.example.bondoman.models.Transaction -import com.example.bondoman.models.TransactionViewModel import com.example.bondoman.services.LocationClient import com.example.bondoman.services.LocationDefault -import com.example.bondoman.services.TransactionState +import com.example.bondoman.ui.cart.add.AddFragment import com.google.android.gms.location.LocationServices import kotlinx.coroutines.CoroutineScope -import kotlinx.coroutines.Dispatchers -import kotlinx.coroutines.MainScope -import kotlinx.coroutines.coroutineScope -import kotlinx.coroutines.flow.observeOn import kotlinx.coroutines.launch import java.math.BigDecimal import java.time.LocalDate -import kotlin.coroutines.CoroutineContext private const val ARG_PARAM1 = "param1" diff --git a/app/src/main/java/com/example/bondoman/services/TransactionEvent.kt b/app/src/main/java/com/example/bondoman/ui/cart/TransactionEvent.kt similarity index 83% rename from app/src/main/java/com/example/bondoman/services/TransactionEvent.kt rename to app/src/main/java/com/example/bondoman/ui/cart/TransactionEvent.kt index 1f2adf99eb615a005137ee3b6a41f646010ef4c1..9bab3420008cdec0a16aefeba087e705a919fb7d 100644 --- a/app/src/main/java/com/example/bondoman/services/TransactionEvent.kt +++ b/app/src/main/java/com/example/bondoman/ui/cart/TransactionEvent.kt @@ -1,6 +1,5 @@ -package com.example.bondoman.services +package com.example.bondoman.ui.cart -import android.location.Location import com.example.bondoman.models.Transaction import com.example.bondoman.models.Transaction.Category import java.math.BigDecimal @@ -16,4 +15,5 @@ sealed interface TransactionEvent { data class SetNominal(val Nominal: BigDecimal) : TransactionEvent data class SetKategori(val Kategori: Category) : TransactionEvent data class SetLokasi(val Lokasi: Transaction.Position) : TransactionEvent + data class SetBroadcastStatus(val broadcastStatus: Boolean): TransactionEvent } \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoman/services/TransactionState.kt b/app/src/main/java/com/example/bondoman/ui/cart/TransactionState.kt similarity index 73% rename from app/src/main/java/com/example/bondoman/services/TransactionState.kt rename to app/src/main/java/com/example/bondoman/ui/cart/TransactionState.kt index a0a38109db558fc31e4cbf0e9ce7d3a7cde305ba..4ae7be10d54051dfa298ba0d74b13a943aab2bee 100644 --- a/app/src/main/java/com/example/bondoman/services/TransactionState.kt +++ b/app/src/main/java/com/example/bondoman/ui/cart/TransactionState.kt @@ -1,7 +1,8 @@ -package com.example.bondoman.services +package com.example.bondoman.ui.cart import android.location.Location import com.example.bondoman.models.Transaction import com.example.bondoman.models.Transaction.Category +import com.example.bondoman.ui.settings.SettingsEvent import java.math.BigDecimal import java.time.LocalDate @@ -12,5 +13,6 @@ data class TransactionState ( val nominal: BigDecimal = BigDecimal(0), val kategori: Category = Category.PEMBELIAN, val lokasi: Transaction.Position = Transaction.Position(0.0,0.0), - val tanggal: LocalDate = LocalDate.now() + val tanggal: LocalDate = LocalDate.now(), + val broadcastStatus: Boolean = false ) \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoman/models/TransactionViewModel.kt b/app/src/main/java/com/example/bondoman/ui/cart/TransactionViewModel.kt similarity index 91% rename from app/src/main/java/com/example/bondoman/models/TransactionViewModel.kt rename to app/src/main/java/com/example/bondoman/ui/cart/TransactionViewModel.kt index 25b6705f84052971218d9ff08672fdc926b38c89..16617757cf9be02f012002ca6b2e8abd994c5e44 100644 --- a/app/src/main/java/com/example/bondoman/models/TransactionViewModel.kt +++ b/app/src/main/java/com/example/bondoman/ui/cart/TransactionViewModel.kt @@ -1,4 +1,4 @@ -package com.example.bondoman.models +package com.example.bondoman.ui.cart import android.content.Context import android.os.Bundle @@ -9,10 +9,9 @@ import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import androidx.savedstate.SavedStateRegistryOwner +import com.example.bondoman.models.Transaction import com.example.bondoman.models.Transaction.Category import com.example.bondoman.room.TransactionDao -import com.example.bondoman.services.TransactionEvent -import com.example.bondoman.services.TransactionState import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.stateIn @@ -23,10 +22,8 @@ import java.time.LocalDate import com.example.bondoman.services.LocationClient import com.example.bondoman.services.LocationDefault import kotlinx.coroutines.flow.asStateFlow -import kotlinx.coroutines.flow.collect import kotlinx.coroutines.flow.collectLatest import kotlinx.coroutines.flow.combine -import kotlinx.coroutines.flow.first class TransactionViewModel(private val dao : TransactionDao,private val locationProvider : LocationClient,private val context: Context) : ViewModel() { @@ -45,7 +42,8 @@ class TransactionViewModel(private val dao : TransactionDao,private val locatio nominal = state.nominal, kategori = state.kategori, lokasi = state.lokasi, - tanggal = state.tanggal + tanggal = state.tanggal, + broadcastStatus = state.broadcastStatus ) }.stateIn(viewModelScope, SharingStarted.WhileSubscribed(5000), TransactionState()) @@ -93,7 +91,7 @@ class TransactionViewModel(private val dao : TransactionDao,private val locatio } // Check if lokasi is not default and add to updatedFields - if (lokasi != Transaction.Position(0.0,0.0)) { + if (lokasi != Transaction.Position(0.0, 0.0)) { dao.updateLokasi(id,lokasi) } @@ -107,7 +105,7 @@ class TransactionViewModel(private val dao : TransactionDao,private val locatio judul = "", kategori = Category.PEMBELIAN, nominal = BigDecimal(0), - lokasi = Transaction.Position(0.0,0.0), + lokasi = Transaction.Position(0.0, 0.0), tanggal = LocalDate.now(), ) } @@ -129,7 +127,7 @@ class TransactionViewModel(private val dao : TransactionDao,private val locatio if(name == null){ name = "" } - lokasi = Transaction.Position(location.latitude,location.longitude, name!!) + lokasi = Transaction.Position(location.latitude, location.longitude, name!!) } val transaction = Transaction( judul = judul, @@ -149,7 +147,7 @@ class TransactionViewModel(private val dao : TransactionDao,private val locatio judul = "", kategori = Category.PEMBELIAN, nominal = BigDecimal(0), - lokasi = Transaction.Position(0.0,0.0), + lokasi = Transaction.Position(0.0, 0.0), tanggal = LocalDate.now(), ) } @@ -190,6 +188,13 @@ class TransactionViewModel(private val dao : TransactionDao,private val locatio d("EVENT TRANSACTION","${_state.value.nominal.toString()}") } + is TransactionEvent.SetBroadcastStatus -> { + _state.update { + it.copy( + broadcastStatus = event.broadcastStatus + ) + } + } } } diff --git a/app/src/main/java/com/example/bondoman/ui/cart/AddFragment.kt b/app/src/main/java/com/example/bondoman/ui/cart/add/AddFragment.kt similarity index 95% rename from app/src/main/java/com/example/bondoman/ui/cart/AddFragment.kt rename to app/src/main/java/com/example/bondoman/ui/cart/add/AddFragment.kt index 64ac8a915057c53423d187ed4dafb9eda1bc13e9..d154c5b8637b19503d25cadb4fbdd58ba73d6a9f 100644 --- a/app/src/main/java/com/example/bondoman/ui/cart/AddFragment.kt +++ b/app/src/main/java/com/example/bondoman/ui/cart/add/AddFragment.kt @@ -1,8 +1,7 @@ -package com.example.bondoman.ui.cart +package com.example.bondoman.ui.cart.add import android.content.Context import android.location.Location -import androidx.lifecycle.ViewModelProvider import android.os.Bundle import android.util.Log.d import androidx.fragment.app.Fragment @@ -11,16 +10,15 @@ import android.view.View import android.view.ViewGroup import android.widget.AdapterView import android.widget.ArrayAdapter -import android.widget.Spinner import androidx.fragment.app.activityViewModels import com.example.bondoman.R import com.example.bondoman.databinding.FragmentAddBinding -import com.example.bondoman.databinding.FragmentLoginBinding import com.example.bondoman.models.Transaction -import com.example.bondoman.models.TransactionViewModel +import com.example.bondoman.ui.cart.TransactionViewModel import com.example.bondoman.services.LocationClient import com.example.bondoman.services.LocationDefault -import com.example.bondoman.services.TransactionEvent +import com.example.bondoman.ui.cart.TransactionEvent +import com.example.bondoman.ui.cart.CartFragment import com.google.android.gms.location.LocationServices import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers diff --git a/app/src/main/java/com/example/bondoman/ui/cart/EditFragment.kt b/app/src/main/java/com/example/bondoman/ui/cart/edit/EditFragment.kt similarity index 95% rename from app/src/main/java/com/example/bondoman/ui/cart/EditFragment.kt rename to app/src/main/java/com/example/bondoman/ui/cart/edit/EditFragment.kt index 4bcee319e6903de121c615dca147bae5e15a7ec4..c4fd3aa726715d3a1bd3f4a567f33667ad3d1fa3 100644 --- a/app/src/main/java/com/example/bondoman/ui/cart/EditFragment.kt +++ b/app/src/main/java/com/example/bondoman/ui/cart/edit/EditFragment.kt @@ -1,8 +1,7 @@ -package com.example.bondoman.ui.cart +package com.example.bondoman.ui.cart.edit import android.content.Context import android.location.Location -import androidx.lifecycle.ViewModelProvider import android.os.Bundle import android.util.Log.d import androidx.fragment.app.Fragment @@ -11,14 +10,14 @@ import android.view.View import android.view.ViewGroup import androidx.fragment.app.activityViewModels import androidx.lifecycle.Observer -import androidx.lifecycle.lifecycleScope import com.example.bondoman.R import com.example.bondoman.databinding.FragmentEditBinding import com.example.bondoman.models.Transaction -import com.example.bondoman.models.TransactionViewModel +import com.example.bondoman.ui.cart.TransactionViewModel import com.example.bondoman.services.LocationClient import com.example.bondoman.services.LocationDefault -import com.example.bondoman.services.TransactionEvent +import com.example.bondoman.ui.cart.TransactionEvent +import com.example.bondoman.ui.cart.CartFragment import com.google.android.gms.location.LocationServices import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers diff --git a/app/src/main/java/com/example/bondoman/ui/chart/ChartFragment.kt b/app/src/main/java/com/example/bondoman/ui/chart/ChartFragment.kt index 2e491f9107852a62e4c0c9b0903d0d9294977ade..bbe6abf8490ca6e43cc07cf8597e7033b4012920 100644 --- a/app/src/main/java/com/example/bondoman/ui/chart/ChartFragment.kt +++ b/app/src/main/java/com/example/bondoman/ui/chart/ChartFragment.kt @@ -2,7 +2,6 @@ package com.example.bondoman.ui.chart import android.graphics.Color import android.os.Bundle -import android.util.Log import androidx.fragment.app.Fragment import android.view.LayoutInflater import android.view.View @@ -11,7 +10,6 @@ import android.widget.Button import androidx.fragment.app.activityViewModels import com.example.bondoman.R import com.example.bondoman.databinding.FragmentChartBinding -import com.example.bondoman.models.Transaction import com.example.bondoman.models.TransactionStats import com.github.mikephil.charting.charts.PieChart import com.github.mikephil.charting.data.PieData @@ -19,14 +17,9 @@ import com.github.mikephil.charting.data.PieDataSet import com.github.mikephil.charting.data.PieEntry import com.github.mikephil.charting.utils.ColorTemplate import android.util.Log.d -import androidx.lifecycle.lifecycleScope -import com.example.bondoman.models.TransactionViewModel -import com.example.bondoman.services.TransactionEvent import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch -import kotlinx.coroutines.flow.Flow -import kotlinx.coroutines.flow.collect class ChartFragment : Fragment() { diff --git a/app/src/main/java/com/example/bondoman/ui/chart/ChartViewModel.kt b/app/src/main/java/com/example/bondoman/ui/chart/ChartViewModel.kt index 9f5a8e19d6287e72109e540ae4e1fd8e23d01848..54ee8a7def91d059a45692a85ab48b3d9eae90c5 100644 --- a/app/src/main/java/com/example/bondoman/ui/chart/ChartViewModel.kt +++ b/app/src/main/java/com/example/bondoman/ui/chart/ChartViewModel.kt @@ -5,22 +5,11 @@ import android.os.Bundle import androidx.lifecycle.AbstractSavedStateViewModelFactory import androidx.lifecycle.SavedStateHandle import androidx.lifecycle.ViewModel -import androidx.lifecycle.viewModelScope import androidx.savedstate.SavedStateRegistryOwner -import com.example.bondoman.models.Transaction -import com.example.bondoman.models.TransactionStats import com.example.bondoman.room.TransactionDao -import com.example.bondoman.services.LocationClient -import com.example.bondoman.services.TransactionState import kotlinx.coroutines.ExperimentalCoroutinesApi import kotlinx.coroutines.flow.MutableStateFlow -import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.asStateFlow -import kotlinx.coroutines.flow.collect -import kotlinx.coroutines.flow.collectLatest -import kotlinx.coroutines.flow.combine -import kotlinx.coroutines.flow.flatMapLatest -import kotlinx.coroutines.flow.stateIn @OptIn(ExperimentalCoroutinesApi::class) class ChartViewModel(private val dao: TransactionDao, private val context: Context): ViewModel() { diff --git a/app/src/main/java/com/example/bondoman/ui/scan/ScanFragment.kt b/app/src/main/java/com/example/bondoman/ui/scan/ScanFragment.kt index 68805815283216d6f1264e2ee029475e294c1034..0a1fe35548c36b653218abeea6aace948d2d8053 100644 --- a/app/src/main/java/com/example/bondoman/ui/scan/ScanFragment.kt +++ b/app/src/main/java/com/example/bondoman/ui/scan/ScanFragment.kt @@ -1,7 +1,6 @@ package com.example.bondoman.ui.scan import android.Manifest -import android.annotation.SuppressLint import android.app.Activity import android.app.AlertDialog import android.content.pm.PackageManager @@ -19,8 +18,6 @@ import java.util.concurrent.Executors import android.content.Context import android.content.Intent import android.graphics.BitmapFactory -import android.location.Location -import android.provider.MediaStore import android.widget.Toast import androidx.activity.result.contract.ActivityResultContracts import androidx.camera.lifecycle.ProcessCameraProvider @@ -35,9 +32,9 @@ import androidx.recyclerview.widget.LinearLayoutManager import androidx.recyclerview.widget.RecyclerView import com.example.bondoman.models.Item import com.example.bondoman.models.Transaction -import com.example.bondoman.models.TransactionViewModel +import com.example.bondoman.ui.cart.TransactionViewModel import com.example.bondoman.services.RetrofitClient -import com.example.bondoman.services.TransactionEvent +import com.example.bondoman.ui.cart.TransactionEvent import kotlinx.coroutines.CoroutineScope import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.launch diff --git a/app/src/main/java/com/example/bondoman/ui/settings/SettingsEvent.kt b/app/src/main/java/com/example/bondoman/ui/settings/SettingsEvent.kt index 346b5b69e7d7fadb564593d29ac85e09c2d36dca..17f864a41d8accf474cc9c98b75c53b5c519abe4 100644 --- a/app/src/main/java/com/example/bondoman/ui/settings/SettingsEvent.kt +++ b/app/src/main/java/com/example/bondoman/ui/settings/SettingsEvent.kt @@ -2,4 +2,5 @@ package com.example.bondoman.ui.settings sealed interface SettingsEvent { data class SetFileType(val fileType: ExcelExtension): SettingsEvent + data class SetBroadcastStatus(val broadcastStatus: Boolean): SettingsEvent } \ No newline at end of file diff --git a/app/src/main/java/com/example/bondoman/ui/settings/SettingsFragment.kt b/app/src/main/java/com/example/bondoman/ui/settings/SettingsFragment.kt index 1aa503e86a3714f7cd652e629469f4c3050e428d..2d1688903eb7aa26276125b0309426f477e58ded 100644 --- a/app/src/main/java/com/example/bondoman/ui/settings/SettingsFragment.kt +++ b/app/src/main/java/com/example/bondoman/ui/settings/SettingsFragment.kt @@ -1,6 +1,7 @@ package com.example.bondoman.ui.settings import android.Manifest +import android.annotation.SuppressLint import android.content.Context import android.content.Context.STORAGE_SERVICE import android.content.Intent @@ -51,6 +52,7 @@ class SettingsFragment : Fragment() { private lateinit var logoutButton: Button private lateinit var xlsxButton: CheckBox private lateinit var xlsButton: CheckBox + private lateinit var broadcastButton : Button @@ -67,6 +69,7 @@ class SettingsFragment : Fragment() { return inflater.inflate(R.layout.fragment_settings, container, false) } + @SuppressLint("ResourceAsColor") override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -77,11 +80,17 @@ class SettingsFragment : Fragment() { logoutButton = binding.settingsLogoutButton xlsxButton = binding.SettingsXlsxCheckbox xlsButton = binding.SettingsXlsCheckbox + broadcastButton = binding.settingBroadcastButton CoroutineScope(Dispatchers.Main).launch { settingsViewModel.state.collect{ state -> xlsxButton.isChecked = state.fileType == ExcelExtension.XLSX xlsButton.isChecked = state.fileType == ExcelExtension.XLS + if(state.isBroadcastOn){ + broadcastButton.setText(R.string.settings_broadcast_button_on_title) + } else { + broadcastButton.setText(R.string.settings_broadcast_button_off_title) + } } } @@ -110,6 +119,12 @@ class SettingsFragment : Fragment() { xlsxButton.isChecked = false } } + broadcastButton.setOnClickListener { + settingsViewModel._onEvent(SettingsEvent.SetBroadcastStatus(!settingsViewModel.state.value.isBroadcastOn)) + val intent = Intent() + intent.setAction("IDUPIN_RANZOMIZER_TRANSAKSI") + requireActivity().sendBroadcast(intent) + } } diff --git a/app/src/main/java/com/example/bondoman/ui/settings/SettingsState.kt b/app/src/main/java/com/example/bondoman/ui/settings/SettingsState.kt index e54664fc7ecbe4b395f569ffce96ba2fe94d2d93..748fef3da6dbe3cfdedf55b2b71ce8d6a4819d0d 100644 --- a/app/src/main/java/com/example/bondoman/ui/settings/SettingsState.kt +++ b/app/src/main/java/com/example/bondoman/ui/settings/SettingsState.kt @@ -2,4 +2,5 @@ package com.example.bondoman.ui.settings data class SettingsState( val fileType : ExcelExtension = ExcelExtension.XLSX, + val isBroadcastOn : Boolean = false ) diff --git a/app/src/main/java/com/example/bondoman/ui/settings/SettingsViewModel.kt b/app/src/main/java/com/example/bondoman/ui/settings/SettingsViewModel.kt index 6c3c7ab5d44e702edc47f32d32143a2412fbd908..c665834fdbac19f8db40bccb85b42e187feb64a3 100644 --- a/app/src/main/java/com/example/bondoman/ui/settings/SettingsViewModel.kt +++ b/app/src/main/java/com/example/bondoman/ui/settings/SettingsViewModel.kt @@ -8,7 +8,6 @@ import androidx.lifecycle.ViewModel import androidx.lifecycle.viewModelScope import androidx.savedstate.SavedStateRegistryOwner import com.example.bondoman.room.TransactionDao -import com.example.bondoman.services.TransactionState import kotlinx.coroutines.flow.MutableStateFlow import kotlinx.coroutines.flow.SharingStarted import kotlinx.coroutines.flow.asStateFlow @@ -30,6 +29,13 @@ class SettingsViewModel(private val dao: TransactionDao, private val context: Co ) } } + is SettingsEvent.SetBroadcastStatus -> { + _state.update { + it.copy( + isBroadcastOn = event.broadcastStatus + ) + } + } } } diff --git a/app/src/main/res/drawable/ic_launcher_background.xml b/app/src/main/res/drawable/ic_launcher_background.xml index 07d5da9cbf141911847041df5d7b87f0dd5ef9d4..ca3826a46ce070f906d0d3fbe6987df882134381 100644 --- a/app/src/main/res/drawable/ic_launcher_background.xml +++ b/app/src/main/res/drawable/ic_launcher_background.xml @@ -1,170 +1,74 @@ <?xml version="1.0" encoding="utf-8"?> -<vector xmlns:android="http://schemas.android.com/apk/res/android" - android:width="108dp" +<vector android:height="108dp" + android:width="108dp" + android:viewportHeight="108" android:viewportWidth="108" - android:viewportHeight="108"> - <path - android:fillColor="#3DDC84" - android:pathData="M0,0h108v108h-108z" /> - <path - android:fillColor="#00000000" - android:pathData="M9,0L9,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,0L19,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M29,0L29,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M39,0L39,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M49,0L49,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M59,0L59,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M69,0L69,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M79,0L79,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M89,0L89,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M99,0L99,108" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,9L108,9" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,19L108,19" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,29L108,29" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,39L108,39" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,49L108,49" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,59L108,59" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,69L108,69" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,79L108,79" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,89L108,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M0,99L108,99" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,29L89,29" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,39L89,39" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,49L89,49" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,59L89,59" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,69L89,69" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M19,79L89,79" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M29,19L29,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M39,19L39,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M49,19L49,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M59,19L59,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M69,19L69,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> - <path - android:fillColor="#00000000" - android:pathData="M79,19L79,89" - android:strokeWidth="0.8" - android:strokeColor="#33FFFFFF" /> + xmlns:android="http://schemas.android.com/apk/res/android"> + <path android:fillColor="#3DDC84" + android:pathData="M0,0h108v108h-108z"/> + <path android:fillColor="#00000000" android:pathData="M9,0L9,108" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M19,0L19,108" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M29,0L29,108" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M39,0L39,108" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M49,0L49,108" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M59,0L59,108" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M69,0L69,108" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M79,0L79,108" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M89,0L89,108" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M99,0L99,108" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M0,9L108,9" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M0,19L108,19" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M0,29L108,29" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M0,39L108,39" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M0,49L108,49" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M0,59L108,59" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M0,69L108,69" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M0,79L108,79" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M0,89L108,89" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M0,99L108,99" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M19,29L89,29" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M19,39L89,39" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M19,49L89,49" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M19,59L89,59" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M19,69L89,69" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M19,79L89,79" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M29,19L29,89" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M39,19L39,89" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M49,19L49,89" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M59,19L59,89" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M69,19L69,89" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> + <path android:fillColor="#00000000" android:pathData="M79,19L79,89" + android:strokeColor="#33FFFFFF" android:strokeWidth="0.8"/> </vector> diff --git a/app/src/main/res/layout/fragment_add.xml b/app/src/main/res/layout/fragment_add.xml index ca10141c8e2d0d4fc3b0e7df5999883e6fba1e9c..6b471a960be88aaeceef7144f0f95cc7eb927a9e 100644 --- a/app/src/main/res/layout/fragment_add.xml +++ b/app/src/main/res/layout/fragment_add.xml @@ -3,7 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".ui.cart.AddFragment"> + tools:context=".ui.cart.add.AddFragment"> <LinearLayout android:layout_width="match_parent" android:layout_height="match_parent" @@ -13,9 +13,10 @@ <EditText android:id="@+id/judulTransaksiInput" android:layout_width="276dp" - android:layout_height="48dp" + android:layout_height="wrap_content" android:background="@drawable/rounded_div" - android:text="Judul Transaksi" + android:hint="Judul Transaksi" + android:padding="8dp" /> <Spinner @@ -27,17 +28,20 @@ <EditText android:id="@+id/nominalTransaksiInput" android:layout_width="276dp" - android:layout_height="48dp" + android:layout_height="wrap_content" android:background="@drawable/rounded_div" - android:text="Nominal" + android:hint="Nominal" + android:padding="8dp" /> <EditText android:id="@+id/lokasiInput" android:layout_width="276dp" - android:layout_height="48dp" + android:layout_height="wrap_content" android:background="@drawable/rounded_div" android:text="Lokasi" + android:hint="Lokasi" + android:padding="8dp" /> <Button android:layout_width="wrap_content" diff --git a/app/src/main/res/layout/fragment_edit.xml b/app/src/main/res/layout/fragment_edit.xml index 36be833a23b0be2f1a8c64377527cf7cedf80961..8d1e5fc2b95046e1766b093447654b3d1f4c9273 100644 --- a/app/src/main/res/layout/fragment_edit.xml +++ b/app/src/main/res/layout/fragment_edit.xml @@ -3,7 +3,7 @@ xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" - tools:context=".ui.cart.EditFragment"> + tools:context=".ui.cart.edit.EditFragment"> <LinearLayout android:layout_width="match_parent" @@ -14,25 +14,29 @@ <EditText android:id="@+id/judulTransaksiInputEdit" android:layout_width="276dp" - android:layout_height="48dp" + android:layout_height="wrap_content" android:background="@drawable/rounded_div" - android:text="Judul Transaksi" + android:hint="Judul Transaksi" + android:padding="10dp" /> <EditText android:id="@+id/nominalTransaksiInputEdit" android:layout_width="276dp" - android:layout_height="48dp" + android:layout_height="wrap_content" android:background="@drawable/rounded_div" - android:text="Nominal" + android:hint="Nominal" + android:padding="10dp" /> <EditText android:id="@+id/lokasiInputEdit" android:layout_width="276dp" - android:layout_height="48dp" + android:layout_height="wrap_content" android:background="@drawable/rounded_div" android:text="Lokasi" + android:hint="Lokasi" + android:padding="10dp" /> <Button android:layout_width="wrap_content" diff --git a/app/src/main/res/layout/fragment_login.xml b/app/src/main/res/layout/fragment_login.xml index 59ea9ec8220a21035f59a68b8e446cdf4a311471..134c9f5740c1b9ac286a3be6af4e20ed1e4221f0 100644 --- a/app/src/main/res/layout/fragment_login.xml +++ b/app/src/main/res/layout/fragment_login.xml @@ -13,11 +13,13 @@ <EditText android:id="@+id/passwordInput" android:layout_width="276dp" - android:layout_height="31dp" + android:layout_height="wrap_content" android:background="@drawable/rounded_div" android:ems="10" android:inputType="textPassword" - android:text="password_13521086" + android:text="password_13521106" + android:hint="Password" + android:padding="10dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.496" @@ -56,11 +58,13 @@ <EditText android:id="@+id/emailInput" android:layout_width="276dp" - android:layout_height="31dp" + android:layout_height="wrap_content" android:background="@drawable/rounded_div" android:ems="10" android:inputType="textEmailSubject" - android:text="13521086@std.stei.itb.ac.id" + android:text="13521106@std.stei.itb.ac.id" + android:hint="Email" + android:padding="10dp" app:layout_constraintBottom_toBottomOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.503" diff --git a/app/src/main/res/layout/fragment_settings.xml b/app/src/main/res/layout/fragment_settings.xml index e804de014b2e569e1d6e5ad45944d13f86d113e0..290a1abb37784dab20060a36a0234d49b778a7a4 100644 --- a/app/src/main/res/layout/fragment_settings.xml +++ b/app/src/main/res/layout/fragment_settings.xml @@ -67,18 +67,42 @@ </LinearLayout> + <LinearLayout + android:id="@+id/linearLayout2" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:layout_marginTop="11dp" + android:gravity="center" + android:orientation="vertical" + app:layout_constraintTop_toBottomOf="@+id/linearLayout" + tools:layout_editor_absoluteX="10dp"> + + <TextView + android:id="@+id/settingBroadcastTitle" + android:layout_width="wrap_content" + android:layout_height="wrap_content" + android:text="@string/broadcast_status_title" /> + + <Button + android:id="@+id/settingBroadcastButton" + android:layout_width="match_parent" + android:layout_height="wrap_content" + android:backgroundTint="@color/yellow.700" + android:text="@string/settings_broadcast_button_off_title" /> + </LinearLayout> + <Button android:id="@+id/settingsLogoutButton" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_marginTop="56dp" + android:layout_marginTop="98dp" android:backgroundTint="@color/red.200" android:text="@string/settings_logout_button_title" android:textColor="@color/white" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintHorizontal_bias="0.0" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@+id/linearLayout" /> + app:layout_constraintTop_toBottomOf="@+id/linearLayout2" /> </androidx.constraintlayout.widget.ConstraintLayout> \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi/ic_launcher.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml similarity index 56% rename from app/src/main/res/mipmap-anydpi/ic_launcher.xml rename to app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml index 6f3b755bf50c6b03d8714a9c6184705e6a08389f..c4a603d4cce78b2fbd8094bd0224d4778bc8c976 100644 --- a/app/src/main/res/mipmap-anydpi/ic_launcher.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher.xml @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> - <background android:drawable="@drawable/ic_launcher_background" /> - <foreground android:drawable="@drawable/ic_launcher_foreground" /> - <monochrome android:drawable="@drawable/ic_launcher_foreground" /> + <background android:drawable="@drawable/ic_launcher_background"/> + <foreground android:drawable="@mipmap/ic_launcher_foreground"/> </adaptive-icon> \ No newline at end of file diff --git a/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml similarity index 56% rename from app/src/main/res/mipmap-anydpi/ic_launcher_round.xml rename to app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml index 6f3b755bf50c6b03d8714a9c6184705e6a08389f..c4a603d4cce78b2fbd8094bd0224d4778bc8c976 100644 --- a/app/src/main/res/mipmap-anydpi/ic_launcher_round.xml +++ b/app/src/main/res/mipmap-anydpi-v26/ic_launcher_round.xml @@ -1,6 +1,5 @@ <?xml version="1.0" encoding="utf-8"?> <adaptive-icon xmlns:android="http://schemas.android.com/apk/res/android"> - <background android:drawable="@drawable/ic_launcher_background" /> - <foreground android:drawable="@drawable/ic_launcher_foreground" /> - <monochrome android:drawable="@drawable/ic_launcher_foreground" /> + <background android:drawable="@drawable/ic_launcher_background"/> + <foreground android:drawable="@mipmap/ic_launcher_foreground"/> </adaptive-icon> \ No newline at end of file diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher.webp b/app/src/main/res/mipmap-hdpi/ic_launcher.webp index c209e78ecd372343283f4157dcfd918ec5165bb3..33cee646f5fabd70b6dbcfdc772231ab70a3222c 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher.webp and b/app/src/main/res/mipmap-hdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..46a50233d0e7b073e5cbabe7b56217afd0ef53e3 Binary files /dev/null and b/app/src/main/res/mipmap-hdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp index b2dfe3d1ba5cf3ee31b3ecc1ced89044a1f3b7a9..79a4d5b1b4bd97e8d108c99234542e559de55d47 100644 Binary files a/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-hdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher.webp b/app/src/main/res/mipmap-mdpi/ic_launcher.webp index 4f0f1d64e58ba64d180ce43ee13bf9a17835fbca..1bebb0885d0067f1503a4146d415c80b6afd3ace 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher.webp and b/app/src/main/res/mipmap-mdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..5a61e7c63a7760b140b817bd8a22bd02766cb643 Binary files /dev/null and b/app/src/main/res/mipmap-mdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp index 62b611da081676d42f6c3f78a2c91e7bcedddedb..73b6c5d9e34ca41b28577b186d495ab7a5b7a064 100644 Binary files a/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-mdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp index 948a3070fe34c611c42c0d3ad3013a0dce358be0..8ffb4cc5bee39e0edf3e21485f1fdd7deda38367 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..7e823c8753f572a34b7ca10e828cad4552e904bc Binary files /dev/null and b/app/src/main/res/mipmap-xhdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp index 1b9a6956b3acdc11f40ce2bb3f6efbd845cc243f..ee0e406928d37b08880eef572eaee1577cf309f7 100644 Binary files a/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp index 28d4b77f9f036a47549d47db79c16788749dca10..326610eca60cebcb22ed867c834a22c5a83ecfba 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..c68fea8c20f6be9206e2bd7714388f7dff8faa85 Binary files /dev/null and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp index 9287f5083623b375139afb391af71cc533a7dd37..89e1ef8232714ceb53d42f955232045a11ad6d2d 100644 Binary files a/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp index aa7d6427e6fa1074b79ccd52ef67ac15c5637e85..5deddeb5ab802d5ae635e67a2ad923ce00cb1948 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp new file mode 100644 index 0000000000000000000000000000000000000000..539a6e1415278642efae0a57e1ce024c8af55186 Binary files /dev/null and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_foreground.webp differ diff --git a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp index 9126ae37cbc3587421d6889eadd1d91fbf1994d4..28e943da3eddbfe329aef27c5fa42fe8f6b6aa3d 100644 Binary files a/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp and b/app/src/main/res/mipmap-xxxhdpi/ic_launcher_round.webp differ diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index 08f60c953cbf8e9fc908c3bfa5ddcafcb209a42c..2cf20b6b60bea41384fb8dc83d6b5b1119844a3e 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -2,8 +2,10 @@ <resources> <color name="black">#FF000000</color> <color name="white">#FFFFFFFF</color> + <color name="green.700">#388E3C</color> <color name="green.500">#4CAF50</color> <color name="green.200">#A5D6A7</color> <color name="red.500">#F44336</color> <color name="red.200">#EF9A9A</color> + <color name="yellow.700">#FBC02D</color> </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 8792f197e94818af8ec0c3dab7175102b22d098a..349a756a6f29855d0caefd901d33fa9027e48542 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -19,4 +19,7 @@ <string name="settings_select_extension_title">Select file extension</string> <string name="settings_xlsx_checkbox_title">.xlsx</string> <string name="settings_xls_checkbox_title">.xls</string> + <string name="broadcast_status_title">Broadcast Status</string> + <string name="settings_broadcast_button_off_title">Off</string> + <string name="settings_broadcast_button_on_title">On</string> </resources> \ No newline at end of file diff --git a/screenshot/BondoMan.png b/screenshot/BondoMan.png new file mode 100644 index 0000000000000000000000000000000000000000..ac3e81e314ee8b5897bcaa953130dac7f237091c Binary files /dev/null and b/screenshot/BondoMan.png differ diff --git a/screenshot/Grafik.jpg b/screenshot/Grafik.jpg new file mode 100644 index 0000000000000000000000000000000000000000..7b5a89397712187ffbb7f6a6400166dae3fc6593 Binary files /dev/null and b/screenshot/Grafik.jpg differ diff --git a/screenshot/Keranjang-Add.jpg b/screenshot/Keranjang-Add.jpg new file mode 100644 index 0000000000000000000000000000000000000000..06df5852c00a5ebac3d9f59ecae996fd7ebd176a Binary files /dev/null and b/screenshot/Keranjang-Add.jpg differ diff --git a/screenshot/Keranjang-Edit Delet.jpg b/screenshot/Keranjang-Edit Delet.jpg new file mode 100644 index 0000000000000000000000000000000000000000..23581afbf299c085fa3b25b6c6c71c5f3db62d18 Binary files /dev/null and b/screenshot/Keranjang-Edit Delet.jpg differ diff --git a/screenshot/Keranjang-List.jpg b/screenshot/Keranjang-List.jpg new file mode 100644 index 0000000000000000000000000000000000000000..b9bce36fce4d15186e294016e5d4a7cadbc52236 Binary files /dev/null and b/screenshot/Keranjang-List.jpg differ diff --git a/screenshot/Login.jpg b/screenshot/Login.jpg new file mode 100644 index 0000000000000000000000000000000000000000..5a5b82ab917026bf172e0a9e8a16cfd322136870 Binary files /dev/null and b/screenshot/Login.jpg differ diff --git a/screenshot/Scan.png b/screenshot/Scan.png new file mode 100644 index 0000000000000000000000000000000000000000..3855de4f35d71977c5664fc12ee9f1e37e820b52 Binary files /dev/null and b/screenshot/Scan.png differ diff --git a/screenshot/Setting.jpg b/screenshot/Setting.jpg new file mode 100644 index 0000000000000000000000000000000000000000..10ee85bf2ef2a5e700ff6a36e0650edd77ce0e73 Binary files /dev/null and b/screenshot/Setting.jpg differ diff --git a/screenshot/SplashScreen.jpg b/screenshot/SplashScreen.jpg new file mode 100644 index 0000000000000000000000000000000000000000..650b2209244c31276a83eb17ca97b2778c00d866 Binary files /dev/null and b/screenshot/SplashScreen.jpg differ diff --git a/screenshot/Twibbon.jpg b/screenshot/Twibbon.jpg new file mode 100644 index 0000000000000000000000000000000000000000..1d720e893558aac720125ae49e76b9c085feab0a Binary files /dev/null and b/screenshot/Twibbon.jpg differ