From 05fad24edaa36c61e0df43721d7265a06da8bfdb Mon Sep 17 00:00:00 2001 From: J-Jamet Date: Wed, 12 Jan 2022 17:01:35 +0100 Subject: [PATCH] Fix color picker fragment --- .../keepass/activities/EntryEditActivity.kt | 3 +- .../dialogs/ColorPickerDialogFragment.kt | 41 +++++++++++++------ 2 files changed, 31 insertions(+), 13 deletions(-) diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt b/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt index 8fb0cad02..3afc45150 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/EntryEditActivity.kt @@ -247,7 +247,8 @@ class EntryEditActivity : DatabaseLockActivity(), } mEntryEditViewModel.requestColorSelection.observe(this) { color -> - ColorPickerDialogFragment().show(supportFragmentManager, "ColorPickerFragment") + ColorPickerDialogFragment.newInstance(color) + .show(supportFragmentManager, "ColorPickerFragment") } mColorPickerViewModel.colorPicked.observe(this) { color -> diff --git a/app/src/main/java/com/kunzisoft/keepass/activities/dialogs/ColorPickerDialogFragment.kt b/app/src/main/java/com/kunzisoft/keepass/activities/dialogs/ColorPickerDialogFragment.kt index e11010cbc..180a81a53 100644 --- a/app/src/main/java/com/kunzisoft/keepass/activities/dialogs/ColorPickerDialogFragment.kt +++ b/app/src/main/java/com/kunzisoft/keepass/activities/dialogs/ColorPickerDialogFragment.kt @@ -19,6 +19,7 @@ class ColorPickerDialogFragment : DatabaseDialogFragment() { private lateinit var chromaColorView: ChromaColorView private var mDefaultColor = Color.WHITE + private var mActivated = false override fun onCreateDialog(savedInstanceState: Bundle?): Dialog { @@ -27,16 +28,25 @@ class ColorPickerDialogFragment : DatabaseDialogFragment() { enableSwitchView = root.findViewById(R.id.switch_element) chromaColorView = root.findViewById(R.id.chroma_color_view) - var activated = false - arguments?.apply { - if (containsKey(ARG_INITIAL_COLOR)) { - mDefaultColor = getInt(ARG_INITIAL_COLOR) + if (savedInstanceState != null) { + if (savedInstanceState.containsKey(ARG_INITIAL_COLOR)) { + mDefaultColor = savedInstanceState.getInt(ARG_INITIAL_COLOR) } - if (containsKey(ARG_ACTIVATED)) { - activated = getBoolean(ARG_ACTIVATED) + if (savedInstanceState.containsKey(ARG_ACTIVATED)) { + mActivated = savedInstanceState.getBoolean(ARG_ACTIVATED) + } + } else { + arguments?.apply { + if (containsKey(ARG_INITIAL_COLOR)) { + mDefaultColor = getInt(ARG_INITIAL_COLOR) + } + if (containsKey(ARG_ACTIVATED)) { + mActivated = getBoolean(ARG_ACTIVATED) + } } } - enableSwitchView.isChecked = activated + enableSwitchView.isChecked = mActivated + chromaColorView.currentColor = mDefaultColor val builder = AlertDialog.Builder(activity) builder.setView(root) @@ -56,6 +66,12 @@ class ColorPickerDialogFragment : DatabaseDialogFragment() { return super.onCreateDialog(savedInstanceState) } + override fun onSaveInstanceState(outState: Bundle) { + super.onSaveInstanceState(outState) + outState.putInt(ARG_INITIAL_COLOR, chromaColorView.currentColor) + outState.putBoolean(ARG_ACTIVATED, mActivated) + } + companion object { private const val ARG_INITIAL_COLOR = "ARG_INITIAL_COLOR" private const val ARG_ACTIVATED = "ARG_ACTIVATED" @@ -63,11 +79,12 @@ class ColorPickerDialogFragment : DatabaseDialogFragment() { fun newInstance( @ColorInt initialColor: Int?, ): ColorPickerDialogFragment { - val colorPickerDialogFragment = ColorPickerDialogFragment() - val args = Bundle() - args.putInt(ARG_INITIAL_COLOR, initialColor ?: Color.WHITE) - args.putBoolean(ARG_ACTIVATED, initialColor != null) - return colorPickerDialogFragment + return ColorPickerDialogFragment().apply { + arguments = Bundle().apply { + putInt(ARG_INITIAL_COLOR, initialColor ?: Color.WHITE) + putBoolean(ARG_ACTIVATED, initialColor != null) + } + } } } } \ No newline at end of file