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 fb706bcda..e9882c3dc 100644 --- a/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/search/SearchFragment.kt @@ -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) 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 7d918a1e0..8ba8f3e20 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 @@ -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 { return searchSuggestionProviderMap.getOrPut(engine) { - val context = container.context val components = context.components val primaryTextColor = context.getColorFromAttr(R.attr.primaryText) diff --git a/app/src/main/java/org/mozilla/fenix/searchdialog/SearchDialogFragment.kt b/app/src/main/java/org/mozilla/fenix/searchdialog/SearchDialogFragment.kt index a8a97cc32..91b8bcf22 100644 --- a/app/src/main/java/org/mozilla/fenix/searchdialog/SearchDialogFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/searchdialog/SearchDialogFragment.kt @@ -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 + } } diff --git a/app/src/main/res/layout/fragment_search_dialog.xml b/app/src/main/res/layout/fragment_search_dialog.xml index 10c211752..faac704e3 100644 --- a/app/src/main/res/layout/fragment_search_dialog.xml +++ b/app/src/main/res/layout/fragment_search_dialog.xml @@ -5,14 +5,49 @@ - + app:layout_constraintStart_toStartOf="parent" + app:layout_constraintTop_toTopOf="parent"/> + + + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index f71bd9753..d2421212f 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -614,4 +614,9 @@ 90dp @null + +