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 236970e047..8687317ee8 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 cfedc37790..51484de68f 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(
- BrowserMenuCategory(
- context.getString(R.string.browser_menu_your_library),
- textColorResource = menuCategoryTextColor
+
+ 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)
+ }
- 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)
- },
+ 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)
+ }
- BrowserMenuDivider(),
+ val bookmarksItem = BrowserMenuImageText(
+ context.getString(R.string.library_bookmarks),
+ R.drawable.ic_bookmark_outline,
+ primaryTextColor
+ ) {
+ onItemTapped.invoke(Item.Bookmarks)
+ }
- 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)
- }
+ 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)
+ }
- 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)
- }
- )
+ 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
+ ),
+ bookmarksItem,
+ libraryItem,
+ BrowserMenuDivider(),
+ settingsItem,
+ helpItem,
+ if (Settings.getInstance(context).shouldDeleteBrowsingDataOnQuit) quitItem else null
+ )
+
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 0000000000..a1de852cf6
--- /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 3b794acb5a..ada81fcfa7 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 febbd8cf85..51ee8dcaae 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 f85b67ea3f..127f7806b8 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 17e29b4409..ac08abfa03 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