For #25980: Replace deprecated setHasOptionsMenu with MenuProvider.
This commit is contained in:
parent
2b8b6a9aca
commit
d9d01db7cc
|
@ -16,8 +16,10 @@ import android.view.View
|
|||
import android.view.ViewGroup
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.core.content.getSystemService
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.NavDirections
|
||||
import androidx.navigation.fragment.findNavController
|
||||
|
@ -61,7 +63,7 @@ import org.mozilla.fenix.utils.allowUndo
|
|||
* The screen that displays the user's bookmark list in their Library.
|
||||
*/
|
||||
@Suppress("TooManyFunctions", "LargeClass")
|
||||
class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHandler {
|
||||
class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHandler, MenuProvider {
|
||||
|
||||
private lateinit var bookmarkStore: BookmarkFragmentStore
|
||||
private lateinit var bookmarkView: BookmarkView
|
||||
|
@ -134,6 +136,9 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
|
|||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
|
||||
|
||||
val accountManager = requireComponents.backgroundServices.accountManager
|
||||
consumeFrom(bookmarkStore) {
|
||||
bookmarkView.update(it)
|
||||
|
@ -147,11 +152,6 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
|
|||
}
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setHasOptionsMenu(true)
|
||||
}
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
|
||||
|
@ -176,7 +176,7 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
|
|||
}
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||
when (val mode = bookmarkStore.state.mode) {
|
||||
is BookmarkFragmentState.Mode.Normal -> {
|
||||
if (mode.showMenu) {
|
||||
|
@ -205,7 +205,7 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
|
|||
}
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||
return when (item.itemId) {
|
||||
R.id.bookmark_search -> {
|
||||
bookmarkInteractor.onSearch()
|
||||
|
@ -251,7 +251,8 @@ class BookmarkFragment : LibraryPageFragment<BookmarkNode>(), UserInteractionHan
|
|||
deleteMulti(bookmarkStore.state.mode.selectedItems)
|
||||
true
|
||||
}
|
||||
else -> super.onOptionsItemSelected(item)
|
||||
// other options are not handled by this menu provider
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -10,8 +10,10 @@ import android.view.MenuInflater
|
|||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.View.GONE
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.Navigation
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
|
@ -34,21 +36,18 @@ import org.mozilla.fenix.library.bookmarks.friendlyRootTitle
|
|||
/**
|
||||
* Menu to create a new bookmark folder.
|
||||
*/
|
||||
class AddBookmarkFolderFragment : Fragment(R.layout.fragment_edit_bookmark) {
|
||||
class AddBookmarkFolderFragment : Fragment(R.layout.fragment_edit_bookmark), MenuProvider {
|
||||
private var _binding: FragmentEditBookmarkBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
private val sharedViewModel: BookmarksSharedViewModel by activityViewModels()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setHasOptionsMenu(true)
|
||||
}
|
||||
|
||||
/**
|
||||
* Hides fields for bookmark items present in the shared layout file.
|
||||
*/
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
|
||||
|
||||
_binding = FragmentEditBookmarkBinding.bind(view)
|
||||
|
||||
binding.bookmarkUrlLabel.visibility = GONE
|
||||
|
@ -87,11 +86,11 @@ class AddBookmarkFolderFragment : Fragment(R.layout.fragment_edit_bookmark) {
|
|||
binding.bookmarkNameEdit.hideKeyboard()
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||
inflater.inflate(R.menu.bookmarks_add_folder, menu)
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||
return when (item.itemId) {
|
||||
R.id.confirm_add_folder_button -> {
|
||||
if (binding.bookmarkNameEdit.text.isNullOrBlank()) {
|
||||
|
@ -116,7 +115,8 @@ class AddBookmarkFolderFragment : Fragment(R.layout.fragment_edit_bookmark) {
|
|||
}
|
||||
true
|
||||
}
|
||||
else -> super.onOptionsItemSelected(item)
|
||||
// other options are not handled by this menu provider
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -17,8 +17,10 @@ import androidx.appcompat.app.AlertDialog
|
|||
import androidx.appcompat.app.AppCompatActivity
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.Navigation
|
||||
import androidx.navigation.fragment.findNavController
|
||||
|
@ -53,7 +55,7 @@ import org.mozilla.fenix.library.bookmarks.friendlyRootTitle
|
|||
/**
|
||||
* Menu to edit the name, URL, and location of a bookmark item.
|
||||
*/
|
||||
class EditBookmarkFragment : Fragment(R.layout.fragment_edit_bookmark) {
|
||||
class EditBookmarkFragment : Fragment(R.layout.fragment_edit_bookmark), MenuProvider {
|
||||
private var _binding: FragmentEditBookmarkBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
|
@ -63,13 +65,9 @@ class EditBookmarkFragment : Fragment(R.layout.fragment_edit_bookmark) {
|
|||
private var bookmarkParent: BookmarkNode? = null
|
||||
private var initialParentGuid: String? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setHasOptionsMenu(true)
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
|
||||
|
||||
_binding = FragmentEditBookmarkBinding.bind(view)
|
||||
|
||||
|
@ -191,11 +189,11 @@ class EditBookmarkFragment : Fragment(R.layout.fragment_edit_bookmark) {
|
|||
binding.progressBarBookmark.visibility = View.GONE
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||
inflater.inflate(R.menu.bookmarks_edit, menu)
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||
return when (item.itemId) {
|
||||
R.id.delete_bookmark_button -> {
|
||||
displayDeleteBookmarkDialog()
|
||||
|
@ -206,7 +204,8 @@ class EditBookmarkFragment : Fragment(R.layout.fragment_edit_bookmark) {
|
|||
true
|
||||
}
|
||||
|
||||
else -> super.onOptionsItemSelected(item)
|
||||
// other options are not handled by this menu provider
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -11,8 +11,10 @@ import android.view.MenuInflater
|
|||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.fragment.app.activityViewModels
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
|
@ -29,24 +31,24 @@ import org.mozilla.fenix.ext.showToolbar
|
|||
import org.mozilla.fenix.library.bookmarks.BookmarksSharedViewModel
|
||||
import org.mozilla.fenix.library.bookmarks.DesktopFolders
|
||||
|
||||
class SelectBookmarkFolderFragment : Fragment() {
|
||||
class SelectBookmarkFolderFragment : Fragment(), MenuProvider {
|
||||
private var _binding: FragmentSelectBookmarkFolderBinding? = null
|
||||
private val binding get() = _binding!!
|
||||
|
||||
private val sharedViewModel: BookmarksSharedViewModel by activityViewModels()
|
||||
private var bookmarkNode: BookmarkNode? = null
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setHasOptionsMenu(true)
|
||||
}
|
||||
|
||||
override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
|
||||
_binding = FragmentSelectBookmarkFolderBinding.inflate(inflater, container, false)
|
||||
|
||||
return binding.root
|
||||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
|
||||
}
|
||||
|
||||
override fun onDestroyView() {
|
||||
super.onDestroyView()
|
||||
|
||||
|
@ -72,14 +74,14 @@ class SelectBookmarkFolderFragment : Fragment() {
|
|||
}
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||
val args: SelectBookmarkFolderFragmentArgs by navArgs()
|
||||
if (!args.allowCreatingNewFolder) {
|
||||
inflater.inflate(R.menu.bookmarks_select_folder, menu)
|
||||
}
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||
return when (item.itemId) {
|
||||
R.id.add_folder_button -> {
|
||||
viewLifecycleOwner.lifecycleScope.launch(Main) {
|
||||
|
@ -91,7 +93,8 @@ class SelectBookmarkFolderFragment : Fragment() {
|
|||
}
|
||||
true
|
||||
}
|
||||
else -> super.onOptionsItemSelected(item)
|
||||
// other options are not handled by this menu provider
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -14,6 +14,8 @@ import android.view.MenuItem
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.annotation.VisibleForTesting
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
import kotlinx.coroutines.MainScope
|
||||
|
@ -38,7 +40,7 @@ import org.mozilla.fenix.library.LibraryPageFragment
|
|||
import org.mozilla.fenix.utils.allowUndo
|
||||
|
||||
@SuppressWarnings("TooManyFunctions", "LargeClass")
|
||||
class DownloadFragment : LibraryPageFragment<DownloadItem>(), UserInteractionHandler {
|
||||
class DownloadFragment : LibraryPageFragment<DownloadItem>(), UserInteractionHandler, MenuProvider {
|
||||
private lateinit var downloadStore: DownloadFragmentStore
|
||||
private lateinit var downloadView: DownloadView
|
||||
private lateinit var downloadInteractor: DownloadInteractor
|
||||
|
@ -116,7 +118,6 @@ class DownloadFragment : LibraryPageFragment<DownloadItem>(), UserInteractionHan
|
|||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setHasOptionsMenu(true)
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -140,6 +141,8 @@ class DownloadFragment : LibraryPageFragment<DownloadItem>(), UserInteractionHan
|
|||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
|
||||
|
||||
consumeFrom(downloadStore) {
|
||||
downloadView.update(it)
|
||||
}
|
||||
|
@ -150,7 +153,7 @@ class DownloadFragment : LibraryPageFragment<DownloadItem>(), UserInteractionHan
|
|||
showToolbar(getString(R.string.library_downloads))
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||
val menuRes = when (downloadStore.state.mode) {
|
||||
is DownloadFragmentState.Mode.Normal -> R.menu.library_menu
|
||||
is DownloadFragmentState.Mode.Editing -> R.menu.download_select_multi
|
||||
|
@ -163,7 +166,7 @@ class DownloadFragment : LibraryPageFragment<DownloadItem>(), UserInteractionHan
|
|||
}
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
|
||||
override fun onMenuItemSelected(item: MenuItem): Boolean = when (item.itemId) {
|
||||
R.id.close_history -> {
|
||||
close()
|
||||
true
|
||||
|
@ -181,7 +184,8 @@ class DownloadFragment : LibraryPageFragment<DownloadItem>(), UserInteractionHan
|
|||
}
|
||||
true
|
||||
}
|
||||
else -> super.onOptionsItemSelected(item)
|
||||
// other options are not handled by this menu provider
|
||||
else -> false
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
@ -17,7 +17,9 @@ import android.view.View
|
|||
import android.view.ViewGroup
|
||||
import android.widget.RadioGroup
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.NavDirections
|
||||
import androidx.navigation.fragment.findNavController
|
||||
|
@ -57,7 +59,7 @@ import org.mozilla.fenix.utils.allowUndo
|
|||
import org.mozilla.fenix.GleanMetrics.History as GleanHistory
|
||||
|
||||
@SuppressWarnings("TooManyFunctions", "LargeClass")
|
||||
class HistoryFragment : LibraryPageFragment<History>(), UserInteractionHandler {
|
||||
class HistoryFragment : LibraryPageFragment<History>(), UserInteractionHandler, MenuProvider {
|
||||
private lateinit var historyStore: HistoryFragmentStore
|
||||
private lateinit var historyInteractor: HistoryInteractor
|
||||
private lateinit var historyProvider: DefaultPagedHistoryProvider
|
||||
|
@ -154,8 +156,6 @@ class HistoryFragment : LibraryPageFragment<History>(), UserInteractionHandler {
|
|||
historyProvider = DefaultPagedHistoryProvider(requireComponents.core.historyStorage)
|
||||
|
||||
GleanHistory.opened.record(NoExtras())
|
||||
|
||||
setHasOptionsMenu(true)
|
||||
}
|
||||
|
||||
private fun deleteSnackbar(
|
||||
|
@ -186,6 +186,7 @@ class HistoryFragment : LibraryPageFragment<History>(), UserInteractionHandler {
|
|||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
|
||||
|
||||
consumeFrom(historyStore) {
|
||||
historyView.update(it)
|
||||
|
@ -212,7 +213,7 @@ class HistoryFragment : LibraryPageFragment<History>(), UserInteractionHandler {
|
|||
(activity as NavHostActivity).getSupportActionBarAndInflateIfNecessary().show()
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||
if (historyStore.state.mode is HistoryFragmentState.Mode.Editing) {
|
||||
inflater.inflate(R.menu.history_select_multi, menu)
|
||||
menu.findItem(R.id.share_history_multi_select)?.isVisible = true
|
||||
|
@ -229,7 +230,7 @@ class HistoryFragment : LibraryPageFragment<History>(), UserInteractionHandler {
|
|||
}
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
|
||||
override fun onMenuItemSelected(item: MenuItem): Boolean = when (item.itemId) {
|
||||
R.id.share_history_multi_select -> {
|
||||
val selectedHistory = historyStore.state.mode.selectedItems
|
||||
val shareTabs = mutableListOf<ShareData>()
|
||||
|
@ -294,7 +295,8 @@ class HistoryFragment : LibraryPageFragment<History>(), UserInteractionHandler {
|
|||
historyInteractor.onDeleteTimeRange()
|
||||
true
|
||||
}
|
||||
else -> super.onOptionsItemSelected(item)
|
||||
// other options are not handled by this menu provider
|
||||
else -> false
|
||||
}
|
||||
|
||||
private fun showTabTray() {
|
||||
|
|
|
@ -16,7 +16,9 @@ import android.view.MenuItem
|
|||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.fragment.app.DialogFragment
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
import kotlinx.coroutines.CoroutineScope
|
||||
|
@ -51,7 +53,7 @@ import org.mozilla.fenix.utils.allowUndo
|
|||
*/
|
||||
@SuppressWarnings("TooManyFunctions")
|
||||
class HistoryMetadataGroupFragment :
|
||||
LibraryPageFragment<History.Metadata>(), UserInteractionHandler {
|
||||
LibraryPageFragment<History.Metadata>(), UserInteractionHandler, MenuProvider {
|
||||
|
||||
private lateinit var historyMetadataGroupStore: HistoryMetadataGroupFragmentStore
|
||||
private lateinit var interactor: HistoryMetadataGroupInteractor
|
||||
|
@ -67,11 +69,6 @@ class HistoryMetadataGroupFragment :
|
|||
override val selectedItems: Set<History.Metadata>
|
||||
get() = historyMetadataGroupStore.state.items.filter { it.selected }.toSet()
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setHasOptionsMenu(true)
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
inflater: LayoutInflater,
|
||||
container: ViewGroup?,
|
||||
|
@ -121,6 +118,8 @@ class HistoryMetadataGroupFragment :
|
|||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
|
||||
|
||||
consumeFrom(historyMetadataGroupStore) { state ->
|
||||
historyMetadataGroupView.update(state)
|
||||
activity?.invalidateOptionsMenu()
|
||||
|
@ -150,7 +149,7 @@ class HistoryMetadataGroupFragment :
|
|||
|
||||
override fun onBackPressed(): Boolean = interactor.onBackPressed(selectedItems)
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||
if (selectedItems.isNotEmpty()) {
|
||||
inflater.inflate(R.menu.history_select_multi, menu)
|
||||
|
||||
|
@ -164,7 +163,7 @@ class HistoryMetadataGroupFragment :
|
|||
}
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||
return when (item.itemId) {
|
||||
R.id.share_history_multi_select -> {
|
||||
interactor.onShareMenuItem(selectedItems)
|
||||
|
@ -199,7 +198,8 @@ class HistoryMetadataGroupFragment :
|
|||
interactor.onDeleteAll()
|
||||
true
|
||||
}
|
||||
else -> super.onOptionsItemSelected(item)
|
||||
// other options are not handled by this menu provider
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -12,6 +12,8 @@ import android.view.MenuInflater
|
|||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import kotlinx.coroutines.flow.collect
|
||||
|
@ -35,7 +37,10 @@ import org.mozilla.fenix.ext.showToolbar
|
|||
import org.mozilla.fenix.library.LibraryPageFragment
|
||||
|
||||
@Suppress("TooManyFunctions")
|
||||
class RecentlyClosedFragment : LibraryPageFragment<RecoverableTab>(), UserInteractionHandler {
|
||||
class RecentlyClosedFragment :
|
||||
LibraryPageFragment<RecoverableTab>(),
|
||||
UserInteractionHandler,
|
||||
MenuProvider {
|
||||
private lateinit var recentlyClosedFragmentStore: RecentlyClosedFragmentStore
|
||||
private var _recentlyClosedFragmentView: RecentlyClosedFragmentView? = null
|
||||
private val recentlyClosedFragmentView: RecentlyClosedFragmentView
|
||||
|
@ -49,7 +54,7 @@ class RecentlyClosedFragment : LibraryPageFragment<RecoverableTab>(), UserIntera
|
|||
showToolbar(getString(R.string.library_recently_closed_tabs))
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||
if (recentlyClosedFragmentStore.state.selectedTabs.isNotEmpty()) {
|
||||
inflater.inflate(R.menu.history_select_multi, menu)
|
||||
menu.findItem(R.id.delete_history_multi_select)?.let { deleteItem ->
|
||||
|
@ -61,7 +66,7 @@ class RecentlyClosedFragment : LibraryPageFragment<RecoverableTab>(), UserIntera
|
|||
}
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||
val selectedTabs = recentlyClosedFragmentStore.state.selectedTabs
|
||||
|
||||
return when (item.itemId) {
|
||||
|
@ -86,13 +91,13 @@ class RecentlyClosedFragment : LibraryPageFragment<RecoverableTab>(), UserIntera
|
|||
recentlyClosedController.handleOpen(selectedTabs, BrowsingMode.Private)
|
||||
true
|
||||
}
|
||||
else -> super.onOptionsItemSelected(item)
|
||||
// other options are not handled by this menu provider
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setHasOptionsMenu(true)
|
||||
RecentlyClosedTabs.opened.record(NoExtras())
|
||||
}
|
||||
|
||||
|
@ -144,6 +149,8 @@ class RecentlyClosedFragment : LibraryPageFragment<RecoverableTab>(), UserIntera
|
|||
}
|
||||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
|
||||
|
||||
consumeFrom(recentlyClosedFragmentStore) { state ->
|
||||
recentlyClosedFragmentView.update(state)
|
||||
activity?.invalidateOptionsMenu()
|
||||
|
|
|
@ -9,6 +9,8 @@ import android.view.Menu
|
|||
import android.view.MenuInflater
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
|
@ -27,7 +29,7 @@ import org.mozilla.fenix.settings.address.view.AddressEditorView
|
|||
/**
|
||||
* Displays an address editor for adding and editing an address.
|
||||
*/
|
||||
class AddressEditorFragment : SecureFragment(R.layout.fragment_address_editor) {
|
||||
class AddressEditorFragment : SecureFragment(R.layout.fragment_address_editor), MenuProvider {
|
||||
|
||||
private lateinit var addressEditorView: AddressEditorView
|
||||
private lateinit var interactor: AddressEditorInteractor
|
||||
|
@ -44,6 +46,7 @@ class AddressEditorFragment : SecureFragment(R.layout.fragment_address_editor) {
|
|||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
|
||||
|
||||
val storage = requireContext().components.core.autofillStorage
|
||||
|
||||
|
@ -56,7 +59,6 @@ class AddressEditorFragment : SecureFragment(R.layout.fragment_address_editor) {
|
|||
)
|
||||
|
||||
val binding = FragmentAddressEditorBinding.bind(view)
|
||||
setHasOptionsMenu(true)
|
||||
|
||||
val searchRegion = requireComponents.core.store.state.search.region
|
||||
addressEditorView = AddressEditorView(binding, interactor, searchRegion, args.address)
|
||||
|
@ -82,14 +84,14 @@ class AddressEditorFragment : SecureFragment(R.layout.fragment_address_editor) {
|
|||
this.view?.hideKeyboard()
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
override fun onCreateMenu(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) {
|
||||
override fun onMenuItemSelected(item: MenuItem): Boolean = when (item.itemId) {
|
||||
R.id.delete_address_button -> {
|
||||
args.address?.let {
|
||||
addressEditorView.showConfirmDeleteAddressDialog(requireContext(), it.guid)
|
||||
|
|
|
@ -8,11 +8,14 @@ import android.os.Bundle
|
|||
import android.view.LayoutInflater
|
||||
import android.view.Menu
|
||||
import android.view.MenuInflater
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.inputmethod.EditorInfo
|
||||
import androidx.appcompat.widget.SearchView
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import mozilla.components.lib.state.ext.consumeFrom
|
||||
import mozilla.components.support.ktx.android.view.hideKeyboard
|
||||
import mozilla.components.support.locale.LocaleUseCases
|
||||
|
@ -22,7 +25,7 @@ import org.mozilla.fenix.databinding.FragmentLocaleSettingsBinding
|
|||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.showToolbar
|
||||
|
||||
class LocaleSettingsFragment : Fragment() {
|
||||
class LocaleSettingsFragment : Fragment(), MenuProvider {
|
||||
|
||||
private lateinit var localeSettingsStore: LocaleSettingsStore
|
||||
private lateinit var interactor: LocaleSettingsInteractor
|
||||
|
@ -33,7 +36,6 @@ class LocaleSettingsFragment : Fragment() {
|
|||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setHasOptionsMenu(true)
|
||||
}
|
||||
|
||||
override fun onCreateView(
|
||||
|
@ -63,7 +65,7 @@ class LocaleSettingsFragment : Fragment() {
|
|||
return view
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||
inflater.inflate(R.menu.languages_list, menu)
|
||||
val searchItem = menu.findItem(R.id.search)
|
||||
val searchView: SearchView = searchItem.actionView as SearchView
|
||||
|
@ -85,6 +87,8 @@ class LocaleSettingsFragment : Fragment() {
|
|||
)
|
||||
}
|
||||
|
||||
override fun onMenuItemSelected(menuItem: MenuItem): Boolean = false
|
||||
|
||||
override fun onResume() {
|
||||
super.onResume()
|
||||
localeView.onResume()
|
||||
|
@ -98,6 +102,8 @@ class LocaleSettingsFragment : Fragment() {
|
|||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
|
||||
|
||||
consumeFrom(localeSettingsStore) {
|
||||
localeView.update(it)
|
||||
}
|
||||
|
|
|
@ -11,6 +11,8 @@ import android.view.MenuInflater
|
|||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
|
@ -34,7 +36,9 @@ import org.mozilla.fenix.settings.creditcards.view.CreditCardEditorView
|
|||
/**
|
||||
* Display a credit card editor for adding and editing a credit card.
|
||||
*/
|
||||
class CreditCardEditorFragment : SecureFragment(R.layout.fragment_credit_card_editor) {
|
||||
class CreditCardEditorFragment :
|
||||
SecureFragment(R.layout.fragment_credit_card_editor),
|
||||
MenuProvider {
|
||||
|
||||
private lateinit var creditCardEditorState: CreditCardEditorState
|
||||
private lateinit var creditCardEditorView: CreditCardEditorView
|
||||
|
@ -55,7 +59,7 @@ class CreditCardEditorFragment : SecureFragment(R.layout.fragment_credit_card_ed
|
|||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
setHasOptionsMenu(true)
|
||||
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
|
||||
|
||||
val storage = requireContext().components.core.autofillStorage
|
||||
interactor = DefaultCreditCardEditorInteractor(
|
||||
|
@ -112,7 +116,7 @@ class CreditCardEditorFragment : SecureFragment(R.layout.fragment_credit_card_ed
|
|||
super.onPause()
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||
inflater.inflate(R.menu.credit_card_editor, menu)
|
||||
this.menu = menu
|
||||
|
||||
|
@ -120,7 +124,7 @@ class CreditCardEditorFragment : SecureFragment(R.layout.fragment_credit_card_ed
|
|||
}
|
||||
|
||||
@Suppress("MagicNumber")
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
|
||||
override fun onMenuItemSelected(item: MenuItem): Boolean = when (item.itemId) {
|
||||
R.id.delete_credit_card_button -> {
|
||||
args.creditCard?.let { interactor.onDeleteCardButtonClicked(it.guid) }
|
||||
true
|
||||
|
|
|
@ -15,8 +15,10 @@ import android.view.MenuInflater
|
|||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import mozilla.components.lib.state.ext.consumeFrom
|
||||
|
@ -40,7 +42,7 @@ import org.mozilla.fenix.settings.logins.interactor.AddLoginInteractor
|
|||
* Displays the editable new login information for a single website
|
||||
*/
|
||||
@Suppress("TooManyFunctions", "NestedBlockDepth", "ForbiddenComment")
|
||||
class AddLoginFragment : Fragment(R.layout.fragment_add_login) {
|
||||
class AddLoginFragment : Fragment(R.layout.fragment_add_login), MenuProvider {
|
||||
|
||||
private lateinit var loginsFragmentStore: LoginsFragmentStore
|
||||
private lateinit var interactor: AddLoginInteractor
|
||||
|
@ -57,7 +59,7 @@ class AddLoginFragment : Fragment(R.layout.fragment_add_login) {
|
|||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
setHasOptionsMenu(true)
|
||||
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
|
||||
|
||||
_binding = FragmentAddLoginBinding.bind(view)
|
||||
|
||||
|
@ -332,7 +334,7 @@ class AddLoginFragment : Fragment(R.layout.fragment_add_login) {
|
|||
activity?.invalidateOptionsMenu()
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||
inflater.inflate(R.menu.login_save, menu)
|
||||
}
|
||||
|
||||
|
@ -356,7 +358,7 @@ class AddLoginFragment : Fragment(R.layout.fragment_add_login) {
|
|||
showToolbar(getString(R.string.add_login))
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
|
||||
override fun onMenuItemSelected(item: MenuItem): Boolean = when (item.itemId) {
|
||||
R.id.save_login_button -> {
|
||||
view?.hideKeyboard()
|
||||
interactor.onAddLogin(
|
||||
|
|
|
@ -14,8 +14,10 @@ import android.view.MenuInflater
|
|||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.core.view.isVisible
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
|
@ -42,7 +44,7 @@ import org.mozilla.fenix.settings.logins.togglePasswordReveal
|
|||
* Displays the editable saved login information for a single website
|
||||
*/
|
||||
@Suppress("TooManyFunctions", "NestedBlockDepth", "ForbiddenComment")
|
||||
class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
|
||||
class EditLoginFragment : Fragment(R.layout.fragment_edit_login), MenuProvider {
|
||||
|
||||
private val args by navArgs<EditLoginFragmentArgs>()
|
||||
private lateinit var loginsFragmentStore: LoginsFragmentStore
|
||||
|
@ -62,7 +64,7 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
|
|||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
setHasOptionsMenu(true)
|
||||
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
|
||||
|
||||
_binding = FragmentEditLoginBinding.bind(view)
|
||||
|
||||
|
@ -278,7 +280,7 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
|
|||
activity?.invalidateOptionsMenu()
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||
inflater.inflate(R.menu.login_save, menu)
|
||||
}
|
||||
|
||||
|
@ -299,7 +301,7 @@ class EditLoginFragment : Fragment(R.layout.fragment_edit_login) {
|
|||
super.onPause()
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
|
||||
override fun onMenuItemSelected(item: MenuItem): Boolean = when (item.itemId) {
|
||||
R.id.save_login_button -> {
|
||||
view?.hideKeyboard()
|
||||
interactor.onSaveLogin(
|
||||
|
|
|
@ -15,6 +15,8 @@ import android.view.View
|
|||
import android.view.ViewGroup
|
||||
import androidx.annotation.StringRes
|
||||
import androidx.appcompat.app.AlertDialog
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
|
@ -47,7 +49,7 @@ import org.mozilla.fenix.settings.logins.view.LoginDetailsBindingDelegate
|
|||
* Displays saved login information for a single website.
|
||||
*/
|
||||
@Suppress("TooManyFunctions", "ForbiddenComment")
|
||||
class LoginDetailFragment : SecureFragment(R.layout.fragment_login_detail) {
|
||||
class LoginDetailFragment : SecureFragment(R.layout.fragment_login_detail), MenuProvider {
|
||||
|
||||
private val args by navArgs<LoginDetailFragmentArgs>()
|
||||
private var login: SavedLogin? = null
|
||||
|
@ -79,6 +81,7 @@ class LoginDetailFragment : SecureFragment(R.layout.fragment_login_detail) {
|
|||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
|
||||
|
||||
interactor = LoginDetailInteractor(
|
||||
SavedLoginsStorageController(
|
||||
|
@ -103,11 +106,6 @@ class LoginDetailFragment : SecureFragment(R.layout.fragment_login_detail) {
|
|||
togglePasswordReveal(binding.passwordText, binding.revealPasswordButton)
|
||||
}
|
||||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setHasOptionsMenu(true)
|
||||
}
|
||||
|
||||
/**
|
||||
* As described in #10727, the User should re-auth if the fragment is paused and the user is not
|
||||
* navigating to SavedLoginsFragment or EditLoginFragment
|
||||
|
@ -157,12 +155,12 @@ class LoginDetailFragment : SecureFragment(R.layout.fragment_login_detail) {
|
|||
)
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||
inflater.inflate(R.menu.login_options_menu, menu)
|
||||
this.menu = menu
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean = when (item.itemId) {
|
||||
override fun onMenuItemSelected(item: MenuItem): Boolean = when (item.itemId) {
|
||||
R.id.delete_login_button -> {
|
||||
displayDeleteLoginDialog()
|
||||
true
|
||||
|
|
|
@ -8,6 +8,7 @@ import android.os.Bundle
|
|||
import android.view.LayoutInflater
|
||||
import android.view.Menu
|
||||
import android.view.MenuInflater
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.view.inputmethod.EditorInfo
|
||||
|
@ -16,6 +17,8 @@ import androidx.appcompat.app.AppCompatActivity
|
|||
import androidx.appcompat.widget.SearchView
|
||||
import androidx.appcompat.widget.Toolbar
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import mozilla.components.concept.menu.MenuController
|
||||
|
@ -42,7 +45,7 @@ import org.mozilla.fenix.settings.logins.interactor.SavedLoginsInteractor
|
|||
import org.mozilla.fenix.settings.logins.view.SavedLoginsListView
|
||||
|
||||
@SuppressWarnings("TooManyFunctions")
|
||||
class SavedLoginsFragment : SecureFragment() {
|
||||
class SavedLoginsFragment : SecureFragment(), MenuProvider {
|
||||
private lateinit var savedLoginsStore: LoginsFragmentStore
|
||||
private lateinit var savedLoginsListView: SavedLoginsListView
|
||||
private lateinit var savedLoginsInteractor: SavedLoginsInteractor
|
||||
|
@ -108,7 +111,7 @@ class SavedLoginsFragment : SecureFragment() {
|
|||
}
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||
inflater.inflate(R.menu.login_list, menu)
|
||||
val searchItem = menu.findItem(R.id.search)
|
||||
val searchView: SearchView = searchItem.actionView as SearchView
|
||||
|
@ -134,6 +137,8 @@ class SavedLoginsFragment : SecureFragment() {
|
|||
)
|
||||
}
|
||||
|
||||
override fun onMenuItemSelected(menuItem: MenuItem): Boolean = false
|
||||
|
||||
/**
|
||||
* If we pause this fragment, we want to pop users back to reauth
|
||||
*/
|
||||
|
@ -160,7 +165,7 @@ class SavedLoginsFragment : SecureFragment() {
|
|||
) = (activity as HomeActivity).openToBrowserAndLoad(searchTermOrURL, newTab, from)
|
||||
|
||||
private fun initToolbar() {
|
||||
setHasOptionsMenu(true)
|
||||
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
|
||||
showToolbar(getString(R.string.preferences_passwords_saved_logins))
|
||||
(activity as HomeActivity).getSupportActionBarAndInflateIfNecessary()
|
||||
.setDisplayShowTitleEnabled(false)
|
||||
|
|
|
@ -18,7 +18,9 @@ import android.widget.CompoundButton
|
|||
import android.widget.LinearLayout
|
||||
import android.widget.RadioButton
|
||||
import androidx.constraintlayout.widget.ConstraintLayout
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import kotlinx.coroutines.Dispatchers.IO
|
||||
|
@ -45,7 +47,8 @@ import org.mozilla.fenix.settings.SupportUtils
|
|||
@SuppressWarnings("LargeClass", "TooManyFunctions")
|
||||
class AddSearchEngineFragment :
|
||||
Fragment(R.layout.fragment_add_search_engine),
|
||||
CompoundButton.OnCheckedChangeListener {
|
||||
CompoundButton.OnCheckedChangeListener,
|
||||
MenuProvider {
|
||||
private var availableEngines: List<SearchEngine> = listOf()
|
||||
private var selectedIndex: Int = -1
|
||||
private val engineViews = mutableListOf<View>()
|
||||
|
@ -56,7 +59,6 @@ class AddSearchEngineFragment :
|
|||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setHasOptionsMenu(true)
|
||||
|
||||
availableEngines = requireContext()
|
||||
.components
|
||||
|
@ -71,6 +73,8 @@ class AddSearchEngineFragment :
|
|||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
|
||||
|
||||
val layoutInflater = LayoutInflater.from(context)
|
||||
val layoutParams = ViewGroup.LayoutParams(
|
||||
ViewGroup.LayoutParams.MATCH_PARENT,
|
||||
|
@ -125,11 +129,11 @@ class AddSearchEngineFragment :
|
|||
_binding = null
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||
inflater.inflate(R.menu.add_custom_searchengine_menu, menu)
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||
return when (item.itemId) {
|
||||
R.id.add_search_engine -> {
|
||||
when (selectedIndex) {
|
||||
|
@ -143,7 +147,8 @@ class AddSearchEngineFragment :
|
|||
|
||||
true
|
||||
}
|
||||
else -> super.onOptionsItemSelected(item)
|
||||
// other options are not handled by this menu provider
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -9,7 +9,9 @@ import android.view.Menu
|
|||
import android.view.MenuInflater
|
||||
import android.view.MenuItem
|
||||
import android.view.View
|
||||
import androidx.core.view.MenuProvider
|
||||
import androidx.fragment.app.Fragment
|
||||
import androidx.lifecycle.Lifecycle
|
||||
import androidx.lifecycle.lifecycleScope
|
||||
import androidx.navigation.fragment.findNavController
|
||||
import androidx.navigation.fragment.navArgs
|
||||
|
@ -32,7 +34,7 @@ import org.mozilla.fenix.settings.SupportUtils
|
|||
/**
|
||||
* Fragment to enter a custom search engine name and URL template.
|
||||
*/
|
||||
class EditCustomSearchEngineFragment : Fragment(R.layout.fragment_add_search_engine) {
|
||||
class EditCustomSearchEngineFragment : Fragment(R.layout.fragment_add_search_engine), MenuProvider {
|
||||
|
||||
private val args by navArgs<EditCustomSearchEngineFragmentArgs>()
|
||||
private lateinit var searchEngine: SearchEngine
|
||||
|
@ -43,7 +45,6 @@ class EditCustomSearchEngineFragment : Fragment(R.layout.fragment_add_search_eng
|
|||
|
||||
override fun onCreate(savedInstanceState: Bundle?) {
|
||||
super.onCreate(savedInstanceState)
|
||||
setHasOptionsMenu(true)
|
||||
|
||||
searchEngine = requireNotNull(
|
||||
requireComponents.core.store.state.search.customSearchEngines.find { engine ->
|
||||
|
@ -54,6 +55,7 @@ class EditCustomSearchEngineFragment : Fragment(R.layout.fragment_add_search_eng
|
|||
|
||||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
requireActivity().addMenuProvider(this, viewLifecycleOwner, Lifecycle.State.RESUMED)
|
||||
|
||||
val url = searchEngine.resultUrls[0]
|
||||
|
||||
|
@ -85,17 +87,18 @@ class EditCustomSearchEngineFragment : Fragment(R.layout.fragment_add_search_eng
|
|||
_binding = null
|
||||
}
|
||||
|
||||
override fun onCreateOptionsMenu(menu: Menu, inflater: MenuInflater) {
|
||||
override fun onCreateMenu(menu: Menu, inflater: MenuInflater) {
|
||||
inflater.inflate(R.menu.edit_custom_searchengine_menu, menu)
|
||||
}
|
||||
|
||||
override fun onOptionsItemSelected(item: MenuItem): Boolean {
|
||||
override fun onMenuItemSelected(item: MenuItem): Boolean {
|
||||
return when (item.itemId) {
|
||||
R.id.save_button -> {
|
||||
saveCustomEngine()
|
||||
true
|
||||
}
|
||||
else -> super.onOptionsItemSelected(item)
|
||||
// other options are not handled by this menu provider
|
||||
else -> false
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -6,11 +6,12 @@
|
|||
<ID>FunctionOnlyReturningConstant:MetricsUtils.kt$MetricsUtils$ @VisibleForTesting(otherwise = VisibleForTesting.PRIVATE) internal fun getHashingSalt(): String</ID>
|
||||
<ID>FunctionOnlyReturningConstant:SupportUtils.kt$SupportUtils$fun getFirefoxAccountSumoUrl(): String</ID>
|
||||
<ID>FunctionParameterNaming:FenixSnackbar.kt$FenixSnackbar.Companion$_view: View?</ID>
|
||||
<ID>LongParameterList:BrowserToolbarController.kt$DefaultBrowserToolbarController$( private val store: BrowserStore, private val tabsUseCases: TabsUseCases, private val activity: HomeActivity, private val navController: NavController, private val readerModeController: ReaderModeController, private val engineView: EngineView, private val homeViewModel: HomeScreenViewModel, private val customTabSessionId: String?, private val browserAnimator: BrowserAnimator, private val onTabCounterClicked: () -> Unit, private val onCloseTab: (SessionState) -> Unit, )</ID>
|
||||
<ID>LongParameterList:BrowserToolbarMenuController.kt$DefaultBrowserToolbarMenuController$( private val store: BrowserStore, private val activity: HomeActivity, private val navController: NavController, private val settings: Settings, private val readerModeController: ReaderModeController, private val sessionFeature: ViewBoundFeatureWrapper<SessionFeature>, private val findInPageLauncher: () -> Unit, private val browserAnimator: BrowserAnimator, private val swipeRefresh: SwipeRefreshLayout, private val customTabSessionId: String?, private val openInFenixIntent: Intent, private val bookmarkTapped: (String, String) -> Unit, private val scope: CoroutineScope, private val tabCollectionStorage: TabCollectionStorage, private val topSitesStorage: DefaultTopSitesStorage, private val pinnedSiteStorage: PinnedSiteStorage, private val browserStore: BrowserStore, )</ID>
|
||||
<ID>LongParameterList:CrashContentIntegration.kt$CrashContentIntegration$( private val browserStore: BrowserStore, private val appStore: AppStore, private val toolbar: BrowserToolbar, private val isToolbarPlacedAtTop: Boolean, private val crashReporterView: CrashContentView, private val components: Components, private val settings: Settings, private val navController: NavController, private val sessionId: String?, )</ID>
|
||||
<ID>LongParameterList:CustomTabsIntegration.kt$CustomTabsIntegration$( store: BrowserStore, useCases: CustomTabsUseCases, toolbar: BrowserToolbar, sessionId: String, activity: Activity, onItemTapped: (ToolbarMenu.Item) -> Unit = {}, shouldReverseItems: Boolean, isPrivate: Boolean, )</ID>
|
||||
<ID>LongParameterList:DeleteBrowsingDataController.kt$DefaultDeleteBrowsingDataController$( private val removeAllTabs: TabsUseCases.RemoveAllTabsUseCase, private val removeAllDownloads: DownloadsUseCases.RemoveAllDownloadsUseCase, private val historyStorage: HistoryStorage, private val permissionStorage: PermissionStorage, private val store: BrowserStore, private val iconsStorage: BrowserIcons, private val engine: Engine, private val coroutineContext: CoroutineContext = Dispatchers.Main, )</ID>
|
||||
<ID>LongParameterList:BrowserToolbarController.kt$DefaultBrowserToolbarController$( private val store: BrowserStore, private val tabsUseCases: TabsUseCases, private val activity: HomeActivity, private val navController: NavController, private val readerModeController: ReaderModeController, private val engineView: EngineView, private val homeViewModel: HomeScreenViewModel, private val customTabSessionId: String?, private val browserAnimator: BrowserAnimator, private val onTabCounterClicked: () -> Unit, private val onCloseTab: (SessionState) -> Unit )</ID>
|
||||
<ID>LongParameterList:BrowserToolbarMenuController.kt$DefaultBrowserToolbarMenuController$( private val store: BrowserStore, private val activity: HomeActivity, private val navController: NavController, private val settings: Settings, private val readerModeController: ReaderModeController, private val sessionFeature: ViewBoundFeatureWrapper<SessionFeature>, private val findInPageLauncher: () -> Unit, private val browserAnimator: BrowserAnimator, private val swipeRefresh: SwipeRefreshLayout, private val customTabSessionId: String?, private val openInFenixIntent: Intent, private val bookmarkTapped: (String, String) -> Unit, private val scope: CoroutineScope, private val tabCollectionStorage: TabCollectionStorage, private val topSitesStorage: DefaultTopSitesStorage, private val pinnedSiteStorage: PinnedSiteStorage, private val browserStore: BrowserStore )</ID>
|
||||
<ID>LongParameterList:CrashContentIntegration.kt$CrashContentIntegration$( private val browserStore: BrowserStore, private val appStore: AppStore, private val toolbar: BrowserToolbar, private val isToolbarPlacedAtTop: Boolean, private val crashReporterView: CrashContentView, private val components: Components, private val settings: Settings, private val navController: NavController, private val sessionId: String? )</ID>
|
||||
<ID>LongParameterList:CustomTabsIntegration.kt$CustomTabsIntegration$( store: BrowserStore, useCases: CustomTabsUseCases, toolbar: BrowserToolbar, sessionId: String, activity: Activity, onItemTapped: (ToolbarMenu.Item) -> Unit = {}, shouldReverseItems: Boolean, isPrivate: Boolean )</ID>
|
||||
<ID>LongParameterList:DeleteBrowsingDataController.kt$DefaultDeleteBrowsingDataController$( private val removeAllTabs: TabsUseCases.RemoveAllTabsUseCase, private val removeAllDownloads: DownloadsUseCases.RemoveAllDownloadsUseCase, private val historyStorage: HistoryStorage, private val permissionStorage: PermissionStorage, private val store: BrowserStore, private val iconsStorage: BrowserIcons, private val engine: Engine, private val coroutineContext: CoroutineContext = Dispatchers.Main )</ID>
|
||||
<ID>LongParameterList:HistoryController.kt$DefaultHistoryController$( private val store: HistoryFragmentStore, private val navController: NavController, private val scope: CoroutineScope, private val openToBrowser: (item: History.Regular) -> Unit, private val displayDeleteAll: () -> Unit, private val invalidateOptionsMenu: () -> Unit, private val deleteHistoryItems: (Set<History>) -> Unit, private val syncHistory: suspend () -> Unit, private val metrics: MetricController )</ID>
|
||||
<ID>LongParameterList:QuickSettingsController.kt$DefaultQuickSettingsController$( private val context: Context, private val quickSettingsStore: QuickSettingsFragmentStore, private val browserStore: BrowserStore, private val ioScope: CoroutineScope, private val navController: NavController, @VisibleForTesting internal val sessionId: String, @VisibleForTesting internal var sitePermissions: SitePermissions?, private val settings: Settings, private val permissionStorage: PermissionStorage, private val reload: ReloadUrlUseCase, private val requestRuntimePermissions: OnNeedToRequestPermissions = { }, private val displayPermissions: () -> Unit, private val engine: Engine = context.components.core.engine, )</ID>
|
||||
<ID>LongParameterList:ShareController.kt$DefaultShareController$( private val context: Context, private val shareSubject: String?, private val shareData: List<ShareData>, private val sendTabUseCases: SendTabUseCases, private val snackbar: FenixSnackbar, private val navController: NavController, private val recentAppsStorage: RecentAppsStorage, private val viewLifecycleScope: CoroutineScope, private val dispatcher: CoroutineDispatcher = Dispatchers.IO, private val dismiss: (ShareController.Result) -> Unit, )</ID>
|
||||
<ID>LongParameterList:TabsTrayController.kt$DefaultTabsTrayController$( private val trayStore: TabsTrayStore, private val browserStore: BrowserStore, private val browsingModeManager: BrowsingModeManager, private val navController: NavController, private val navigateToHomeAndDeleteSession: (String) -> Unit, private val profiler: Profiler?, private val navigationInteractor: NavigationInteractor, private val tabsUseCases: TabsUseCases, private val selectTabPosition: (Int, Boolean) -> Unit, private val dismissTray: () -> Unit, private val showUndoSnackbarForTab: (Boolean) -> Unit, @VisibleForTesting internal val showCancelledDownloadWarning: (downloadCount: Int, tabId: String?, source: String?) -> Unit, )</ID>
|
||||
|
@ -46,7 +47,7 @@
|
|||
<ID>UndocumentedPublicClass:AccountSettingsInteractor.kt$AccountSettingsUserActions</ID>
|
||||
<ID>UndocumentedPublicClass:AccountUiView.kt$AccountUiView</ID>
|
||||
<ID>UndocumentedPublicClass:ActivationPing.kt$ActivationPing</ID>
|
||||
<ID>UndocumentedPublicClass:AddSearchEngineFragment.kt$AddSearchEngineFragment : FragmentOnCheckedChangeListener</ID>
|
||||
<ID>UndocumentedPublicClass:AddSearchEngineFragment.kt$AddSearchEngineFragment : FragmentOnCheckedChangeListenerMenuProvider</ID>
|
||||
<ID>UndocumentedPublicClass:AddonDetailsBindingDelegate.kt$AddonDetailsInteractor</ID>
|
||||
<ID>UndocumentedPublicClass:AddonPermissionDetailsBindingDelegate.kt$AddonPermissionsDetailsInteractor</ID>
|
||||
<ID>UndocumentedPublicClass:AdjustMetricsService.kt$AdjustMetricsService : MetricsService</ID>
|
||||
|
@ -145,7 +146,7 @@
|
|||
<ID>UndocumentedPublicClass:DownloadAdapter.kt$DownloadAdapter : AdapterSelectionHolder</ID>
|
||||
<ID>UndocumentedPublicClass:DownloadController.kt$DefaultDownloadController : DownloadController</ID>
|
||||
<ID>UndocumentedPublicClass:DownloadController.kt$DownloadController</ID>
|
||||
<ID>UndocumentedPublicClass:DownloadFragment.kt$DownloadFragment : LibraryPageFragmentUserInteractionHandler</ID>
|
||||
<ID>UndocumentedPublicClass:DownloadFragment.kt$DownloadFragment : LibraryPageFragmentUserInteractionHandlerMenuProvider</ID>
|
||||
<ID>UndocumentedPublicClass:DownloadFragmentStore.kt$DownloadFragmentAction$AddItemForRemoval : DownloadFragmentAction</ID>
|
||||
<ID>UndocumentedPublicClass:DownloadFragmentStore.kt$DownloadFragmentAction$AddPendingDeletionSet : DownloadFragmentAction</ID>
|
||||
<ID>UndocumentedPublicClass:DownloadFragmentStore.kt$DownloadFragmentAction$EnterDeletionMode : DownloadFragmentAction</ID>
|
||||
|
@ -180,7 +181,7 @@
|
|||
<ID>UndocumentedPublicClass:GroupableRadioButton.kt$GroupableRadioButton</ID>
|
||||
<ID>UndocumentedPublicClass:HistoryController.kt$DefaultHistoryController : HistoryController</ID>
|
||||
<ID>UndocumentedPublicClass:HistoryController.kt$HistoryController</ID>
|
||||
<ID>UndocumentedPublicClass:HistoryFragment.kt$HistoryFragment : LibraryPageFragmentUserInteractionHandler</ID>
|
||||
<ID>UndocumentedPublicClass:HistoryFragment.kt$HistoryFragment : LibraryPageFragmentUserInteractionHandlerMenuProvider</ID>
|
||||
<ID>UndocumentedPublicClass:HistoryFragmentStore.kt$HistoryFragmentAction$AddItemForRemoval : HistoryFragmentAction</ID>
|
||||
<ID>UndocumentedPublicClass:HistoryFragmentStore.kt$HistoryFragmentAction$EnterDeletionMode : HistoryFragmentAction</ID>
|
||||
<ID>UndocumentedPublicClass:HistoryFragmentStore.kt$HistoryFragmentAction$ExitDeletionMode : HistoryFragmentAction</ID>
|
||||
|
@ -229,7 +230,7 @@
|
|||
<ID>UndocumentedPublicClass:LocaleAdapter.kt$LocaleAdapter : Adapter</ID>
|
||||
<ID>UndocumentedPublicClass:LocaleAdapter.kt$LocaleAdapter$ItemType</ID>
|
||||
<ID>UndocumentedPublicClass:LocaleAdapter.kt$LocaleAdapter$LocaleDiffUtil : Callback</ID>
|
||||
<ID>UndocumentedPublicClass:LocaleSettingsFragment.kt$LocaleSettingsFragment : Fragment</ID>
|
||||
<ID>UndocumentedPublicClass:LocaleSettingsFragment.kt$LocaleSettingsFragment : FragmentMenuProvider</ID>
|
||||
<ID>UndocumentedPublicClass:LocaleSettingsInteractor.kt$LocaleSettingsInteractor : LocaleSettingsViewInteractor</ID>
|
||||
<ID>UndocumentedPublicClass:LocaleSettingsStore.kt$LocaleSettingsAction$Search : LocaleSettingsAction</ID>
|
||||
<ID>UndocumentedPublicClass:LocaleSettingsStore.kt$LocaleSettingsAction$Select : LocaleSettingsAction</ID>
|
||||
|
@ -309,7 +310,7 @@
|
|||
<ID>UndocumentedPublicClass:RecentlyClosedAdapter.kt$RecentlyClosedAdapter : ListAdapterSelectionHolder</ID>
|
||||
<ID>UndocumentedPublicClass:RecentlyClosedController.kt$DefaultRecentlyClosedController : RecentlyClosedController</ID>
|
||||
<ID>UndocumentedPublicClass:RecentlyClosedController.kt$RecentlyClosedController</ID>
|
||||
<ID>UndocumentedPublicClass:RecentlyClosedFragment.kt$RecentlyClosedFragment : LibraryPageFragmentUserInteractionHandler</ID>
|
||||
<ID>UndocumentedPublicClass:RecentlyClosedFragment.kt$RecentlyClosedFragment : LibraryPageFragmentUserInteractionHandlerMenuProvider</ID>
|
||||
<ID>UndocumentedPublicClass:RecentlyClosedFragmentStore.kt$RecentlyClosedFragmentAction$Change : RecentlyClosedFragmentAction</ID>
|
||||
<ID>UndocumentedPublicClass:RecentlyClosedFragmentStore.kt$RecentlyClosedFragmentAction$Deselect : RecentlyClosedFragmentAction</ID>
|
||||
<ID>UndocumentedPublicClass:RecentlyClosedFragmentStore.kt$RecentlyClosedFragmentAction$DeselectAll : RecentlyClosedFragmentAction</ID>
|
||||
|
@ -319,7 +320,7 @@
|
|||
<ID>UndocumentedPublicClass:SaveCollectionListAdapter.kt$CollectionViewHolder : ViewHolder</ID>
|
||||
<ID>UndocumentedPublicClass:SaveCollectionListAdapter.kt$SaveCollectionListAdapter : Adapter</ID>
|
||||
<ID>UndocumentedPublicClass:SavedLoginsAuthFragment.kt$SavedLoginsAuthFragment : PreferenceFragmentCompat</ID>
|
||||
<ID>UndocumentedPublicClass:SavedLoginsFragment.kt$SavedLoginsFragment : SecureFragment</ID>
|
||||
<ID>UndocumentedPublicClass:SavedLoginsFragment.kt$SavedLoginsFragment : SecureFragmentMenuProvider</ID>
|
||||
<ID>UndocumentedPublicClass:SavedLoginsSettingFragment.kt$SavedLoginsSettingFragment : PreferenceFragmentCompat</ID>
|
||||
<ID>UndocumentedPublicClass:SavedLoginsSortingStrategyMenu.kt$SavedLoginsSortingStrategyMenu</ID>
|
||||
<ID>UndocumentedPublicClass:SavedLoginsSortingStrategyMenu.kt$SavedLoginsSortingStrategyMenu$Item</ID>
|
||||
|
@ -338,7 +339,7 @@
|
|||
<ID>UndocumentedPublicClass:SecretSettingsFragment.kt$SecretSettingsFragment : PreferenceFragmentCompat</ID>
|
||||
<ID>UndocumentedPublicClass:SelectBookmarkFolderAdapter.kt$SelectBookmarkFolderAdapter : ListAdapter</ID>
|
||||
<ID>UndocumentedPublicClass:SelectBookmarkFolderAdapter.kt$SelectBookmarkFolderAdapter$BookmarkFolderViewHolder : ViewHolder</ID>
|
||||
<ID>UndocumentedPublicClass:SelectBookmarkFolderFragment.kt$SelectBookmarkFolderFragment : Fragment</ID>
|
||||
<ID>UndocumentedPublicClass:SelectBookmarkFolderFragment.kt$SelectBookmarkFolderFragment : FragmentMenuProvider</ID>
|
||||
<ID>UndocumentedPublicClass:SelectionMenu.kt$SelectionMenu</ID>
|
||||
<ID>UndocumentedPublicClass:SelectionMenu.kt$SelectionMenu$Item</ID>
|
||||
<ID>UndocumentedPublicClass:SelectionMenu.kt$SelectionMenu.Item$BookmarkTabs : Item</ID>
|
||||
|
|
Loading…
Reference in New Issue