Fix cancel Radio button on confirmation auto-delete pop-up does not work correctly
Fix: 275801119
Test: atest HealthConnectControllerUITests
Change-Id: Id4269d3ba6e82f9e8194c998bfdff38ec592864e
diff --git a/apk/src/com/android/healthconnect/controller/autodelete/AutoDeleteFragment.kt b/apk/src/com/android/healthconnect/controller/autodelete/AutoDeleteFragment.kt
index b3c4d3e..364ff41 100644
--- a/apk/src/com/android/healthconnect/controller/autodelete/AutoDeleteFragment.kt
+++ b/apk/src/com/android/healthconnect/controller/autodelete/AutoDeleteFragment.kt
@@ -19,6 +19,7 @@
import android.view.View
import android.widget.Toast
import androidx.fragment.app.activityViewModels
+import androidx.preference.Preference
import androidx.preference.PreferenceGroup
import com.android.healthconnect.controller.R
import com.android.healthconnect.controller.autodelete.AutoDeleteConfirmationDialogFragment.Companion.AUTO_DELETE_CANCELLED_EVENT
@@ -26,6 +27,7 @@
import com.android.healthconnect.controller.autodelete.AutoDeleteConfirmationDialogFragment.Companion.AUTO_DELETE_SAVED_EVENT
import com.android.healthconnect.controller.autodelete.AutoDeleteConfirmationDialogFragment.Companion.NEW_AUTO_DELETE_RANGE_BUNDLE
import com.android.healthconnect.controller.autodelete.AutoDeleteConfirmationDialogFragment.Companion.OLD_AUTO_DELETE_RANGE_BUNDLE
+import com.android.healthconnect.controller.autodelete.AutoDeleteRangePickerPreference.Companion.AUTO_DELETE_RANGE_PICKER_PREFERENCE_KEY
import com.android.healthconnect.controller.autodelete.AutoDeleteRangePickerPreference.Companion.SET_TO_NEVER_EVENT
import com.android.healthconnect.controller.shared.preference.HealthPreferenceFragment
import com.android.healthconnect.controller.utils.logging.HealthConnectLogger
@@ -72,11 +74,22 @@
Toast.makeText(activity, R.string.default_error, Toast.LENGTH_LONG).show()
}
is AutoDeleteViewModel.AutoDeleteState.WithData -> {
- mAutoDeleteSection?.removeAll()
- val autoDeletePreference =
- AutoDeleteRangePickerPreference(
- requireContext(), childFragmentManager, state.autoDeleteRange, logger)
- mAutoDeleteSection?.addPreference(autoDeletePreference)
+ if (mAutoDeleteSection?.findPreference<Preference>(
+ AUTO_DELETE_RANGE_PICKER_PREFERENCE_KEY) == null) {
+ val autoDeletePreference =
+ AutoDeleteRangePickerPreference(
+ requireContext(),
+ childFragmentManager,
+ state.autoDeleteRange,
+ logger)
+ mAutoDeleteSection?.addPreference(autoDeletePreference)
+ } else {
+ val autoDeletePreference =
+ mAutoDeleteSection?.findPreference<Preference>(
+ AUTO_DELETE_RANGE_PICKER_PREFERENCE_KEY)
+ as AutoDeleteRangePickerPreference
+ autoDeletePreference.updateAutoDeleteRange(state.autoDeleteRange)
+ }
}
}
}
diff --git a/apk/src/com/android/healthconnect/controller/autodelete/AutoDeleteRangePickerPreference.kt b/apk/src/com/android/healthconnect/controller/autodelete/AutoDeleteRangePickerPreference.kt
index ebe4961..83bcb2e 100644
--- a/apk/src/com/android/healthconnect/controller/autodelete/AutoDeleteRangePickerPreference.kt
+++ b/apk/src/com/android/healthconnect/controller/autodelete/AutoDeleteRangePickerPreference.kt
@@ -41,12 +41,17 @@
constructor(
context: Context,
private val childFragmentManager: FragmentManager,
- private val autoDeleteRange: AutoDeleteRange,
+ private var autoDeleteRange: AutoDeleteRange,
private val logger: HealthConnectLogger
) : Preference(context), RadioGroup.OnCheckedChangeListener {
companion object {
const val SET_TO_NEVER_EVENT = "SET_TO_NEVER_EVENT"
+ const val AUTO_DELETE_RANGE_PICKER_PREFERENCE_KEY = "auto_delete_range_picker"
+ }
+
+ init {
+ key = AUTO_DELETE_RANGE_PICKER_PREFERENCE_KEY
}
override fun onBindViewHolder(holder: PreferenceViewHolder?) {
@@ -139,4 +144,9 @@
override fun onCheckedChanged(radioGroup: RadioGroup, checkedId: Int) {
setToNeverOrAskConfirmation(checkedId)
}
+
+ fun updateAutoDeleteRange(newAutoDeleteRange: AutoDeleteRange) {
+ autoDeleteRange = newAutoDeleteRange
+ notifyChanged()
+ }
}