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 { .subscribe {
when (it) { when (it) {
is SearchAction.ToolbarTapped -> Navigation.findNavController(toolbar) is SearchAction.ToolbarTapped -> Navigation.findNavController(toolbar)
.navigate(BrowserFragmentDirections.actionBrowserFragmentToSearchFragment(null)) .navigate(BrowserFragmentDirections.actionBrowserFragmentToSearchFragment(
requireComponents.core.sessionManager.selectedSession?.id
))
is SearchAction.ToolbarMenuItemTapped -> handleToolbarItemInteraction(it) is SearchAction.ToolbarMenuItemTapped -> handleToolbarItemInteraction(it)
} }
} }
@ -109,6 +111,8 @@ class BrowserFragment : Fragment(), BackHandler {
override fun onViewCreated(view: View, savedInstanceState: Bundle?) { override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState) super.onViewCreated(view, savedInstanceState)
sessionId = BrowserFragmentArgs.fromBundle(arguments!!).sessionId
(activity as AppCompatActivity).supportActionBar?.hide() (activity as AppCompatActivity).supportActionBar?.hide()
val sessionManager = requireComponents.core.sessionManager val sessionManager = requireComponents.core.sessionManager

View File

@ -43,16 +43,28 @@ class AwesomeBarUIView(
) )
) )
view.addProviders(SessionSuggestionProvider(components.core.sessionManager, view.addProviders(
components.useCases.tabsUseCases.selectTab), SessionSuggestionProvider(
HistoryStorageSuggestionProvider(components.core.historyStorage, components.core.sessionManager,
components.useCases.sessionUseCases.loadUrl), components.useCases.tabsUseCases.selectTab
SearchSuggestionProvider(components.search.searchEngineManager.getDefaultSearchEngine(this), ),
components.useCases.searchUseCases.defaultSearch, HistoryStorageSuggestionProvider(
SearchSuggestionProvider.Mode.MULTIPLE_SUGGESTIONS)) components.core.historyStorage,
if (useNewTab) {
view.setOnStopListener { actionEmitter.onNext(AwesomeBarAction.ItemSelected) } 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> { override fun updateView() = Consumer<AwesomeBarState> {

View File

@ -37,7 +37,8 @@ class ToolbarIntegration(
.getDrawable(DefaultThemeManager.resolveAttribute(R.attr.browserToolbarHomeIcon, context), .getDrawable(DefaultThemeManager.resolveAttribute(R.attr.browserToolbarHomeIcon, context),
context.application.theme), context.application.theme),
context.getString(R.string.browser_home_button), 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) Navigation.findNavController(toolbar)
.navigate(BrowserFragmentDirections.actionBrowserFragmentToHomeFragment()) .navigate(BrowserFragmentDirections.actionBrowserFragmentToHomeFragment())
@ -54,8 +55,12 @@ class ToolbarIntegration(
private val toolbarFeature: ToolbarFeature = ToolbarFeature( private val toolbarFeature: ToolbarFeature = ToolbarFeature(
toolbar, toolbar,
context.components.core.sessionManager, context.components.core.sessionManager,
context.components.useCases.sessionUseCases.loadUrl, if (sessionId == null) {
{ searchTerms -> context.components.useCases.searchUseCases.defaultSearch.invoke(searchTerms) }, 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 sessionId
) )

View File

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