1
0
Fork 0
fenix/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarIntegration.kt

71 lines
2.3 KiB
Kotlin

/* 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.components.toolbar
import android.content.Context
import androidx.lifecycle.Lifecycle
import androidx.lifecycle.LifecycleObserver
import androidx.lifecycle.OnLifecycleEvent
import androidx.navigation.Navigation
import mozilla.components.browser.domains.autocomplete.DomainAutocompleteProvider
import mozilla.components.browser.toolbar.BrowserToolbar
import mozilla.components.concept.storage.HistoryStorage
import mozilla.components.feature.toolbar.ToolbarAutocompleteFeature
import mozilla.components.feature.toolbar.ToolbarFeature
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.application
import org.mozilla.fenix.ext.components
class ToolbarIntegration(
context: Context,
toolbar: BrowserToolbar,
domainAutocompleteProvider: DomainAutocompleteProvider,
historyStorage: HistoryStorage,
sessionId: String? = null
) : LifecycleObserver {
init {
toolbar.setMenuBuilder(context.components.toolbar.menuBuilder)
val home = BrowserToolbar.Button(
context.resources.getDrawable(
R.drawable.ic_home,
context.application.theme
), context.getString(R.string.browser_home_button)
) {
Navigation.findNavController(toolbar).navigate(R.id.action_browserFragment_to_homeFragment)
}
toolbar.addBrowserAction(home)
ToolbarAutocompleteFeature(toolbar).apply {
addDomainProvider(domainAutocompleteProvider)
addHistoryStorageProvider(historyStorage)
}
}
private val toolbarFeature: ToolbarFeature = ToolbarFeature(
toolbar,
context.components.core.sessionManager,
context.components.useCases.sessionUseCases.loadUrl,
{ searchTerms -> context.components.useCases.searchUseCases.defaultSearch.invoke(searchTerms) },
sessionId
)
@OnLifecycleEvent(Lifecycle.Event.ON_START)
fun start() {
toolbarFeature.start()
}
@OnLifecycleEvent(Lifecycle.Event.ON_STOP)
fun stop() {
toolbarFeature.stop()
}
companion object {
const val browserActionMarginDp = 8
const val urlBoxMargin = 8
}
}