1
0
Fork 0

For #4155: Restyle to custom menu

master
Sawyer Blatz 2019-09-06 14:11:03 -07:00
parent 52fd327bc0
commit 9d30d7bb03
5 changed files with 80 additions and 48 deletions

View File

@ -4,17 +4,22 @@ import android.content.ClipData
import android.content.ClipDescription.MIMETYPE_TEXT_PLAIN import android.content.ClipDescription.MIMETYPE_TEXT_PLAIN
import android.content.ClipboardManager import android.content.ClipboardManager
import android.content.Context.CLIPBOARD_SERVICE import android.content.Context.CLIPBOARD_SERVICE
import android.view.Gravity
import android.view.LayoutInflater import android.view.LayoutInflater
import android.view.View import android.view.View
import android.view.ViewGroup import android.view.ViewGroup
import android.widget.PopupMenu import android.widget.LinearLayout
import android.widget.PopupWindow
import androidx.core.content.ContextCompat import androidx.core.content.ContextCompat
import androidx.core.view.isVisible
import kotlinx.android.extensions.LayoutContainer 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.domains.autocomplete.ShippedDomainsProvider
import mozilla.components.browser.session.Session import mozilla.components.browser.session.Session
import mozilla.components.browser.toolbar.BrowserToolbar import mozilla.components.browser.toolbar.BrowserToolbar
import mozilla.components.support.ktx.android.util.dpToFloat import mozilla.components.support.ktx.android.util.dpToFloat
import mozilla.components.support.ktx.android.util.dpToPx import mozilla.components.support.ktx.android.util.dpToPx
import org.jetbrains.anko.dimen
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.customtabs.CustomTabToolbarMenu import org.mozilla.fenix.customtabs.CustomTabToolbarMenu
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
@ -47,31 +52,34 @@ class BrowserToolbarView(
init { init {
view.setOnUrlLongClickListener { 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 val clipboard = view.context.getSystemService(CLIPBOARD_SERVICE) as ClipboardManager
val customView = LayoutInflater.from(view.context).inflate(R.layout.browser_toolbar_popup_window, null)
popup.menu.findItem(R.id.paste)?.isVisible = clipboard.containsText() val popupWindow = PopupWindow(customView,
popup.menu.findItem(R.id.paste_and_go)?.isVisible = clipboard.containsText() LinearLayout.LayoutParams.WRAP_CONTENT,
view.context.dimen(R.dimen.context_menu_height),
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())
}
}
true 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 true
} }

View File

@ -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>

View File

@ -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>

View File

@ -32,6 +32,9 @@
<dimen name="site_permissions_exceptions_item_height">56dp</dimen> <dimen name="site_permissions_exceptions_item_height">56dp</dimen>
<dimen name="component_collection_creation_list_margin">16dp</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--> <!--Quick Settings-->
<dimen name="quicksettings_item_height">46dp</dimen> <dimen name="quicksettings_item_height">46dp</dimen>
<dimen name="tracking_protection_item_height">48dp</dimen> <dimen name="tracking_protection_item_height">48dp</dimen>

View File

@ -15,7 +15,6 @@
<item name="android:colorAccent">@color/primary_text_normal_theme</item> <item name="android:colorAccent">@color/primary_text_normal_theme</item>
<item name="android:textColorPrimary">@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:textColorSecondary">@color/secondary_text_normal_theme</item>
<item name="android:popupMenuStyle">@style/PopupMenu</item>
<item name="alertDialogStyle">@style/DialogStyleNormal</item> <item name="alertDialogStyle">@style/DialogStyleNormal</item>
<item name="alertDialogTheme">@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:colorControlActivated">@color/accent_high_contrast_private_theme</item>
<item name="android:textColorPrimary">@color/primary_text_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:textColorSecondary">@color/secondary_text_private_theme</item>
<item name="android:popupMenuStyle">@style/PopupMenu</item>
<item name="alertDialogStyle">@style/DialogStyleDark</item> <item name="alertDialogStyle">@style/DialogStyleDark</item>
<item name="alertDialogTheme">@style/DialogStyleDark</item> <item name="alertDialogTheme">@style/DialogStyleDark</item>
@ -301,11 +299,6 @@
<item name="android:background">@drawable/onboarding_card_background_dark</item> <item name="android:background">@drawable/onboarding_card_background_dark</item>
</style> </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="CreateCollectionDialogStyle" parent="DialogStyleBase"/>
<style name="FirefoxAccountsDialogStyle" parent="DialogStyleBase"> <style name="FirefoxAccountsDialogStyle" parent="DialogStyleBase">
<item name="android:windowBackground">@drawable/scrim_background</item> <item name="android:windowBackground">@drawable/scrim_background</item>