For #4155: Restyle to custom menu
parent
52fd327bc0
commit
9d30d7bb03
|
@ -4,17 +4,22 @@ import android.content.ClipData
|
|||
import android.content.ClipDescription.MIMETYPE_TEXT_PLAIN
|
||||
import android.content.ClipboardManager
|
||||
import android.content.Context.CLIPBOARD_SERVICE
|
||||
import android.view.Gravity
|
||||
import android.view.LayoutInflater
|
||||
import android.view.View
|
||||
import android.view.ViewGroup
|
||||
import android.widget.PopupMenu
|
||||
import android.widget.LinearLayout
|
||||
import android.widget.PopupWindow
|
||||
import androidx.core.content.ContextCompat
|
||||
import androidx.core.view.isVisible
|
||||
import kotlinx.android.extensions.LayoutContainer
|
||||
import kotlinx.android.synthetic.main.browser_toolbar_popup_window.view.*
|
||||
import mozilla.components.browser.domains.autocomplete.ShippedDomainsProvider
|
||||
import mozilla.components.browser.session.Session
|
||||
import mozilla.components.browser.toolbar.BrowserToolbar
|
||||
import mozilla.components.support.ktx.android.util.dpToFloat
|
||||
import mozilla.components.support.ktx.android.util.dpToPx
|
||||
import org.jetbrains.anko.dimen
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.customtabs.CustomTabToolbarMenu
|
||||
import org.mozilla.fenix.ext.components
|
||||
|
@ -47,31 +52,34 @@ class BrowserToolbarView(
|
|||
|
||||
init {
|
||||
view.setOnUrlLongClickListener {
|
||||
val popup = PopupMenu(view.context, view)
|
||||
popup.menuInflater.inflate(R.menu.browser_toolbar_popup_menu, popup.menu)
|
||||
popup.show()
|
||||
|
||||
val clipboard = view.context.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
|
||||
|
||||
popup.menu.findItem(R.id.paste)?.isVisible = clipboard.containsText()
|
||||
popup.menu.findItem(R.id.paste_and_go)?.isVisible = clipboard.containsText()
|
||||
|
||||
popup.setOnMenuItemClickListener {
|
||||
when (it.itemId) {
|
||||
R.id.copy -> {
|
||||
clipboard.primaryClip = ClipData.newPlainText("Text", view.url.toString())
|
||||
}
|
||||
|
||||
R.id.paste -> {
|
||||
interactor.onBrowserToolbarPaste(clipboard.primaryClip?.getItemAt(0)?.text.toString())
|
||||
}
|
||||
|
||||
R.id.paste_and_go -> {
|
||||
interactor.onBrowserToolbarPasteAndGo(clipboard.primaryClip?.getItemAt(0)?.text.toString())
|
||||
}
|
||||
}
|
||||
val customView = LayoutInflater.from(view.context).inflate(R.layout.browser_toolbar_popup_window, null)
|
||||
val popupWindow = PopupWindow(customView,
|
||||
LinearLayout.LayoutParams.WRAP_CONTENT,
|
||||
view.context.dimen(R.dimen.context_menu_height),
|
||||
true
|
||||
)
|
||||
|
||||
popupWindow.showAsDropDown(view, view.context.dimen(R.dimen.context_menu_x_offset), 0, Gravity.START)
|
||||
|
||||
customView.paste.isVisible = clipboard.containsText()
|
||||
customView.paste_and_go.isVisible = clipboard.containsText()
|
||||
|
||||
customView.copy.setOnClickListener {
|
||||
popupWindow.dismiss()
|
||||
clipboard.primaryClip = ClipData.newPlainText("Text", view.url.toString())
|
||||
}
|
||||
|
||||
customView.paste.setOnClickListener {
|
||||
popupWindow.dismiss()
|
||||
interactor.onBrowserToolbarPaste(clipboard.primaryClip?.getItemAt(0)?.text.toString())
|
||||
}
|
||||
|
||||
customView.paste_and_go.setOnClickListener {
|
||||
popupWindow.dismiss()
|
||||
interactor.onBrowserToolbarPasteAndGo(clipboard.primaryClip?.getItemAt(0)?.text.toString())
|
||||
}
|
||||
|
||||
true
|
||||
}
|
||||
|
||||
|
|
|
@ -0,0 +1,46 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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/. -->
|
||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
||||
android:background="@drawable/rounded_all_corners"
|
||||
android:id="@+id/browser_toolbar_popup_window"
|
||||
android:layout_gravity="center"
|
||||
android:orientation="horizontal"
|
||||
android:paddingStart="16dp"
|
||||
android:paddingEnd="16dp"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="48dp">
|
||||
<Button
|
||||
android:id="@+id/copy"
|
||||
android:minWidth="48dp"
|
||||
android:background="?selectableItemBackground"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingStart="12dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:textAllCaps="false"
|
||||
android:textColor="?primaryText"
|
||||
android:text="@string/browser_toolbar_long_press_popup_copy"/>
|
||||
<Button
|
||||
android:id="@+id/paste"
|
||||
android:minWidth="48dp"
|
||||
android:background="?selectableItemBackground"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingStart="12dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:textAllCaps="false"
|
||||
android:textColor="?primaryText"
|
||||
android:text="@string/browser_toolbar_long_press_popup_paste"/>
|
||||
<Button
|
||||
android:id="@+id/paste_and_go"
|
||||
android:background="?selectableItemBackground"
|
||||
android:layout_width="wrap_content"
|
||||
android:layout_height="match_parent"
|
||||
android:paddingStart="12dp"
|
||||
android:paddingEnd="12dp"
|
||||
android:textAllCaps="false"
|
||||
android:textColor="?primaryText"
|
||||
android:text="@string/browser_toolbar_long_press_popup_paste_and_go"/>
|
||||
</LinearLayout>
|
|
@ -1,18 +0,0 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<!-- 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/. -->
|
||||
<menu xmlns:android="http://schemas.android.com/apk/res/android">
|
||||
<item
|
||||
android:id="@+id/copy"
|
||||
android:iconTint="?primaryText"
|
||||
android:title="@string/browser_toolbar_long_press_popup_copy"/>
|
||||
<item
|
||||
android:id="@+id/paste"
|
||||
android:iconTint="?primaryText"
|
||||
android:title="@string/browser_toolbar_long_press_popup_paste"/>
|
||||
<item
|
||||
android:id="@+id/paste_and_go"
|
||||
android:iconTint="?primaryText"
|
||||
android:title="@string/browser_toolbar_long_press_popup_paste_and_go"/>
|
||||
</menu>
|
|
@ -32,6 +32,9 @@
|
|||
<dimen name="site_permissions_exceptions_item_height">56dp</dimen>
|
||||
<dimen name="component_collection_creation_list_margin">16dp</dimen>
|
||||
|
||||
<dimen name="context_menu_height">48dp</dimen>
|
||||
<dimen name="context_menu_x_offset">8dp</dimen>
|
||||
|
||||
<!--Quick Settings-->
|
||||
<dimen name="quicksettings_item_height">46dp</dimen>
|
||||
<dimen name="tracking_protection_item_height">48dp</dimen>
|
||||
|
|
|
@ -15,7 +15,6 @@
|
|||
<item name="android:colorAccent">@color/primary_text_normal_theme</item>
|
||||
<item name="android:textColorPrimary">@color/primary_text_normal_theme</item>
|
||||
<item name="android:textColorSecondary">@color/secondary_text_normal_theme</item>
|
||||
<item name="android:popupMenuStyle">@style/PopupMenu</item>
|
||||
<item name="alertDialogStyle">@style/DialogStyleNormal</item>
|
||||
<item name="alertDialogTheme">@style/DialogStyleNormal</item>
|
||||
|
||||
|
@ -99,7 +98,6 @@
|
|||
<item name="android:colorControlActivated">@color/accent_high_contrast_private_theme</item>
|
||||
<item name="android:textColorPrimary">@color/primary_text_private_theme</item>
|
||||
<item name="android:textColorSecondary">@color/secondary_text_private_theme</item>
|
||||
<item name="android:popupMenuStyle">@style/PopupMenu</item>
|
||||
<item name="alertDialogStyle">@style/DialogStyleDark</item>
|
||||
<item name="alertDialogTheme">@style/DialogStyleDark</item>
|
||||
|
||||
|
@ -301,11 +299,6 @@
|
|||
<item name="android:background">@drawable/onboarding_card_background_dark</item>
|
||||
</style>
|
||||
|
||||
<style name="PopupMenu" parent="@android:style/Widget.PopupMenu">
|
||||
<item name="android:dropDownHorizontalOffset">16dp</item>
|
||||
<item name="android:popupBackground">@drawable/rounded_all_corners</item>
|
||||
</style>
|
||||
|
||||
<style name="CreateCollectionDialogStyle" parent="DialogStyleBase"/>
|
||||
<style name="FirefoxAccountsDialogStyle" parent="DialogStyleBase">
|
||||
<item name="android:windowBackground">@drawable/scrim_background</item>
|
||||
|
|
Loading…
Reference in New Issue