diff --git a/README.md b/README.md new file mode 100644 index 0000000000000000000000000000000000000000..e12e46ec091aef15ef5743c7f3ddbc1e7913f56d --- /dev/null +++ b/README.md @@ -0,0 +1 @@ +#BONDOMAN \ No newline at end of file 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/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/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