diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteSettingsFragment.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteSettingsFragment.kt index 1d460af..8beb899 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteSettingsFragment.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteSettingsFragment.kt @@ -26,6 +26,7 @@ import kr.co.vividnext.sodalive.common.LoadingDialog import kr.co.vividnext.sodalive.databinding.FragmentRouletteSettingsBinding import kr.co.vividnext.sodalive.live.roulette.RoulettePreviewDialog import org.koin.android.ext.android.inject +import java.util.Locale import java.util.concurrent.TimeUnit class RouletteSettingsFragment : BaseFragment( @@ -103,6 +104,7 @@ class RouletteSettingsFragment : BaseFragment( } } + @SuppressLint("SetTextI18n") private fun bindData() { viewModel.selectedRouletteLiveData.observe(viewLifecycleOwner) { deselectAllRoulette() @@ -162,6 +164,16 @@ class RouletteSettingsFragment : BaseFragment( ).show() } + viewModel.totalPercentageLiveData.observe(viewLifecycleOwner) { + binding.tvTotalPercentage.text = "( ${ + String.format( + Locale.KOREAN, + "%.2f%%", + it + ) + } )" + } + compositeDisposable.add( binding.etSetPrice.textChanges().skip(1) .debounce(100, TimeUnit.MILLISECONDS) diff --git a/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteSettingsViewModel.kt b/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteSettingsViewModel.kt index 93a4d2e..c20149c 100644 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteSettingsViewModel.kt +++ b/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteSettingsViewModel.kt @@ -47,6 +47,10 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba val selectedRouletteLiveData: LiveData get() = _selectedRouletteLiveData + private val _totalPercentageLiveData = MutableLiveData(0f) + val totalPercentageLiveData: LiveData + get() = _totalPercentageLiveData + var can = 0 var isActive = false private var rouletteId = 0L @@ -58,6 +62,7 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba if (options.size >= 10) return options.add(newOption) _optionsLiveData.value = options + calculateTotalPercentage() } fun deleteOption(index: Int) { @@ -74,6 +79,7 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba fun inputOptionPercentage(optionIndex: Int, percentage: String) { val currentOption = options[optionIndex] options[optionIndex] = currentOption.copy(percentage = percentage) + calculateTotalPercentage() } fun toggleIsActive() { @@ -339,15 +345,30 @@ class RouletteSettingsViewModel(private val repository: RouletteRepository) : Ba isActive = false options.clear() - options.add(RouletteOption(title = "", percentage = "50.00")) - options.add(RouletteOption(title = "", percentage = "50.00")) + options.add(RouletteOption(title = "", percentage = "")) + options.add(RouletteOption(title = "", percentage = "")) _optionsLiveData.value = options } + + calculateTotalPercentage() } } private fun removeAllAndAddOptions(options: List) { this.options.clear() this.options.addAll(options) + calculateTotalPercentage() + } + + private fun calculateTotalPercentage() { + val totalPercent = options.map { + try { + it.percentage.toFloat() + } catch (e: Exception) { + 0f + } + }.sum() + + _totalPercentageLiveData.value = totalPercent } } diff --git a/app/src/main/res/layout/fragment_roulette_settings.xml b/app/src/main/res/layout/fragment_roulette_settings.xml index 80397bc..7603ecc 100644 --- a/app/src/main/res/layout/fragment_roulette_settings.xml +++ b/app/src/main/res/layout/fragment_roulette_settings.xml @@ -219,11 +219,37 @@ android:src="@drawable/btn_add" /> + + + + + + +