From b525f2382a803d7535450974bb1a1b29dbddb6bc Mon Sep 17 00:00:00 2001 From: David Walsh Date: Thu, 27 Feb 2020 14:54:14 -0600 Subject: [PATCH] For #7504 - Update sync error display in menus (#8639) --- .../org/mozilla/fenix/home/HomeFragment.kt | 9 ++ .../java/org/mozilla/fenix/home/HomeMenu.kt | 146 ++++++++++-------- .../res/drawable/ic_sync_disconnected.xml | 15 ++ app/src/main/res/values-night/colors.xml | 4 +- app/src/main/res/values/attrs.xml | 3 +- app/src/main/res/values/colors.xml | 11 +- app/src/main/res/values/styles.xml | 4 + 7 files changed, 118 insertions(+), 74 deletions(-) create mode 100644 app/src/main/res/drawable/ic_sync_disconnected.xml diff --git a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt index 236970e04..8687317ee 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -557,6 +557,7 @@ class HomeFragment : Fragment() { nav(R.id.homeFragment, directions) } + @SuppressWarnings("ComplexMethod") private fun createHomeMenu(context: Context): HomeMenu { return HomeMenu(context) { when (it) { @@ -617,6 +618,14 @@ class HomeFragment : Fragment() { view?.let { view -> FenixSnackbar.makeWithToolbarPadding(view) } ) } + HomeMenu.Item.Sync -> { + invokePendingDeleteJobs() + hideOnboardingIfNeeded() + nav( + R.id.homeFragment, + HomeFragmentDirections.actionGlobalTurnOnSync() + ) + } } } } 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 cfedc3779..51484de68 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeMenu.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeMenu.kt @@ -14,6 +14,7 @@ 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.ext.getColorFromAttr import org.mozilla.fenix.theme.ThemeManager import org.mozilla.fenix.utils.Settings import org.mozilla.fenix.whatsnew.WhatsNew @@ -30,6 +31,7 @@ class HomeMenu( object History : Item() object Bookmarks : Item() object Quit : Item() + object Sync : Item() } val menuBuilder by lazy { BrowserMenuBuilder(menuItems) } @@ -37,86 +39,94 @@ class HomeMenu( private val hasAccountProblem get() = context.components.backgroundServices.accountManager.accountNeedsReauth() private val primaryTextColor = ThemeManager.resolveAttribute(R.attr.primaryText, context) + private val syncDisconnectedColor = ThemeManager.resolveAttribute(R.attr.syncDisconnected, context) + private val syncDisconnectedBackgroundColor = context.getColorFromAttr(R.attr.syncDisconnectedBackground) private val menuCategoryTextColor = ThemeManager.resolveAttribute(R.attr.menuCategoryText, context) private val menuItems by lazy { - val items = mutableListOf( + + val reconnectToSyncItem = BrowserMenuHighlightableItem( + context.getString(R.string.sync_reconnect), + R.drawable.ic_sync_disconnected, + iconTintColorResource = syncDisconnectedColor, + textColorResource = primaryTextColor, + highlight = BrowserMenuHighlight.HighPriority( + backgroundTint = syncDisconnectedBackgroundColor + ), + isHighlighted = { true } + ) { + onItemTapped.invoke(Item.Sync) + } + + val whatsNewItem = BrowserMenuHighlightableItem( + context.getString(R.string.browser_menu_whats_new), + R.drawable.ic_whats_new, + iconTintColorResource = primaryTextColor, + highlight = BrowserMenuHighlight.LowPriority( + notificationTint = getColor(context, R.color.whats_new_notification_color) + ), + isHighlighted = { WhatsNew.shouldHighlightWhatsNew(context) } + ) { + onItemTapped.invoke(Item.WhatsNew) + } + + val bookmarksItem = BrowserMenuImageText( + context.getString(R.string.library_bookmarks), + R.drawable.ic_bookmark_outline, + primaryTextColor + ) { + onItemTapped.invoke(Item.Bookmarks) + } + + val libraryItem = BrowserMenuImageText( + context.getString(R.string.library_history), + R.drawable.ic_history, + primaryTextColor) { + onItemTapped.invoke(Item.History) + } + + val settingsItem = BrowserMenuImageText( + context.getString(R.string.browser_menu_settings), + R.drawable.ic_settings, + primaryTextColor + ) { + onItemTapped.invoke(Item.Settings) + } + + val helpItem = BrowserMenuImageText( + context.getString(R.string.browser_menu_help), + R.drawable.ic_help, + primaryTextColor + ) { + onItemTapped.invoke(Item.Help) + } + + val quitItem = BrowserMenuImageText( + context.getString(R.string.delete_browsing_data_on_quit_action), + R.drawable.ic_exit, + primaryTextColor + ) { + onItemTapped.invoke(Item.Quit) + } + + val items = listOfNotNull( + if (hasAccountProblem) reconnectToSyncItem else null, + whatsNewItem, + BrowserMenuDivider(), BrowserMenuCategory( context.getString(R.string.browser_menu_your_library), textColorResource = menuCategoryTextColor ), - - BrowserMenuImageText( - context.getString(R.string.library_bookmarks), - R.drawable.ic_bookmark_outline, - primaryTextColor - ) { - onItemTapped.invoke(Item.Bookmarks) - }, - - BrowserMenuImageText( - context.getString(R.string.library_history), - R.drawable.ic_history, - primaryTextColor - ) { - onItemTapped.invoke(Item.History) - }, - + bookmarksItem, + libraryItem, BrowserMenuDivider(), - - BrowserMenuHighlightableItem( - label = context.getString(R.string.browser_menu_settings), - startImageResource = 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 = BrowserMenuHighlight.HighPriority( - endImageResource = R.drawable.ic_alert, - backgroundTint = getColor(context, R.color.sync_error_background_color) - ), - isHighlighted = { hasAccountProblem } - ) { - onItemTapped.invoke(Item.Settings) - }, - - BrowserMenuHighlightableItem( - context.getString(R.string.browser_menu_whats_new), - R.drawable.ic_whats_new, - iconTintColorResource = primaryTextColor, - highlight = BrowserMenuHighlight.LowPriority( - notificationTint = getColor(context, R.color.whats_new_notification_color) - ), - isHighlighted = { WhatsNew.shouldHighlightWhatsNew(context) } - ) { - onItemTapped.invoke(Item.WhatsNew) - }, - - BrowserMenuImageText( - context.getString(R.string.browser_menu_help), - R.drawable.ic_help, - primaryTextColor - ) { - onItemTapped.invoke(Item.Help) - } - + settingsItem, + helpItem, + if (Settings.getInstance(context).shouldDeleteBrowsingDataOnQuit) quitItem else null ) - if (Settings.getInstance(context).shouldDeleteBrowsingDataOnQuit) { - items.add( - BrowserMenuImageText( - context.getString(R.string.delete_browsing_data_on_quit_action), - R.drawable.ic_exit, - primaryTextColor - ) { - onItemTapped.invoke(Item.Quit) - } - ) - } - items } } diff --git a/app/src/main/res/drawable/ic_sync_disconnected.xml b/app/src/main/res/drawable/ic_sync_disconnected.xml new file mode 100644 index 000000000..a1de852cf --- /dev/null +++ b/app/src/main/res/drawable/ic_sync_disconnected.xml @@ -0,0 +1,15 @@ + + + + + diff --git a/app/src/main/res/values-night/colors.xml b/app/src/main/res/values-night/colors.xml index 3b794acb5..ada81fcfa 100644 --- a/app/src/main/res/values-night/colors.xml +++ b/app/src/main/res/values-night/colors.xml @@ -32,8 +32,8 @@ @color/toolbar_divider_color_dark_theme @color/accent_on_dark_background_normal_theme @color/primary_text_normal_theme - - + @color/sync_disconnected_icon_fill_dark_theme + @color/sync_disconnected_background_dark_theme @color/collection_icon_color_violet_dark_theme diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index febbd8cf8..51ee8dcaa 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -27,7 +27,6 @@ - @@ -41,6 +40,8 @@ + + diff --git a/app/src/main/res/values/colors.xml b/app/src/main/res/values/colors.xml index f85b67ea3..127f7806b 100644 --- a/app/src/main/res/values/colors.xml +++ b/app/src/main/res/values/colors.xml @@ -34,7 +34,8 @@ @color/foundation_light_theme #CDCCCF @color/accent_light_theme - + #C45A27 + #FFFDE2 #FBFBFE @@ -65,7 +66,8 @@ @color/foundation_dark_theme @color/neutral_faded_dark_theme @color/accent_on_dark_background_normal_theme - + #FFF36E + #5B5846 #FBFBFE @@ -94,7 +96,8 @@ #403760 @color/accent_on_dark_background_private_theme @color/primary_text_private_theme - + #C45A27 + #5B5846 @color/primary_text_light_theme @@ -122,6 +125,8 @@ @color/toolbar_divider_color_light_theme @color/fill_link_from_clipboard_light_theme @color/accent_light_theme + @color/sync_disconnected_icon_fill_light_theme + @color/sync_disconnected_background_light_theme #DFDFE3 diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 17e29b440..ac08abfa0 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -56,6 +56,8 @@ @color/toolbar_divider_color_normal_theme @color/fill_link_from_clipboard_normal_theme @color/menu_category_normal_theme + @color/sync_disconnected_icon_fill_normal_theme + @color/sync_disconnected_background_normal_theme @drawable/ic_logo_wordmark_normal @@ -147,6 +149,8 @@ @color/toolbar_divider_color_private_theme @color/fill_link_from_clipboard_private_theme @color/menu_category_private_theme + @color/sync_disconnected_icon_fill_private_theme + @color/sync_disconnected_background_private_theme @drawable/ic_logo_wordmark_private