|
|
@ -73,6 +73,7 @@ typealias SearchDialogFragmentStore = SearchFragmentStore
|
|
|
|
|
|
|
|
|
|
|
|
@SuppressWarnings("LargeClass", "TooManyFunctions")
|
|
|
|
@SuppressWarnings("LargeClass", "TooManyFunctions")
|
|
|
|
class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler {
|
|
|
|
class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler {
|
|
|
|
|
|
|
|
private var voiceSearchButtonAlreadyAdded: Boolean = false
|
|
|
|
private lateinit var interactor: SearchDialogInteractor
|
|
|
|
private lateinit var interactor: SearchDialogInteractor
|
|
|
|
private lateinit var store: SearchDialogFragmentStore
|
|
|
|
private lateinit var store: SearchDialogFragmentStore
|
|
|
|
private lateinit var toolbarView: ToolbarView
|
|
|
|
private lateinit var toolbarView: ToolbarView
|
|
|
@ -160,7 +161,7 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler {
|
|
|
|
isPrivate,
|
|
|
|
isPrivate,
|
|
|
|
view.toolbar,
|
|
|
|
view.toolbar,
|
|
|
|
requireComponents.core.engine
|
|
|
|
requireComponents.core.engine
|
|
|
|
).also(::addSearchButton)
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
awesomeBarView = AwesomeBarView(
|
|
|
|
awesomeBarView = AwesomeBarView(
|
|
|
|
activity,
|
|
|
|
activity,
|
|
|
@ -316,6 +317,7 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler {
|
|
|
|
toolbarView.update(it)
|
|
|
|
toolbarView.update(it)
|
|
|
|
awesomeBarView.update(it)
|
|
|
|
awesomeBarView.update(it)
|
|
|
|
firstUpdate = false
|
|
|
|
firstUpdate = false
|
|
|
|
|
|
|
|
addVoiceSearchButton(it)
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -475,21 +477,26 @@ class SearchDialogFragment : AppCompatDialogFragment(), UserInteractionHandler {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private fun addSearchButton(toolbarView: ToolbarView) {
|
|
|
|
private fun addVoiceSearchButton(searchFragmentState: SearchFragmentState) {
|
|
|
|
val searchEngine = store.state.searchEngineSource.searchEngine
|
|
|
|
if (voiceSearchButtonAlreadyAdded) return
|
|
|
|
|
|
|
|
val searchEngine = searchFragmentState.searchEngineSource.searchEngine
|
|
|
|
toolbarView.view.addEditAction(
|
|
|
|
|
|
|
|
BrowserToolbar.Button(
|
|
|
|
val isVisible =
|
|
|
|
AppCompatResources.getDrawable(requireContext(), R.drawable.ic_microphone)!!,
|
|
|
|
searchEngine?.id?.contains("google") == true &&
|
|
|
|
requireContext().getString(R.string.voice_search_content_description),
|
|
|
|
isSpeechAvailable() &&
|
|
|
|
visible = {
|
|
|
|
requireContext().settings().shouldShowVoiceSearch
|
|
|
|
searchEngine?.id?.contains("google") == true &&
|
|
|
|
|
|
|
|
isSpeechAvailable() &&
|
|
|
|
if (isVisible) {
|
|
|
|
requireContext().settings().shouldShowVoiceSearch
|
|
|
|
toolbarView.view.addEditAction(
|
|
|
|
},
|
|
|
|
BrowserToolbar.Button(
|
|
|
|
listener = ::launchVoiceSearch
|
|
|
|
AppCompatResources.getDrawable(requireContext(), R.drawable.ic_microphone)!!,
|
|
|
|
|
|
|
|
requireContext().getString(R.string.voice_search_content_description),
|
|
|
|
|
|
|
|
visible = { true },
|
|
|
|
|
|
|
|
listener = ::launchVoiceSearch
|
|
|
|
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
)
|
|
|
|
voiceSearchButtonAlreadyAdded = true
|
|
|
|
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
private fun launchVoiceSearch() {
|
|
|
|
private fun launchVoiceSearch() {
|
|
|
|