1
0
Fork 0
fenix/app/src/main/java/org/mozilla/fenix/settings/search/SearchEngineMenu.kt

53 lines
1.6 KiB
Kotlin
Raw Normal View History

Adds custom search engines (#6551) * For #5577 - Adds button to add a new search engine * For #5577 - Adds custom engine store * For #5577 - Creates a custom SearchEngineProvider * For #5577 - Gives the ability to delete search engines * For #5577 - Adds the UI to add a custom search engine * For #5577 - Adds form to create a custom search engine * For #5577 - Adds the ability to add a custom search engine * For #5577 - Adds the ability to delete custom search engines * For #5577 - Selects the first element on the add custom search engine screen * For #5577 - Prevents adding a search engine that already exists * For #5577 - Styles the add search engine preference * For #5577 - Makes the name check case-insensitive * For #5577 - Fix bug where home screen doesnt see new search engines * For #5577 - Moves Search URL validation to its own type * For #5577 - Fixes linting errors * For #5577 - Adds the ability to edit a custom search engine * For #5577 - Allows the user to edit a serach engine even when it is the last item in the list * For #5577 - Adds an undo snackbar when deleting a search engine * For #5577 - Moves all of the strings to be translated * For #5577 - Fixes bug when deleting your default search engine * For #5577 - Puts adding search engines behind a feature flag * For #5577 - Navigate to custom search engine SUMO article when tapping learn more * For #5577 - Fixes nits * For #5577 - Uses concept-fetch to validate search string * For #5577 - Adds string resources for the cannot reach error state
2019-11-20 01:30:56 +01:00
/* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this
* file, You can obtain one at http://mozilla.org/MPL/2.0/. */
package org.mozilla.fenix.settings.search
import android.content.Context
import mozilla.components.browser.menu.BrowserMenuBuilder
import mozilla.components.browser.menu.item.SimpleBrowserMenuItem
import org.mozilla.fenix.R
import org.mozilla.fenix.theme.ThemeManager
class SearchEngineMenu(
private val context: Context,
private val allowDeletion: Boolean,
private val isCustomSearchEngine: Boolean,
private val onItemTapped: (Item) -> Unit = {}
) {
sealed class Item {
object Delete : Item()
object Edit : Item()
}
val menuBuilder by lazy { BrowserMenuBuilder(menuItems) }
private val menuItems by lazy {
val items = mutableListOf<SimpleBrowserMenuItem>()
if (isCustomSearchEngine) {
items.add(
SimpleBrowserMenuItem(
label = context.getString(R.string.search_engine_edit)
) {
onItemTapped.invoke(Item.Edit)
}
)
}
if (allowDeletion) {
items.add(
SimpleBrowserMenuItem(
context.getString(R.string.search_engine_delete),
textColorResource = ThemeManager.resolveAttribute(R.attr.destructive, context)
) {
onItemTapped.invoke(Item.Delete)
}
)
}
items
}
}