1
0
Fork 0

For #7155 Align custom tabs overflow menu to original mocks

Reverse menu items order when toolbar position is top
master
mcarare 2019-12-30 14:11:24 +02:00 committed by Emily Kager
parent 6aa8c98e00
commit b115a00589
4 changed files with 19 additions and 8 deletions

View File

@ -178,6 +178,7 @@ class BrowserToolbarView(
this,
sessionManager,
customTabSession?.id,
shouldReverseItems = !shouldUseBottomToolbar,
onItemTapped = {
interactor.onBrowserToolbarMenuItemTapped(it)
}

View File

@ -5,12 +5,14 @@
package org.mozilla.fenix.customtabs
import android.content.Context
import android.graphics.Typeface
import mozilla.components.browser.menu.BrowserMenuBuilder
import mozilla.components.browser.menu.item.BrowserMenuDivider
import mozilla.components.browser.menu.item.BrowserMenuImageText
import mozilla.components.browser.menu.item.BrowserMenuItemToolbar
import mozilla.components.browser.menu.item.BrowserMenuSwitch
import mozilla.components.browser.menu.item.SimpleBrowserMenuItem
import mozilla.components.browser.menu.item.BrowserMenuImageSwitch
import mozilla.components.browser.menu.item.BrowserMenuCategory
import mozilla.components.browser.session.Session
import mozilla.components.browser.session.SessionManager
import org.mozilla.fenix.R
@ -21,6 +23,7 @@ class CustomTabToolbarMenu(
private val context: Context,
private val sessionManager: SessionManager,
private val sessionId: String?,
private val shouldReverseItems: Boolean,
private val onItemTapped: (ToolbarMenu.Item) -> Unit = {}
) : ToolbarMenu {
override val menuBuilder by lazy { BrowserMenuBuilder(menuItems) }
@ -84,16 +87,17 @@ class CustomTabToolbarMenu(
}
private val menuItems by lazy {
listOf(
menuToolbar,
val menuItems = listOf(
poweredBy,
BrowserMenuDivider(),
share,
desktopMode,
findInPage,
openInFenix,
BrowserMenuDivider(),
poweredBy
menuToolbar
)
if (shouldReverseItems) { menuItems.reversed() } else { menuItems }
}
private val share = BrowserMenuImageText(
@ -105,7 +109,8 @@ class CustomTabToolbarMenu(
onItemTapped.invoke(ToolbarMenu.Item.Share)
}
private val desktopMode = BrowserMenuSwitch(
private val desktopMode = BrowserMenuImageSwitch(
imageResource = R.drawable.ic_desktop,
label = context.getString(R.string.browser_menu_desktop_site),
initialState = { session?.desktopMode ?: false }
) { checked ->
@ -130,13 +135,14 @@ class CustomTabToolbarMenu(
onItemTapped.invoke(ToolbarMenu.Item.OpenInFenix)
}
private val poweredBy = SimpleBrowserMenuItem(
private val poweredBy = BrowserMenuCategory(
label = {
val appName = context.getString(R.string.app_name)
context.getString(R.string.browser_menu_powered_by, appName).toUpperCase()
}(),
textSize = ToolbarMenu.CAPTION_TEXT_SIZE,
textColorResource = primaryTextColor()
textColorResource = primaryTextColor(),
textStyle = Typeface.NORMAL
)
private fun primaryTextColor() = ThemeManager.resolveAttribute(R.attr.primaryText, context)

View File

@ -25,6 +25,7 @@ class CustomTabsIntegration(
activity: Activity,
engineLayout: View,
onItemTapped: (ToolbarMenu.Item) -> Unit = {},
shouldReverseItems: Boolean,
isPrivate: Boolean
) : LifecycleAwareFeature, UserInteractionHandler {
@ -86,6 +87,7 @@ class CustomTabsIntegration(
activity,
sessionManager,
sessionId,
shouldReverseItems,
onItemTapped = onItemTapped
)
}

View File

@ -35,6 +35,7 @@ import org.mozilla.fenix.browser.FenixSnackbarDelegate
import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.nav
import org.mozilla.fenix.ext.requireComponents
import org.mozilla.fenix.ext.settings
/**
* Fragment used for browsing the web within external apps.
@ -68,7 +69,8 @@ class ExternalAppBrowserFragment : BaseBrowserFragment(), UserInteractionHandler
activity = activity,
engineLayout = view.swipeRefresh,
onItemTapped = { browserInteractor.onBrowserToolbarMenuItemTapped(it) },
isPrivate = (activity as HomeActivity).browsingModeManager.mode.isPrivate
isPrivate = (activity as HomeActivity).browsingModeManager.mode.isPrivate,
shouldReverseItems = !activity.settings().shouldUseBottomToolbar
),
owner = this,
view = view