@@ -35,7 +35,6 @@ import android.view.View
3535import android.view.ViewGroup
3636import android.view.WindowInsets.Type.displayCutout
3737import android.view.WindowInsets.Type.navigationBars
38- import android.widget.CheckBox
3938import android.widget.ScrollView
4039import android.widget.TextView
4140import androidx.appcompat.app.AlertDialog
@@ -51,6 +50,7 @@ import com.ichi2.anki.CardBrowser
5150import com.ichi2.anki.CollectionManager.TR
5251import com.ichi2.anki.DeckPicker
5352import com.ichi2.anki.R
53+ import com.ichi2.anki.databinding.DialogEmptyCardsBinding
5454import com.ichi2.anki.dialogs.EmptyCardsUiState.EmptyCardsSearchFailure
5555import com.ichi2.anki.dialogs.EmptyCardsUiState.EmptyCardsSearchResult
5656import com.ichi2.anki.dialogs.EmptyCardsUiState.SearchingForEmptyCards
@@ -73,28 +73,15 @@ import timber.log.Timber
7373 */
7474class EmptyCardsDialogFragment : DialogFragment () {
7575 private val viewModel by viewModels<EmptyCardsViewModel >()
76- private val loadingContainer: View ?
77- get() = dialog?.findViewById(R .id.loading_container)
78- private val loadingMessage: TextView ?
79- get() = dialog?.findViewById(R .id.text)
80- private val emptyCardsResultsContainer: View ?
81- get() = dialog?.findViewById(R .id.empty_cards_results_container)
82- private val emptyReportMessage: TextView ?
83- get() = dialog?.findViewById(R .id.empty_report_label)
84- private val keepNotesWithNoValidCards: CheckBox ?
85- get() = dialog?.findViewById(R .id.preserve_notes)
86- private val reportScrollView: ScrollView ?
87- get() = dialog?.findViewById(R .id.reportScrollView)
88- private val reportView: TextView ?
89- get() = dialog?.findViewById(R .id.report)
76+
77+ private lateinit var binding: DialogEmptyCardsBinding
9078
9179 override fun onCreateDialog (savedInstanceState : Bundle ? ): Dialog {
80+ binding = DialogEmptyCardsBinding .inflate(layoutInflater)
9281 bindToState()
9382 viewModel.searchForEmptyCards()
94- val dialogView = layoutInflater.inflate(R .layout.dialog_empty_cards, null )
95- dialogView.findViewById<CheckBox >(R .id.preserve_notes)?.text =
96- TR .emptyCardsPreserveNotesCheckbox()
97- dialogView.findViewById<TextView >(R .id.report).movementMethod = LinkMovementMethod .getInstance()
83+ binding.keepNotesWithNoValidCards.text = TR .emptyCardsPreserveNotesCheckbox()
84+ binding.report.movementMethod = LinkMovementMethod .getInstance()
9885
9986 return AlertDialog
10087 .Builder (requireContext())
@@ -113,14 +100,14 @@ class EmptyCardsDialogFragment : DialogFragment() {
113100 if (state.emptyCardsReport.emptyCids().isEmpty()) return @setPositiveButton
114101 (requireActivity() as DeckPicker ).startDeletingEmptyCards(
115102 state.emptyCardsReport,
116- keepNotesWithNoValidCards? .isChecked ? : true ,
103+ binding. keepNotesWithNoValidCards.isChecked,
117104 )
118105 }
119106 }
120107 setNegativeButton(R .string.dialog_cancel) { _, _ ->
121108 Timber .i(" Empty cards dialog cancelled" )
122109 }
123- setView(dialogView )
110+ setView(binding.root )
124111 }.also {
125112 // the initial start state is a loading state as we are looking for the empty cards,
126113 // so there's no "action" for ok just yet
@@ -134,37 +121,37 @@ class EmptyCardsDialogFragment : DialogFragment() {
134121 viewModel.uiState.collect { state ->
135122 when (state) {
136123 is SearchingForEmptyCards -> {
137- loadingMessage? .text = getString(R .string.emtpy_cards_finding)
138- loadingContainer? .isVisible = true
139- emptyCardsResultsContainer? .isVisible = false
124+ binding. loadingMessage.text = getString(R .string.emtpy_cards_finding)
125+ binding. loadingContainer.isVisible = true
126+ binding. emptyCardsResultsContainer.isVisible = false
140127 (dialog as ? AlertDialog )?.positiveButton?.apply {
141128 isEnabled = false
142129 text = getString(R .string.dialog_ok)
143130 }
144131 }
145132
146133 is EmptyCardsSearchResult -> {
147- loadingContainer? .isVisible = false
134+ binding. loadingContainer.isVisible = false
148135 val emptyCards = state.emptyCardsReport.emptyCids()
149136 if (emptyCards.isEmpty()) {
150- emptyReportMessage? .text = TR .emptyCardsNotFound()
151- emptyReportMessage? .isVisible = true
137+ binding. emptyReportMessage.text = TR .emptyCardsNotFound()
138+ binding. emptyReportMessage.isVisible = true
152139 // nothing to delete so also hide the preserve notes check box
153- keepNotesWithNoValidCards? .isVisible = false
140+ binding. keepNotesWithNoValidCards.isVisible = false
154141 (dialog as ? AlertDialog )?.positiveButton?.text =
155142 getString(R .string.dialog_ok)
156143 (dialog as ? AlertDialog )?.negativeButton?.visibility = View .GONE
157144 } else {
158- reportScrollView? .updateViewHeight()
159- reportView? .setText(
145+ binding. reportScrollView.updateViewHeight()
146+ binding.report .setText(
160147 state.emptyCardsReport.asActionableReport(),
161148 TextView .BufferType .SPANNABLE ,
162149 )
163- keepNotesWithNoValidCards? .isVisible = true
164- emptyReportMessage? .isVisible = false
150+ binding. keepNotesWithNoValidCards.isVisible = true
151+ binding. emptyReportMessage.isVisible = false
165152 (dialog as ? AlertDialog )?.positiveButton?.text =
166153 getString(R .string.dialog_positive_delete)
167- emptyCardsResultsContainer? .isVisible = true
154+ binding. emptyCardsResultsContainer.isVisible = true
168155 }
169156 (dialog as ? AlertDialog )?.positiveButton?.isEnabled = true
170157 }
@@ -313,7 +300,7 @@ class EmptyCardsDialogFragment : DialogFragment() {
313300
314301 override fun onConfigurationChanged (newConfig : Configuration ) {
315302 super .onConfigurationChanged(newConfig)
316- reportScrollView? .updateViewHeight()
303+ binding. reportScrollView.updateViewHeight()
317304 }
318305
319306 companion object {
0 commit comments