diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt index 5bc0f4ca33..109f12105d 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt @@ -21,6 +21,7 @@ import mozilla.components.browser.menu.item.BrowserMenuDivider import mozilla.components.browser.menu.item.BrowserMenuHighlightableItem import mozilla.components.browser.menu.item.BrowserMenuImageSwitch import mozilla.components.browser.menu.item.BrowserMenuImageText +import mozilla.components.browser.menu.item.BrowserMenuImageTextCheckboxButton import mozilla.components.browser.menu.item.BrowserMenuItemToolbar import mozilla.components.browser.menu.item.WebExtensionPlaceholderMenuItem import mozilla.components.browser.state.selector.findTab @@ -163,8 +164,7 @@ class DefaultToolbarMenu( secondaryImageTintResource = primaryTextColor(), disableInSecondaryState = false ) { - if (!isCurrentUrlBookmarked) isCurrentUrlBookmarked = true - onItemTapped.invoke(ToolbarMenu.Item.Bookmark) + handleBookmarkItemTapped() } BrowserMenuItemToolbar(listOf(back, forward, bookmark, share, refresh)) @@ -375,14 +375,6 @@ class DefaultToolbarMenu( onItemTapped.invoke(ToolbarMenu.Item.NewTab) } - val bookmarksItem = BrowserMenuImageText( - context.getString(R.string.library_bookmarks), - R.drawable.ic_bookmark_filled, - primaryTextColor() - ) { - onItemTapped.invoke(ToolbarMenu.Item.Bookmarks) - } - val historyItem = BrowserMenuImageText( context.getString(R.string.library_history), R.drawable.ic_history, @@ -495,6 +487,23 @@ class DefaultToolbarMenu( onItemTapped.invoke(ToolbarMenu.Item.Settings) } + val bookmarksItem = BrowserMenuImageTextCheckboxButton( + imageResource = R.drawable.ic_bookmarks_menu, + iconTintColorResource = primaryTextColor(), + label = context.getString(R.string.library_bookmarks), + labelListener = { + onItemTapped.invoke(ToolbarMenu.Item.Bookmarks) + }, + primaryStateIconResource = R.drawable.ic_bookmark_outline, + secondaryStateIconResource = R.drawable.ic_bookmark_filled, + tintColorResource = accentBrightTextColor(), + primaryLabel = context.getString(R.string.add_label), + secondaryLabel = context.getString(R.string.edit_label), + isInPrimaryState = { !isCurrentUrlBookmarked } + ) { + handleBookmarkItemTapped() + } + val menuItems = listOfNotNull( if (isTopToolbarSelected) menuToolbar else null, @@ -524,10 +533,19 @@ class DefaultToolbarMenu( menuItems } + private fun handleBookmarkItemTapped() { + if (!isCurrentUrlBookmarked) isCurrentUrlBookmarked = true + onItemTapped.invoke(ToolbarMenu.Item.Bookmark) + } + @ColorRes @VisibleForTesting internal fun primaryTextColor() = ThemeManager.resolveAttribute(R.attr.primaryText, context) + @ColorRes + @VisibleForTesting + internal fun accentBrightTextColor() = ThemeManager.resolveAttribute(R.attr.accentBright, context) + @VisibleForTesting internal fun registerForIsBookmarkedUpdates() { store.flowScoped(lifecycleOwner) { flow -> diff --git a/app/src/main/res/drawable/ic_bookmarks_menu.xml b/app/src/main/res/drawable/ic_bookmarks_menu.xml new file mode 100644 index 0000000000..b0ef0537a6 --- /dev/null +++ b/app/src/main/res/drawable/ic_bookmarks_menu.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/app/src/main/res/values/strings.xml b/app/src/main/res/values/strings.xml index c596164c0d..833d0e24a0 100644 --- a/app/src/main/res/values/strings.xml +++ b/app/src/main/res/values/strings.xml @@ -7,6 +7,10 @@ Cancel Save + + Add + + Edit Private %s