From 1bb4d72fd1c321086c684cbe5faaf3db0208c822 Mon Sep 17 00:00:00 2001 From: Emily Kager Date: Fri, 31 May 2019 08:16:08 -0700 Subject: [PATCH] For #3027, For #2858 Pass in Fenix Snackbar for Context Menu Candidate (#3028) --- .../mozilla/fenix/browser/BrowserFragment.kt | 6 +++- .../fenix/browser/FenixSnackbarDelegate.kt | 33 +++++++++++++++++++ 2 files changed, 38 insertions(+), 1 deletion(-) create mode 100644 app/src/main/java/org/mozilla/fenix/browser/FenixSnackbarDelegate.kt diff --git a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt index 790dbd8b0..c6644af1f 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt @@ -199,7 +199,11 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope { ContextMenuCandidate.defaultCandidates( requireContext(), requireComponents.useCases.tabsUseCases, - view + view, + FenixSnackbarDelegate( + view, + if (getSessionById()?.isCustomTabSession() == true) null else nestedScrollQuickAction + ) ), view.engineView ), diff --git a/app/src/main/java/org/mozilla/fenix/browser/FenixSnackbarDelegate.kt b/app/src/main/java/org/mozilla/fenix/browser/FenixSnackbarDelegate.kt new file mode 100644 index 000000000..d037b8e7d --- /dev/null +++ b/app/src/main/java/org/mozilla/fenix/browser/FenixSnackbarDelegate.kt @@ -0,0 +1,33 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.mozilla.fenix.browser + +import android.view.View +import com.google.android.material.snackbar.Snackbar +import mozilla.components.feature.contextmenu.ContextMenuCandidate +import org.mozilla.fenix.components.FenixSnackbar + +class FenixSnackbarDelegate(val view: View, private val anchorView: View?) : + ContextMenuCandidate.SnackbarDelegate { + override fun show( + snackBarParentView: View, + text: Int, + duration: Int, + action: Int, + listener: ((v: View) -> Unit)? + ) { + val snackbar = FenixSnackbar.make(view, Snackbar.LENGTH_LONG).setText(view.context.getString(text)) + if (listener != null) { + val newListener = { + listener.invoke(view) + } + if (action != 0) { + snackbar.setAction(view.context.getString(action), newListener) + } + } + snackbar.anchorView = anchorView + snackbar.show() + } +}