Handle multitasking via toolbar actions
parent
f09dc2453f
commit
cbb26cb45f
|
@ -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
|
||||||
|
|
|
@ -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> {
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue