From a4a78717afdf834fae7981f2f597c4b1277bf0a7 Mon Sep 17 00:00:00 2001 From: mcarare Date: Tue, 3 May 2022 16:57:47 +0300 Subject: [PATCH] For #24919: Add option menu in the address editor. --- .../settings/address/AddressEditorFragment.kt | 32 +++++++++++++++++++ app/src/main/res/menu/address_editor.xml | 20 ++++++++++++ app/src/main/res/values/strings.xml | 4 +++ 3 files changed, 56 insertions(+) create mode 100644 app/src/main/res/menu/address_editor.xml diff --git a/app/src/main/java/org/mozilla/fenix/settings/address/AddressEditorFragment.kt b/app/src/main/java/org/mozilla/fenix/settings/address/AddressEditorFragment.kt index 7f4569d0e..1d2107136 100644 --- a/app/src/main/java/org/mozilla/fenix/settings/address/AddressEditorFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/settings/address/AddressEditorFragment.kt @@ -5,6 +5,9 @@ package org.mozilla.fenix.settings.address import android.os.Bundle +import android.view.Menu +import android.view.MenuInflater +import android.view.MenuItem import android.view.View import androidx.lifecycle.lifecycleScope import androidx.navigation.fragment.findNavController @@ -36,6 +39,8 @@ class AddressEditorFragment : SecureFragment(R.layout.fragment_address_editor) { private val isEditing: Boolean get() = args.address != null + private lateinit var menu: Menu + override fun onViewCreated(view: View, savedInstanceState: Bundle?) { super.onViewCreated(view, savedInstanceState) @@ -50,11 +55,17 @@ class AddressEditorFragment : SecureFragment(R.layout.fragment_address_editor) { ) val binding = FragmentAddressEditorBinding.bind(view) + setHasOptionsMenu(true) addressEditorView = AddressEditorView(binding, interactor, args.address) addressEditorView.bind() } + override fun onPause() { + super.onPause() + menu.close() + } + override fun onResume() { super.onResume() if (isEditing) { @@ -68,4 +79,25 @@ class AddressEditorFragment : SecureFragment(R.layout.fragment_address_editor) { super.onStop() this.view?.hideKeyboard() } + + override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) { + inflater.inflate(R.menu.address_editor, menu) + this.menu = menu + + menu.findItem(R.id.delete_address_button).isVisible = isEditing + } + + override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) { + R.id.delete_address_button -> { + args.address?.let { + addressEditorView.showConfirmDeleteAddressDialog(requireContext(), it.guid) + } + true + } + R.id.save_address_button -> { + addressEditorView.saveAddress() + true + } + else -> false + } } diff --git a/app/src/main/res/menu/address_editor.xml b/app/src/main/res/menu/address_editor.xml new file mode 100644 index 000000000..88b4be47f --- /dev/null +++ b/app/src/main/res/menu/address_editor.xml @@ -0,0 +1,20 @@ + + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index b08b07087..277ce3727 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -1582,6 +1582,10 @@ Delete Cancel + + Save address + + Delete address Add search engine