Migrate FrequencyPickerDialog to view bindings

pull/1674/head
Quentin Hibon 2 years ago
parent 35097e1263
commit af21fd25db

@ -22,97 +22,101 @@ package org.isoron.uhabits.activities.common.dialogs
import android.app.Dialog import android.app.Dialog
import android.os.Bundle import android.os.Bundle
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View
import android.widget.EditText import android.widget.EditText
import android.widget.LinearLayout import android.widget.LinearLayout
import android.widget.RadioButton import android.widget.RadioButton
import android.widget.TextView import android.widget.TextView
import androidx.appcompat.app.AlertDialog import androidx.appcompat.app.AlertDialog
import androidx.appcompat.app.AppCompatDialogFragment import androidx.appcompat.app.AppCompatDialogFragment
import kotlinx.android.synthetic.main.frequency_picker_dialog.view.*
import org.isoron.uhabits.R import org.isoron.uhabits.R
import org.isoron.uhabits.databinding.FrequencyPickerDialogBinding
class FrequencyPickerDialog( class FrequencyPickerDialog(
var freqNumerator: Int, var freqNumerator: Int,
var freqDenominator: Int var freqDenominator: Int
) : AppCompatDialogFragment() { ) : AppCompatDialogFragment() {
private var _binding: FrequencyPickerDialogBinding? = null
private val binding get() = _binding!!
lateinit var contentView: View
var onFrequencyPicked: (num: Int, den: Int) -> Unit = { _, _ -> } var onFrequencyPicked: (num: Int, den: Int) -> Unit = { _, _ -> }
constructor() : this(1, 1) constructor() : this(1, 1)
override fun onDestroyView() {
super.onDestroyView()
_binding = null
}
override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
val inflater = LayoutInflater.from(requireActivity()) _binding = FrequencyPickerDialogBinding.inflate(LayoutInflater.from(requireActivity()))
contentView = inflater.inflate(R.layout.frequency_picker_dialog, null)
addBeforeAfterText( addBeforeAfterText(
this.getString(R.string.every_x_days), this.getString(R.string.every_x_days),
contentView.everyXDaysContainer binding.everyXDaysContainer
) )
addBeforeAfterText( addBeforeAfterText(
this.getString(R.string.x_times_per_week), this.getString(R.string.x_times_per_week),
contentView.xTimesPerWeekContainer binding.xTimesPerWeekContainer
) )
addBeforeAfterText( addBeforeAfterText(
this.getString(R.string.x_times_per_month), this.getString(R.string.x_times_per_month),
contentView.xTimesPerMonthContainer binding.xTimesPerMonthContainer
) )
addBeforeAfterText( addBeforeAfterText(
this.getString(R.string.x_times_per_y_days), this.getString(R.string.x_times_per_y_days),
contentView.xTimesPerYDaysContainer binding.xTimesPerYDaysContainer
) )
contentView.everyDayRadioButton.setOnClickListener { binding.everyDayRadioButton.setOnClickListener {
check(contentView.everyDayRadioButton) check(binding.everyDayRadioButton)
} }
contentView.everyXDaysRadioButton.setOnClickListener { binding.everyXDaysRadioButton.setOnClickListener {
check(contentView.everyXDaysRadioButton) check(binding.everyXDaysRadioButton)
val everyXDaysTextView = contentView.everyXDaysTextView val everyXDaysTextView = binding.everyXDaysTextView
selectInputField(everyXDaysTextView) selectInputField(everyXDaysTextView)
} }
contentView.everyXDaysTextView.setOnFocusChangeListener { v, hasFocus -> binding.everyXDaysTextView.setOnFocusChangeListener { v, hasFocus ->
if (hasFocus) check(contentView.everyXDaysRadioButton) if (hasFocus) check(binding.everyXDaysRadioButton)
} }
contentView.xTimesPerWeekRadioButton.setOnClickListener { binding.xTimesPerWeekRadioButton.setOnClickListener {
check(contentView.xTimesPerWeekRadioButton) check(binding.xTimesPerWeekRadioButton)
selectInputField(contentView.xTimesPerWeekTextView) selectInputField(binding.xTimesPerWeekTextView)
} }
contentView.xTimesPerWeekTextView.setOnFocusChangeListener { v, hasFocus -> binding.xTimesPerWeekTextView.setOnFocusChangeListener { v, hasFocus ->
if (hasFocus) check(contentView.xTimesPerWeekRadioButton) if (hasFocus) check(binding.xTimesPerWeekRadioButton)
} }
contentView.xTimesPerMonthRadioButton.setOnClickListener { binding.xTimesPerMonthRadioButton.setOnClickListener {
check(contentView.xTimesPerMonthRadioButton) check(binding.xTimesPerMonthRadioButton)
selectInputField(contentView.xTimesPerMonthTextView) selectInputField(binding.xTimesPerMonthTextView)
} }
contentView.xTimesPerMonthTextView.setOnFocusChangeListener { v, hasFocus -> binding.xTimesPerMonthTextView.setOnFocusChangeListener { v, hasFocus ->
if (hasFocus) check(contentView.xTimesPerMonthRadioButton) if (hasFocus) check(binding.xTimesPerMonthRadioButton)
} }
contentView.xTimesPerYDaysRadioButton.setOnClickListener { binding.xTimesPerYDaysRadioButton.setOnClickListener {
check(contentView.xTimesPerYDaysRadioButton) check(binding.xTimesPerYDaysRadioButton)
selectInputField(contentView.xTimesPerYDaysXTextView) selectInputField(binding.xTimesPerYDaysXTextView)
} }
contentView.xTimesPerYDaysXTextView.setOnFocusChangeListener { v, hasFocus -> binding.xTimesPerYDaysXTextView.setOnFocusChangeListener { v, hasFocus ->
if (hasFocus) check(contentView.xTimesPerYDaysRadioButton) if (hasFocus) check(binding.xTimesPerYDaysRadioButton)
} }
contentView.xTimesPerYDaysYTextView.setOnFocusChangeListener { v, hasFocus -> binding.xTimesPerYDaysYTextView.setOnFocusChangeListener { v, hasFocus ->
if (hasFocus) check(contentView.xTimesPerYDaysRadioButton) if (hasFocus) check(binding.xTimesPerYDaysRadioButton)
} }
return AlertDialog.Builder(requireActivity()) return AlertDialog.Builder(requireActivity())
.setView(contentView) .setView(binding.root)
.setPositiveButton(R.string.save) { _, _ -> onSaveClicked() } .setPositiveButton(R.string.save) { _, _ -> onSaveClicked() }
.create() .create()
} }
@ -134,31 +138,35 @@ class FrequencyPickerDialog(
var numerator = 1 var numerator = 1
var denominator = 1 var denominator = 1
when { when {
contentView.everyDayRadioButton.isChecked -> { binding.everyDayRadioButton.isChecked -> {
// NOP // NOP
} }
contentView.everyXDaysRadioButton.isChecked -> {
if (contentView.everyXDaysTextView.text.isNotEmpty()) { binding.everyXDaysRadioButton.isChecked -> {
denominator = Integer.parseInt(contentView.everyXDaysTextView.text.toString()) if (binding.everyXDaysTextView.text.isNotEmpty()) {
denominator = Integer.parseInt(binding.everyXDaysTextView.text.toString())
} }
} }
contentView.xTimesPerWeekRadioButton.isChecked -> {
if (contentView.xTimesPerWeekTextView.text.isNotEmpty()) { binding.xTimesPerWeekRadioButton.isChecked -> {
numerator = Integer.parseInt(contentView.xTimesPerWeekTextView.text.toString()) if (binding.xTimesPerWeekTextView.text.isNotEmpty()) {
numerator = Integer.parseInt(binding.xTimesPerWeekTextView.text.toString())
denominator = 7 denominator = 7
} }
} }
contentView.xTimesPerYDaysRadioButton.isChecked -> {
if (contentView.xTimesPerYDaysXTextView.text.isNotEmpty() && contentView.xTimesPerYDaysYTextView.text.isNotEmpty()) { binding.xTimesPerYDaysRadioButton.isChecked -> {
if (binding.xTimesPerYDaysXTextView.text.isNotEmpty() && binding.xTimesPerYDaysYTextView.text.isNotEmpty()) {
numerator = numerator =
Integer.parseInt(contentView.xTimesPerYDaysXTextView.text.toString()) Integer.parseInt(binding.xTimesPerYDaysXTextView.text.toString())
denominator = denominator =
Integer.parseInt(contentView.xTimesPerYDaysYTextView.text.toString()) Integer.parseInt(binding.xTimesPerYDaysYTextView.text.toString())
} }
} }
else -> { else -> {
if (contentView.xTimesPerMonthTextView.text.isNotEmpty()) { if (binding.xTimesPerMonthTextView.text.isNotEmpty()) {
numerator = Integer.parseInt(contentView.xTimesPerMonthTextView.text.toString()) numerator = Integer.parseInt(binding.xTimesPerMonthTextView.text.toString())
denominator = 30 denominator = 30
} }
} }
@ -185,27 +193,27 @@ class FrequencyPickerDialog(
private fun populateViews() { private fun populateViews() {
uncheckAll() uncheckAll()
if (freqDenominator == 30 || freqDenominator == 31) { if (freqDenominator == 30 || freqDenominator == 31) {
contentView.xTimesPerMonthRadioButton.isChecked = true binding.xTimesPerMonthRadioButton.isChecked = true
contentView.xTimesPerMonthTextView.setText(freqNumerator.toString()) binding.xTimesPerMonthTextView.setText(freqNumerator.toString())
selectInputField(contentView.xTimesPerMonthTextView) selectInputField(binding.xTimesPerMonthTextView)
} else { } else {
if (freqNumerator == 1) { if (freqNumerator == 1) {
if (freqDenominator == 1) { if (freqDenominator == 1) {
contentView.everyDayRadioButton.isChecked = true binding.everyDayRadioButton.isChecked = true
} else { } else {
contentView.everyXDaysRadioButton.isChecked = true binding.everyXDaysRadioButton.isChecked = true
contentView.everyXDaysTextView.setText(freqDenominator.toString()) binding.everyXDaysTextView.setText(freqDenominator.toString())
selectInputField(contentView.everyXDaysTextView) selectInputField(binding.everyXDaysTextView)
} }
} else { } else {
if (freqDenominator == 7) { if (freqDenominator == 7) {
contentView.xTimesPerWeekRadioButton.isChecked = true binding.xTimesPerWeekRadioButton.isChecked = true
contentView.xTimesPerWeekTextView.setText(freqNumerator.toString()) binding.xTimesPerWeekTextView.setText(freqNumerator.toString())
selectInputField(contentView.xTimesPerWeekTextView) selectInputField(binding.xTimesPerWeekTextView)
} else { } else {
contentView.xTimesPerYDaysRadioButton.isChecked = true binding.xTimesPerYDaysRadioButton.isChecked = true
contentView.xTimesPerYDaysXTextView.setText(freqNumerator.toString()) binding.xTimesPerYDaysXTextView.setText(freqNumerator.toString())
contentView.xTimesPerYDaysYTextView.setText(freqDenominator.toString()) binding.xTimesPerYDaysYTextView.setText(freqDenominator.toString())
} }
} }
} }
@ -216,10 +224,10 @@ class FrequencyPickerDialog(
} }
private fun uncheckAll() { private fun uncheckAll() {
contentView.everyDayRadioButton.isChecked = false binding.everyDayRadioButton.isChecked = false
contentView.everyXDaysRadioButton.isChecked = false binding.everyXDaysRadioButton.isChecked = false
contentView.xTimesPerWeekRadioButton.isChecked = false binding.xTimesPerWeekRadioButton.isChecked = false
contentView.xTimesPerMonthRadioButton.isChecked = false binding.xTimesPerMonthRadioButton.isChecked = false
contentView.xTimesPerYDaysRadioButton.isChecked = false binding.xTimesPerYDaysRadioButton.isChecked = false
} }
} }

Loading…
Cancel
Save