1
0
Fork 0

Handle multitasking via toolbar actions

master
Colin Lee 2019-02-09 16:54:47 -06:00
parent f09dc2453f
commit cbb26cb45f
4 changed files with 35 additions and 14 deletions

View File

@ -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

View File

@ -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> {

View File

@ -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
)

View File

@ -73,7 +73,7 @@ class ToolbarUIView(
ShippedDomainsProvider().also { it.initialize(this) },
components.core.historyStorage,
components.core.sessionManager,
sessionId ?: components.core.sessionManager.selectedSession?.id
sessionId
)
}
}