1
0
Fork 0

Progress on new search experience with Toolbar and Awesomebar placeholders (#13314)

* For #13272 - Adds the ToolbarView to the SearchDialogFragment

* For #13273 - Replaces container dependency with context in AwesomebarView

* For #13276 - Hacks together the awesomebar and toolbar in the new search experience
master
Jeff Boek 2020-08-05 12:40:43 -07:00 committed by GitHub
parent f319b457bf
commit 6492773fc7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 157 additions and 16 deletions

View File

@ -141,7 +141,7 @@ class SearchFragment : Fragment(), UserInteractionHandler {
searchController
)
awesomeBarView = AwesomeBarView(view.scrollable_area, searchInteractor,
awesomeBarView = AwesomeBarView(requireContext(), searchInteractor,
view.findViewById(R.id.awesomeBar))
setShortcutsChangedListener(CustomSearchEngineStore.PREF_FILE_SEARCH_ENGINES)
setShortcutsChangedListener(FenixSearchEngineProvider.PREF_FILE_SEARCH_ENGINES)

View File

@ -4,7 +4,7 @@
package org.mozilla.fenix.search.awesomebar
import android.view.ViewGroup
import android.content.Context
import androidx.appcompat.content.res.AppCompatResources.getDrawable
import androidx.core.graphics.BlendModeColorFilterCompat.createBlendModeColorFilterCompat
import androidx.core.graphics.BlendModeCompat.SRC_IN
@ -34,11 +34,10 @@ import org.mozilla.fenix.search.SearchFragmentState
* View that contains and configures the BrowserAwesomeBar
*/
class AwesomeBarView(
private val container: ViewGroup,
private val context: Context,
val interactor: AwesomeBarInteractor,
val view: BrowserAwesomeBar
) {
private val sessionProvider: SessionSuggestionProvider
private val historyStorageProvider: HistoryStorageSuggestionProvider
private val shortcutsEnginePickerProvider: ShortcutsSuggestionProvider
@ -91,7 +90,6 @@ class AwesomeBarView(
init {
view.itemAnimator = null
val context = container.context
val components = context.components
val primaryTextColor = context.getColorFromAttr(R.attr.primaryText)
@ -255,7 +253,7 @@ class AwesomeBarView(
}
private fun isBrowsingModePrivate(): Boolean {
return (container.context.asActivity() as? HomeActivity)?.browsingModeManager?.mode?.isPrivate
return (context.asActivity() as? HomeActivity)?.browsingModeManager?.mode?.isPrivate
?: false
}
@ -280,7 +278,6 @@ class AwesomeBarView(
private fun getSuggestionProviderForEngine(engine: SearchEngine): List<AwesomeBar.SuggestionProvider> {
return searchSuggestionProviderMap.getOrPut(engine) {
val context = container.context
val components = context.components
val primaryTextColor = context.getColorFromAttr(R.attr.primaryText)

View File

@ -9,12 +9,116 @@ import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.app.AppCompatDialogFragment
import kotlinx.android.synthetic.main.fragment_search.view.*
import mozilla.components.browser.search.SearchEngine
import mozilla.components.browser.session.Session
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.logDebug
import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.search.SearchEngineSource
import org.mozilla.fenix.search.SearchFragmentState
import org.mozilla.fenix.search.awesomebar.AwesomeBarInteractor
import org.mozilla.fenix.search.awesomebar.AwesomeBarView
import org.mozilla.fenix.search.toolbar.ToolbarInteractor
import org.mozilla.fenix.search.toolbar.ToolbarView
class TempSearchInteractor(val onTextChangedCallback: (String) -> Unit) : ToolbarInteractor, AwesomeBarInteractor {
override fun onUrlCommitted(url: String) {
logDebug("boek", "onUrlCommitted $url")
}
override fun onEditingCanceled() {
logDebug("boek", "onEditingCanceled")
}
override fun onTextChanged(text: String) {
onTextChangedCallback.invoke(text)
}
override fun onUrlTapped(url: String) {
logDebug("boek", "onEditingCanceled")
}
override fun onSearchTermsTapped(searchTerms: String) {
logDebug("boek", "onEditingCanceled")
}
override fun onSearchShortcutEngineSelected(searchEngine: SearchEngine) {
logDebug("boek", "onEditingCanceled")
}
override fun onClickSearchEngineSettings() {
logDebug("boek", "onEditingCanceled")
}
override fun onExistingSessionSelected(session: Session) {
logDebug("boek", "onEditingCanceled")
}
override fun onExistingSessionSelected(tabId: String) {
logDebug("boek", "onEditingCanceled")
}
override fun onSearchShortcutsButtonClicked() {
logDebug("boek", "onEditingCanceled")
}
}
class SearchDialogFragment : AppCompatDialogFragment() {
private lateinit var toolbarView: ToolbarView
private lateinit var awesomeBarView: AwesomeBarView
private val tempInteractor = TempSearchInteractor {
view?.awesomeBar?.visibility = if (it.isEmpty()) View.INVISIBLE else View.VISIBLE
awesomeBarView.update(
SearchFragmentState(
query = it,
url = "",
searchTerms = "",
searchEngineSource = SearchEngineSource.Default(requireComponents.search.provider.getDefaultEngine(requireContext())),
defaultEngineSource = SearchEngineSource.Default(requireComponents.search.provider.getDefaultEngine(requireContext())),
showSearchSuggestions = true,
showSearchSuggestionsHint = false,
showSearchShortcuts = false,
areShortcutsAvailable = false,
showClipboardSuggestions = true,
showHistorySuggestions = true,
showBookmarkSuggestions = true,
tabId = null,
pastedText = null,
searchAccessPoint = null
)
)
}
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setStyle(STYLE_NO_TITLE, R.style.SearchDialogStyle)
}
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? = inflater.inflate(R.layout.fragment_search_dialog, container, false)
): View? {
val view = inflater.inflate(R.layout.fragment_search_dialog, container, false)
toolbarView = ToolbarView(
requireContext(),
tempInteractor,
null,
false,
view.toolbar,
requireComponents.core.engine
)
awesomeBarView = AwesomeBarView(
requireContext(),
tempInteractor,
view.awesomeBar
)
return view
}
}

View File

@ -5,14 +5,49 @@
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
xmlns:app="http://schemas.android.com/apk/res-auto">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintStart_toStartOf="parent"
<mozilla.components.browser.toolbar.BrowserToolbar
android:id="@+id/toolbar"
android:layout_width="0dp"
android:layout_height="@dimen/browser_toolbar_height"
android:background="@drawable/toolbar_background_top"
android:clickable="true"
android:focusable="true"
android:focusableInTouchMode="true"
app:layout_scrollFlags="scroll|enterAlways|snap|exitUntilCollapsed"
app:browserToolbarClearColor="?primaryText"
app:browserToolbarInsecureColor="?primaryText"
app:browserToolbarMenuColor="?primaryText"
app:browserToolbarProgressBarGravity="bottom"
app:browserToolbarSecureColor="?primaryText"
app:browserToolbarTrackingProtectionAndSecurityIndicatorSeparatorColor="?toolbarDivider"
app:layout_constraintEnd_toEndOf="parent"
android:text="Hello World"
/>
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
<androidx.core.widget.NestedScrollView
android:layout_width="0dp"
android:layout_height="0dp"
android:id="@+id/scrollView"
android:background="?attr/scrimBackground"
app:layout_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@id/toolbar"
android:scrollbars="vertical">
<mozilla.components.browser.awesomebar.BrowserAwesomeBar
xmlns:mozac="http://schemas.android.com/apk/res-auto"
android:id="@+id/awesomeBar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:fadingEdge="horizontal"
android:fadingEdgeLength="40dp"
android:nestedScrollingEnabled="false"
android:requiresFadingEdge="vertical"
android:background="?attr/foundation"
android:visibility="invisible"
mozac:awesomeBarChipBackgroundColor="@color/photonGreen50"
mozac:awesomeBarDescriptionTextColor="?secondaryText"
mozac:awesomeBarTitleTextColor="?primaryText" />
</androidx.core.widget.NestedScrollView>
</androidx.constraintlayout.widget.ConstraintLayout>

View File

@ -614,4 +614,9 @@
<item name="elevation">90dp</item>
<item name="android:stateListAnimator">@null</item>
</style>
<style name="SearchDialogStyle" parent="DialogStyleBase">
<item name="android:windowIsFloating">false</item>
<item name="android:windowAnimationStyle">@null</item>
</style>
</resources>