From e1187ebf31557528764a1e82615cd1446440f8f1 Mon Sep 17 00:00:00 2001 From: David Walsh Date: Mon, 30 Mar 2020 11:31:29 -0500 Subject: [PATCH] For #7059 - Allow search engines to scroll --- .../mozilla/fenix/search/SearchFragment.kt | 20 +- .../fenix/search/awesomebar/AwesomeBarView.kt | 15 -- .../main/res/layout/component_awesomebar.xml | 8 +- app/src/main/res/layout/fragment_search.xml | 212 ++++++++++-------- 4 files changed, 137 insertions(+), 118 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt index 60af3cc2c..dcb0feea3 100644 --- a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt @@ -30,6 +30,7 @@ import mozilla.components.feature.qr.QrFeature import mozilla.components.lib.state.ext.consumeFrom import mozilla.components.support.base.feature.UserInteractionHandler import mozilla.components.support.base.feature.ViewBoundFeatureWrapper +import mozilla.components.support.ktx.android.content.getColorFromAttr import mozilla.components.support.ktx.android.content.hasCamera import mozilla.components.support.ktx.android.content.isPermissionGranted import mozilla.components.ui.autocomplete.InlineAutocompleteEditText @@ -116,7 +117,7 @@ class SearchFragment : Fragment(), UserInteractionHandler { searchController ) - awesomeBarView = AwesomeBarView(view.search_layout, searchInteractor) + awesomeBarView = AwesomeBarView(view.scrollable_area, searchInteractor) toolbarView = ToolbarView( view.toolbar_component_wrapper, @@ -194,6 +195,10 @@ class SearchFragment : Fragment(), UserInteractionHandler { qrFeature.get()?.scan(R.id.container) } + view.search_shortcuts_button.setOnClickListener { + searchInteractor.onSearchShortcutsButtonClicked() + } + val stubListener = ViewStub.OnInflateListener { _, inflated -> inflated.learn_more.setOnClickListener { (activity as HomeActivity) @@ -243,6 +248,7 @@ class SearchFragment : Fragment(), UserInteractionHandler { consumeFrom(searchStore) { awesomeBarView.update(it) + updateSearchShortcutsIcon(it) toolbarView.update(it) updateSearchWithLabel(it) updateClipboardSuggestion(it, requireContext().components.clipboardHandler.url) @@ -351,6 +357,18 @@ class SearchFragment : Fragment(), UserInteractionHandler { } } + private fun updateSearchShortcutsIcon(searchState: SearchFragmentState) { + view?.apply { + val showShortcuts = searchState.showSearchShortcuts + search_shortcuts_button.isChecked = showShortcuts + + val color = if (showShortcuts) R.attr.contrastText else R.attr.primaryText + search_shortcuts_button.compoundDrawables[0]?.setTint( + requireContext().getColorFromAttr(color) + ) + } + } + companion object { private const val SHARED_TRANSITION_MS = 250L private const val REQUEST_CODE_CAMERA_PERMISSIONS = 1 diff --git a/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt b/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt index fbfd63bcf..95b625aa6 100644 --- a/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt +++ b/app/src/main/java/org/mozilla/fenix/search/awesomebar/AwesomeBarView.kt @@ -192,9 +192,6 @@ class AwesomeBarView( ) searchSuggestionProviderMap = HashMap() - search_shortcuts_button.setOnClickListener { - interactor.onSearchShortcutsButtonClicked() - } val recyclerListener = object : RecyclerView.OnScrollListener() { override fun onScrollStateChanged(recyclerView: RecyclerView, newState: Int) { @@ -215,7 +212,6 @@ class AwesomeBarView( } fun update(state: SearchFragmentState) { - updateSearchShortcutsIcon(state) updateSuggestionProvidersVisibility(state) // Do not make suggestions based on user's current URL unless it's a search shortcut @@ -226,17 +222,6 @@ class AwesomeBarView( view.onInputChanged(state.query) } - private fun updateSearchShortcutsIcon(searchState: SearchFragmentState) { - with(container.context) { - val showShortcuts = searchState.showSearchShortcuts - search_shortcuts_button?.isChecked = showShortcuts - - val color = if (showShortcuts) R.attr.contrastText else R.attr.primaryText - - search_shortcuts_button.compoundDrawables[0]?.setTint(getColorFromAttr(color)) - } - } - private fun updateSuggestionProvidersVisibility(state: SearchFragmentState) { if (state.showSearchShortcuts) { handleDisplayShortcutsProviders() diff --git a/app/src/main/res/layout/component_awesomebar.xml b/app/src/main/res/layout/component_awesomebar.xml index 952699346..7db279ea6 100644 --- a/app/src/main/res/layout/component_awesomebar.xml +++ b/app/src/main/res/layout/component_awesomebar.xml @@ -7,13 +7,13 @@ xmlns:mozac="http://schemas.android.com/apk/res-auto" android:id="@+id/awesomeBar" android:layout_width="0dp" - android:layout_height="0dp" + android:layout_height="wrap_content" android:fadingEdge="horizontal" android:fadingEdgeLength="40dp" + android:nestedScrollingEnabled="false" android:requiresFadingEdge="vertical" - app:layout_constraintBottom_toTopOf="@id/pill_wrapper" + app:layout_constraintTop_toTopOf="@id/awesomeBar_barrier" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" - app:layout_constraintTop_toBottomOf="@id/search_with_shortcuts" mozac:awesomeBarDescriptionTextColor="?secondaryText" - mozac:awesomeBarTitleTextColor="?primaryText" /> + mozac:awesomeBarTitleTextColor="?primaryText" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_search.xml b/app/src/main/res/layout/fragment_search.xml index 7edfbde6e..10629446b 100644 --- a/app/src/main/res/layout/fragment_search.xml +++ b/app/src/main/res/layout/fragment_search.xml @@ -11,27 +11,6 @@ android:background="?foundation" tools:context=".search.SearchFragment"> - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + +