Handle multitasking via toolbar actions
parent
f09dc2453f
commit
cbb26cb45f
|
@ -100,7 +100,9 @@ class BrowserFragment : Fragment(), BackHandler {
|
|||
.subscribe {
|
||||
when (it) {
|
||||
is SearchAction.ToolbarTapped -> Navigation.findNavController(toolbar)
|
||||
.navigate(BrowserFragmentDirections.actionBrowserFragmentToSearchFragment(null))
|
||||
.navigate(BrowserFragmentDirections.actionBrowserFragmentToSearchFragment(
|
||||
requireComponents.core.sessionManager.selectedSession?.id
|
||||
))
|
||||
is SearchAction.ToolbarMenuItemTapped -> handleToolbarItemInteraction(it)
|
||||
}
|
||||
}
|
||||
|
@ -109,6 +111,8 @@ class BrowserFragment : Fragment(), BackHandler {
|
|||
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
|
||||
super.onViewCreated(view, savedInstanceState)
|
||||
|
||||
sessionId = BrowserFragmentArgs.fromBundle(arguments!!).sessionId
|
||||
|
||||
(activity as AppCompatActivity).supportActionBar?.hide()
|
||||
|
||||
val sessionManager = requireComponents.core.sessionManager
|
||||
|
|
|
@ -43,16 +43,28 @@ class AwesomeBarUIView(
|
|||
)
|
||||
)
|
||||
|
||||
view.addProviders(SessionSuggestionProvider(components.core.sessionManager,
|
||||
components.useCases.tabsUseCases.selectTab),
|
||||
HistoryStorageSuggestionProvider(components.core.historyStorage,
|
||||
components.useCases.sessionUseCases.loadUrl),
|
||||
SearchSuggestionProvider(components.search.searchEngineManager.getDefaultSearchEngine(this),
|
||||
components.useCases.searchUseCases.defaultSearch,
|
||||
SearchSuggestionProvider.Mode.MULTIPLE_SUGGESTIONS))
|
||||
|
||||
view.setOnStopListener { actionEmitter.onNext(AwesomeBarAction.ItemSelected) }
|
||||
view.addProviders(
|
||||
SessionSuggestionProvider(
|
||||
components.core.sessionManager,
|
||||
components.useCases.tabsUseCases.selectTab
|
||||
),
|
||||
HistoryStorageSuggestionProvider(
|
||||
components.core.historyStorage,
|
||||
if (useNewTab) {
|
||||
components.useCases.tabsUseCases.addTab
|
||||
} else components.useCases.sessionUseCases.loadUrl
|
||||
),
|
||||
SearchSuggestionProvider(
|
||||
components.search.searchEngineManager.getDefaultSearchEngine(this),
|
||||
if (useNewTab) {
|
||||
components.useCases.searchUseCases.newTabSearch
|
||||
} else components.useCases.searchUseCases.defaultSearch,
|
||||
SearchSuggestionProvider.Mode.MULTIPLE_SUGGESTIONS
|
||||
)
|
||||
)
|
||||
}
|
||||
|
||||
view.setOnStopListener { actionEmitter.onNext(AwesomeBarAction.ItemSelected) }
|
||||
}
|
||||
|
||||
override fun updateView() = Consumer<AwesomeBarState> {
|
||||
|
|
|
@ -37,7 +37,8 @@ class ToolbarIntegration(
|
|||
.getDrawable(DefaultThemeManager.resolveAttribute(R.attr.browserToolbarHomeIcon, context),
|
||||
context.application.theme),
|
||||
context.getString(R.string.browser_home_button),
|
||||
visible = { sessionManager.runWithSession(sessionId) { it.isCustomTabSession().not() } }
|
||||
visible = { sessionId == null ||
|
||||
sessionManager.runWithSession(sessionId) { it.isCustomTabSession().not() } }
|
||||
) {
|
||||
Navigation.findNavController(toolbar)
|
||||
.navigate(BrowserFragmentDirections.actionBrowserFragmentToHomeFragment())
|
||||
|
@ -54,8 +55,12 @@ class ToolbarIntegration(
|
|||
private val toolbarFeature: ToolbarFeature = ToolbarFeature(
|
||||
toolbar,
|
||||
context.components.core.sessionManager,
|
||||
context.components.useCases.sessionUseCases.loadUrl,
|
||||
{ searchTerms -> context.components.useCases.searchUseCases.defaultSearch.invoke(searchTerms) },
|
||||
if (sessionId == null) {
|
||||
context.components.useCases.tabsUseCases.addTab
|
||||
} else context.components.useCases.sessionUseCases.loadUrl,
|
||||
{ searchTerms -> if (sessionId == null) {
|
||||
context.components.useCases.searchUseCases.newTabSearch.invoke(searchTerms)
|
||||
} else context.components.useCases.searchUseCases.defaultSearch.invoke(searchTerms) },
|
||||
sessionId
|
||||
)
|
||||
|
||||
|
|
|
@ -73,7 +73,7 @@ class ToolbarUIView(
|
|||
ShippedDomainsProvider().also { it.initialize(this) },
|
||||
components.core.historyStorage,
|
||||
components.core.sessionManager,
|
||||
sessionId ?: components.core.sessionManager.selectedSession?.id
|
||||
sessionId
|
||||
)
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue