Skip to content
This repository has been archived by the owner on Feb 20, 2023. It is now read-only.

for #10568 Make Search Fragment xml include toolbar and AwesomeBar #11744

Merged
merged 1 commit into from
Jun 21, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
7 changes: 4 additions & 3 deletions app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt
Original file line number Diff line number Diff line change
Expand Up @@ -128,18 +128,19 @@ class SearchFragment : Fragment(), UserInteractionHandler {
searchController
)

awesomeBarView = AwesomeBarView(view.scrollable_area, searchInteractor)

awesomeBarView = AwesomeBarView(view.scrollable_area, searchInteractor,
view.findViewById(R.id.awesomeBar))
view.scrollView.setOnScrollChangeListener {
_: NestedScrollView, _: Int, _: Int, _: Int, _: Int ->
view.hideKeyboard()
}

toolbarView = ToolbarView(
view.toolbar_component_wrapper,
requireContext(),
searchInteractor,
historyStorageProvider(),
isPrivate,
view.toolbar,
requireComponents.core.engine
)

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,14 +4,11 @@

package org.mozilla.fenix.search.awesomebar

import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.appcompat.content.res.AppCompatResources.getDrawable
import androidx.core.graphics.BlendModeColorFilterCompat.createBlendModeColorFilterCompat
import androidx.core.graphics.BlendModeCompat.SRC_IN
import androidx.core.graphics.drawable.toBitmap
import kotlinx.android.extensions.LayoutContainer
import mozilla.components.browser.awesomebar.BrowserAwesomeBar
import mozilla.components.browser.search.SearchEngine
import mozilla.components.browser.session.Session
Expand Down Expand Up @@ -82,14 +79,9 @@ interface AwesomeBarInteractor {
*/
class AwesomeBarView(
private val container: ViewGroup,
val interactor: AwesomeBarInteractor
) : LayoutContainer {
val view: BrowserAwesomeBar = LayoutInflater.from(container.context)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As discussed, we don't need this any more because we have this logic here

.inflate(R.layout.component_awesomebar, container, true)
.findViewById(R.id.awesomeBar)

override val containerView: View?
get() = container
val interactor: AwesomeBarInteractor,
val view: BrowserAwesomeBar
) {

private val sessionProvider: SessionSuggestionProvider
private val historyStorageProvider: HistoryStorageSuggestionProvider
Expand Down
43 changes: 12 additions & 31 deletions app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarView.kt
Original file line number Diff line number Diff line change
Expand Up @@ -4,16 +4,12 @@

package org.mozilla.fenix.search.toolbar

import android.content.Context
import android.graphics.Bitmap
import android.graphics.drawable.BitmapDrawable
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import androidx.annotation.LayoutRes
import androidx.appcompat.content.res.AppCompatResources
import androidx.coordinatorlayout.widget.CoordinatorLayout
import androidx.core.content.ContextCompat
import kotlinx.android.extensions.LayoutContainer
import mozilla.components.browser.domains.autocomplete.ShippedDomainsProvider
import mozilla.components.browser.toolbar.BrowserToolbar
import mozilla.components.concept.engine.Engine
Expand All @@ -23,7 +19,6 @@ import mozilla.components.support.ktx.android.content.getColorFromAttr
import mozilla.components.support.ktx.android.util.dpToPx
import mozilla.components.support.ktx.android.view.hideKeyboard
import org.mozilla.fenix.R
import org.mozilla.fenix.ext.settings
import org.mozilla.fenix.search.SearchFragmentState
import org.mozilla.fenix.theme.ThemeManager

Expand Down Expand Up @@ -55,27 +50,13 @@ interface ToolbarInteractor {
* View that contains and configures the BrowserToolbar to only be used in its editing mode.
*/
class ToolbarView(
private val container: ViewGroup,
private val context: Context,
private val interactor: ToolbarInteractor,
private val historyStorage: HistoryStorage?,
private val isPrivate: Boolean,
val view: BrowserToolbar,
engine: Engine
) : LayoutContainer {

override val containerView: View?
get() = container

private val settings = container.context.settings()

@LayoutRes
private val toolbarLayout = when {
settings.shouldUseBottomToolbar -> R.layout.component_bottom_browser_toolbar
else -> R.layout.component_browser_top_toolbar
}

val view: BrowserToolbar = LayoutInflater.from(container.context)
.inflate(toolbarLayout, container, true)
.findViewById(R.id.toolbar)
) {

private var isInitialized = false
private var hasBeenCanceled = false
Expand All @@ -97,25 +78,25 @@ class ToolbarView(

background =
AppCompatResources.getDrawable(
container.context, ThemeManager.resolveAttribute(R.attr.foundation, context)
context, ThemeManager.resolveAttribute(R.attr.foundation, context)
)

layoutParams.height = CoordinatorLayout.LayoutParams.MATCH_PARENT

edit.hint = context.getString(R.string.search_hint)

edit.colors = edit.colors.copy(
text = container.context.getColorFromAttr(R.attr.primaryText),
hint = container.context.getColorFromAttr(R.attr.secondaryText),
text = context.getColorFromAttr(R.attr.primaryText),
hint = context.getColorFromAttr(R.attr.secondaryText),
suggestionBackground = ContextCompat.getColor(
container.context,
context,
R.color.suggestion_highlight_color
),
clear = container.context.getColorFromAttr(R.attr.primaryText)
clear = context.getColorFromAttr(R.attr.primaryText)
)

edit.setUrlBackground(
AppCompatResources.getDrawable(container.context, R.drawable.search_url_background))
AppCompatResources.getDrawable(context, R.drawable.search_url_background))

private = isPrivate

Expand Down Expand Up @@ -163,15 +144,15 @@ class ToolbarView(
isInitialized = true
}

val iconSize = container.resources.getDimensionPixelSize(R.dimen.preference_icon_drawable_size)
val iconSize = context.resources.getDimensionPixelSize(R.dimen.preference_icon_drawable_size)

val scaledIcon = Bitmap.createScaledBitmap(
searchState.searchEngineSource.searchEngine.icon,
iconSize,
iconSize,
true)

val icon = BitmapDrawable(container.resources, scaledIcon)
val icon = BitmapDrawable(context.resources, scaledIcon)

view.edit.setIcon(icon, searchState.searchEngineSource.searchEngine.name)
}
Expand Down
19 changes: 0 additions & 19 deletions app/src/main/res/layout/component_awesomebar.xml

This file was deleted.

37 changes: 31 additions & 6 deletions app/src/main/res/layout/fragment_search.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,14 +21,26 @@
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent">

<FrameLayout
android:id="@+id/toolbar_component_wrapper"
android:layout_width="0dp"
android:layout_height="0dp"
<mozilla.components.browser.toolbar.BrowserToolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="@dimen/browser_toolbar_height"
android:layout_gravity="top"
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_constraintBottom_toBottomOf="parent"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
app:layout_constraintTop_toTopOf="parent"/>

</androidx.constraintlayout.widget.ConstraintLayout>

Expand All @@ -45,7 +57,20 @@
android:id="@+id/scrollable_area"
android:layout_width="match_parent"
android:layout_height="wrap_content">

<mozilla.components.browser.awesomebar.BrowserAwesomeBar
xmlns:mozac="http://schemas.android.com/apk/res-auto"
android:id="@+id/awesomeBar"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:fadingEdge="horizontal"
android:fadingEdgeLength="40dp"
android:nestedScrollingEnabled="false"
android:requiresFadingEdge="vertical"
app:layout_constraintTop_toBottomOf="@id/search_with_shortcuts"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
mozac:awesomeBarDescriptionTextColor="?secondaryText"
mozac:awesomeBarTitleTextColor="?primaryText" />
<ViewStub
android:id="@+id/search_suggestions_onboarding"
android:layout_width="match_parent"
Expand Down