From 4537a95d2dee97e5ee3f50ba5bca1e47f20a3239 Mon Sep 17 00:00:00 2001 From: klaus Date: Thu, 3 Oct 2024 00:50:50 +0900 Subject: [PATCH] =?UTF-8?q?=EB=B6=88=ED=95=84=EC=9A=94=ED=95=9C=20?= =?UTF-8?q?=ED=8C=8C=EC=9D=BC=20=EC=82=AD=EC=A0=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../config/RouletteSettingsFragment.kt | 333 ------------------ .../res/layout/fragment_roulette_settings.xml | 295 ---------------- 2 files changed, 628 deletions(-) delete mode 100644 app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteSettingsFragment.kt delete mode 100644 app/src/main/res/layout/fragment_roulette_settings.xml 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 deleted file mode 100644 index 8beb899..0000000 --- a/app/src/main/java/kr/co/vividnext/sodalive/live/roulette/config/RouletteSettingsFragment.kt +++ /dev/null @@ -1,333 +0,0 @@ -package kr.co.vividnext.sodalive.live.roulette.config - -import android.annotation.SuppressLint -import android.app.Activity -import android.app.Service -import android.content.Intent -import android.os.Bundle -import android.os.Handler -import android.os.Looper -import android.text.InputFilter -import android.view.LayoutInflater -import android.view.View -import android.view.inputmethod.InputMethodManager -import android.widget.EditText -import android.widget.ImageView -import android.widget.LinearLayout -import android.widget.TextView -import androidx.core.content.ContextCompat -import com.jakewharton.rxbinding4.widget.textChanges -import io.reactivex.rxjava3.android.schedulers.AndroidSchedulers -import io.reactivex.rxjava3.schedulers.Schedulers -import kr.co.vividnext.sodalive.R -import kr.co.vividnext.sodalive.base.BaseFragment -import kr.co.vividnext.sodalive.common.Constants -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( - FragmentRouletteSettingsBinding::inflate -) { - private val viewModel: RouletteSettingsViewModel by inject() - - private lateinit var imm: InputMethodManager - private lateinit var loadingDialog: LoadingDialog - - private val handler = Handler(Looper.getMainLooper()) - - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - - setupView() - bindData() - viewModel.getAllRoulette() - } - - private fun setupView() { - loadingDialog = LoadingDialog(requireActivity(), layoutInflater) - imm = requireActivity().getSystemService( - Service.INPUT_METHOD_SERVICE - ) as InputMethodManager - - binding.etSetPrice.filters = arrayOf(InputFilter { source, start, end, _, _, _ -> - // Only allow numeric input - for (i in start until end) { - if (!Character.isDigit(source[i])) { - return@InputFilter "" - } - } - null - }) - - binding.ivRouletteIsActive.setOnClickListener { viewModel.toggleIsActive() } - binding.ivAddOption.setOnClickListener { addOption() } - - binding.tvPreview.setOnClickListener { - handler.postDelayed({ - imm.hideSoftInputFromWindow(view?.windowToken, 0) - }, 100) - viewModel.onClickPreview() - } - - binding.tvSave.setOnClickListener { _ -> - handler.postDelayed({ - imm.hideSoftInputFromWindow(view?.windowToken, 0) - }, 100) - - viewModel.createOrUpdateRoulette { - val resultIntent = Intent().apply { putExtra(Constants.EXTRA_RESULT_ROULETTE, it) } - requireActivity().setResult(Activity.RESULT_OK, resultIntent) - requireActivity().finish() - } - } - - binding.llSelectRoulette1.setOnClickListener { - viewModel.selectRoulette( - RouletteSettingsViewModel.SelectedRoulette.ROULETTE_1 - ) - } - - binding.llSelectRoulette2.setOnClickListener { - viewModel.selectRoulette( - RouletteSettingsViewModel.SelectedRoulette.ROULETTE_2 - ) - } - - binding.llSelectRoulette3.setOnClickListener { - viewModel.selectRoulette( - RouletteSettingsViewModel.SelectedRoulette.ROULETTE_3 - ) - } - } - - @SuppressLint("SetTextI18n") - private fun bindData() { - viewModel.selectedRouletteLiveData.observe(viewLifecycleOwner) { - deselectAllRoulette() - when (it) { - RouletteSettingsViewModel.SelectedRoulette.ROULETTE_2 -> selectRouletteButton( - binding.ivSelectRoulette2, - binding.llSelectRoulette2, - binding.tvSelectRoulette2 - ) - - RouletteSettingsViewModel.SelectedRoulette.ROULETTE_3 -> selectRouletteButton( - binding.ivSelectRoulette3, - binding.llSelectRoulette3, - binding.tvSelectRoulette3 - ) - - else -> selectRouletteButton( - binding.ivSelectRoulette1, - binding.llSelectRoulette1, - binding.tvSelectRoulette1 - ) - } - } - - viewModel.isActiveLiveData.observe(viewLifecycleOwner) { - binding.ivRouletteIsActive.setImageResource( - if (it) R.drawable.btn_toggle_on_big else R.drawable.btn_toggle_off_big - ) - } - - viewModel.optionsLiveData.observe(viewLifecycleOwner) { updateOptionUi(it) } - - viewModel.toastLiveData.observe(viewLifecycleOwner) { it?.let { showToast(it) } } - - viewModel.canLiveData.observe(viewLifecycleOwner) { - if (it > 0) { - binding.etSetPrice.setText("$it") - } else { - binding.etSetPrice.setText("") - } - } - - viewModel.isLoading.observe(viewLifecycleOwner) { - if (it) { - loadingDialog.show(screenWidth) - } else { - loadingDialog.dismiss() - } - } - - viewModel.roulettePreviewLiveData.observe(viewLifecycleOwner) { - RoulettePreviewDialog( - activity = requireActivity(), - previewList = listOf(it), - title = "룰렛 미리보기", - layoutInflater = layoutInflater - ).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) - .observeOn(AndroidSchedulers.mainThread()) - .subscribeOn(Schedulers.io()) - .subscribe { - if (it.trim().isNotEmpty()) { - viewModel.can = it.toString().toInt() - } - } - ) - } - - private fun addOption() { - val newOption = RouletteOption("", "") - viewModel.addOption(newOption) - } - - private fun updateOptionUi(options: List) { - binding.llRouletteOptionContainer.removeAllViews() - options.forEachIndexed { index, option -> - binding.llRouletteOptionContainer.addView(createOptionView(index, option)) - } - } - - @SuppressLint("SetTextI18n") - private fun createOptionView(index: Int, option: RouletteOption): View { - val optionView = LayoutInflater - .from(context) - .inflate( - R.layout.layout_roulette_option, - binding.llRouletteOptionContainer, - false - ) - - val etOption = optionView.findViewById(R.id.et_option) - val tvOptionTitle = optionView.findViewById(R.id.tv_option_title) - val etPercentage = optionView.findViewById(R.id.et_option_percentage) - val tvDelete = optionView.findViewById(R.id.tv_delete) - - etOption.setText(option.title) - tvOptionTitle.text = "옵션 ${index + 1}" - - try { - if (option.percentage.toFloat() > 0f) { - etPercentage.setText(option.percentage) - } else { - etPercentage.setText("") - } - } catch (e: Exception) { - etPercentage.setText("") - } - - if (index == 0 || index == 1) { - tvDelete.visibility = View.GONE - } else { - tvDelete.visibility = View.VISIBLE - tvDelete.setOnClickListener { viewModel.deleteOption(index) } - } - - compositeDisposable.add( - etOption.textChanges().skip(1) - .debounce(100, TimeUnit.MILLISECONDS) - .observeOn(AndroidSchedulers.mainThread()) - .subscribeOn(Schedulers.io()) - .subscribe { - viewModel.inputOption(index, it.toString()) - } - ) - - compositeDisposable.add( - etPercentage.textChanges().skip(1) - .debounce(100, TimeUnit.MILLISECONDS) - .observeOn(AndroidSchedulers.mainThread()) - .subscribeOn(Schedulers.io()) - .subscribe { - viewModel.inputOptionPercentage(index, it.toString()) - } - ) - - return optionView - } - - private fun deselectAllRoulette() { - binding.ivSelectRoulette1.visibility = View.GONE - binding.ivSelectRoulette2.visibility = View.GONE - binding.ivSelectRoulette3.visibility = View.GONE - - binding.llSelectRoulette1.setBackgroundResource(R.drawable.bg_round_corner_6_7_13181b) - binding.tvSelectRoulette1.setTextColor( - ContextCompat.getColor( - requireContext(), - R.color.color_3bb9f1 - ) - ) - - if (viewModel.rouletteList.size > 0) { - binding.llSelectRoulette2.setBackgroundResource(R.drawable.bg_round_corner_6_7_13181b) - binding.tvSelectRoulette2.setTextColor( - ContextCompat.getColor( - requireContext(), - R.color.color_ffcb14 - ) - ) - } else { - binding.llSelectRoulette2.setBackgroundResource(R.drawable.bg_round_corner_6_7_777777) - binding.tvSelectRoulette2.setTextColor( - ContextCompat.getColor( - requireContext(), - R.color.color_ff14d9 - ) - ) - } - - if (viewModel.rouletteList.size > 1) { - binding.llSelectRoulette3.setBackgroundResource(R.drawable.bg_round_corner_6_7_13181b) - binding.tvSelectRoulette3.setTextColor( - ContextCompat.getColor( - requireContext(), - R.color.color_3bb9f1 - ) - ) - } else { - binding.llSelectRoulette3.setBackgroundResource(R.drawable.bg_round_corner_6_7_777777) - binding.tvSelectRoulette3.setTextColor( - ContextCompat.getColor( - requireContext(), - R.color.color_555555 - ) - ) - } - } - - private fun selectRouletteButton( - ivSelectRoulette: ImageView, - llSelectRoulette: LinearLayout, - tvSelectRoulette: TextView - ) { - ivSelectRoulette.visibility = View.VISIBLE - llSelectRoulette.setBackgroundResource( - when (viewModel.selectedRouletteLiveData.value) { - RouletteSettingsViewModel.SelectedRoulette.ROULETTE_2 -> R.drawable.bg_round_corner_6_7_ffcb14 - RouletteSettingsViewModel.SelectedRoulette.ROULETTE_3 -> R.drawable.bg_round_corner_6_7_ff14d9 - else -> R.drawable.bg_round_corner_6_7_3bb9f1 - } - ) - tvSelectRoulette.setTextColor( - ContextCompat.getColor( - requireContext(), - when (viewModel.selectedRouletteLiveData.value) { - RouletteSettingsViewModel.SelectedRoulette.ROULETTE_2 -> R.color.black - else -> R.color.color_eeeeee - } - ) - ) - } -} diff --git a/app/src/main/res/layout/fragment_roulette_settings.xml b/app/src/main/res/layout/fragment_roulette_settings.xml deleted file mode 100644 index 7603ecc..0000000 --- a/app/src/main/res/layout/fragment_roulette_settings.xml +++ /dev/null @@ -1,295 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -