From 9258df2c69520bb1c32dc66a261fd5ced596b0fb Mon Sep 17 00:00:00 2001 From: mcarare Date: Mon, 4 Nov 2019 12:15:37 +0200 Subject: [PATCH] For #3523 Add Firefox Sync error states also to Settings in Home menu --- .../java/org/mozilla/fenix/home/HomeMenu.kt | 40 ++++++++++++++----- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeMenu.kt b/app/src/main/java/org/mozilla/fenix/home/HomeMenu.kt index 4acf1b90d..678ca17a6 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeMenu.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeMenu.kt @@ -11,6 +11,7 @@ import mozilla.components.browser.menu.item.BrowserMenuDivider import mozilla.components.browser.menu.item.BrowserMenuHighlightableItem import mozilla.components.browser.menu.item.BrowserMenuImageText import org.mozilla.fenix.R +import org.mozilla.fenix.ext.components import org.mozilla.fenix.theme.ThemeManager import org.mozilla.fenix.utils.Settings import org.mozilla.fenix.whatsnew.WhatsNew @@ -31,17 +32,24 @@ class HomeMenu( val menuBuilder by lazy { BrowserMenuBuilder(menuItems) } + private val hasAccountProblem = context.components.backgroundServices.accountManager.accountNeedsReauth() + private val primaryTextColor = + ThemeManager.resolveAttribute(R.attr.primaryText, context) + + private val menuCategoryTextColor = + ThemeManager.resolveAttribute(R.attr.menuCategoryText, context) + private val menuItems by lazy { val items = mutableListOf( BrowserMenuCategory( context.getString(R.string.browser_menu_your_library), - textColorResource = ThemeManager.resolveAttribute(R.attr.menuCategoryText, context) + textColorResource = menuCategoryTextColor ), BrowserMenuImageText( context.getString(R.string.library_bookmarks), R.drawable.ic_bookmark_outline, - ThemeManager.resolveAttribute(R.attr.primaryText, context) + primaryTextColor ) { onItemTapped.invoke(Item.Bookmarks) }, @@ -49,17 +57,29 @@ class HomeMenu( BrowserMenuImageText( context.getString(R.string.library_history), R.drawable.ic_history, - ThemeManager.resolveAttribute(R.attr.primaryText, context) + primaryTextColor ) { onItemTapped.invoke(Item.History) }, BrowserMenuDivider(), - BrowserMenuImageText( - context.getString(R.string.browser_menu_settings), - R.drawable.ic_settings, - ThemeManager.resolveAttribute(R.attr.primaryText, context) + BrowserMenuHighlightableItem( + label = context.getString(R.string.browser_menu_settings), + imageResource = R.drawable.ic_settings, + iconTintColorResource = + if (hasAccountProblem) R.color.sync_error_text_color else primaryTextColor, + + textColorResource = + if (hasAccountProblem) R.color.sync_error_text_color else primaryTextColor, + + highlight = if (hasAccountProblem) { + BrowserMenuHighlightableItem.Highlight( + endImageResource = R.drawable.ic_alert, + backgroundResource = R.drawable.sync_error_background_with_ripple, + colorResource = R.color.sync_error_background_color + ) + } else null ) { onItemTapped.invoke(Item.Settings) }, @@ -83,19 +103,19 @@ class HomeMenu( BrowserMenuImageText( context.getString(R.string.browser_menu_help), R.drawable.ic_help, - ThemeManager.resolveAttribute(R.attr.primaryText, context) + primaryTextColor ) { onItemTapped.invoke(Item.Help) } - ) + ) if (Settings.getInstance(context).shouldDeleteBrowsingDataOnQuit) { items.add( BrowserMenuImageText( context.getString(R.string.delete_browsing_data_on_quit_action), R.drawable.ic_exit, - ThemeManager.resolveAttribute(R.attr.primaryText, context) + primaryTextColor ) { onItemTapped.invoke(Item.Quit) }