From d09dc149ed0cb014dfbe10e284afa62a31e2b87c Mon Sep 17 00:00:00 2001 From: Sawyer Blatz Date: Fri, 8 Feb 2019 09:43:17 -0800 Subject: [PATCH] Closes #363 & Closes #364: Adds private browsing theme (#405) * For #345 #346 - Adds private browsing theme Co-authored-by: Sawyer Blatz * Abstracts theme management * Theme browser toolbar * Remove unused imports * Begin work on sharedPreferences * fix lint * #346 - Refactors ThemeManager to take a callback * Adds clean status bar and nav bar * lint * Themes settings icons better * Small clean up --- app/src/main/AndroidManifest.xml | 4 +- .../java/org/mozilla/fenix/HomeActivity.kt | 10 ++ .../java/org/mozilla/fenix/ThemeManager.kt | 79 +++++++++++++++ .../mozilla/fenix/browser/BrowserFragment.kt | 11 ++- .../org/mozilla/fenix/home/HomeFragment.kt | 21 ++++ .../java/org/mozilla/fenix/home/SearchView.kt | 45 +++++++-- .../fenix/search/toolbar/ToolbarComponent.kt | 15 +++ .../search/toolbar/ToolbarIntegration.kt | 5 +- .../fenix/search/toolbar/ToolbarMenu.kt | 23 ++--- .../ic_logo_wordmark_white.png | Bin 0 -> 67552 bytes .../res/drawable/home_background_gradient.xml | 15 +++ .../home_search_background_private.xml | 12 +++ .../home_search_background_private_dark.xml | 12 +++ ...arch_background_private_dark_no_border.xml | 12 +++ app/src/main/res/drawable/ic_home_white.xml | 13 +++ app/src/main/res/drawable/ic_link.xml | 4 + .../private_browsing_button_background.xml | 19 ++++ ...ivate_browsing_button_white_background.xml | 19 ++++ app/src/main/res/drawable/rounded_button.xml | 11 +++ .../main/res/layout/component_awesomebar.xml | 8 +- app/src/main/res/layout/component_search.xml | 6 +- app/src/main/res/layout/fragment_browser.xml | 9 +- app/src/main/res/layout/fragment_home.xml | 10 +- app/src/main/res/layout/fragment_search.xml | 20 ++-- .../main/res/layout/layout_url_backround.xml | 2 +- app/src/main/res/values-v23/styles.xml | 31 +++++- app/src/main/res/values-v27/styles.xml | 31 +++++- app/src/main/res/values/attrs.xml | 24 +++++ app/src/main/res/values/colors.xml | 10 ++ app/src/main/res/values/preference_keys.xml | 2 + app/src/main/res/values/strings.xml | 10 ++ app/src/main/res/values/styles.xml | 91 ++++++++++++++++-- 32 files changed, 526 insertions(+), 58 deletions(-) create mode 100644 app/src/main/java/org/mozilla/fenix/ThemeManager.kt create mode 100644 app/src/main/res/drawable-xxxhdpi/ic_logo_wordmark_white.png create mode 100644 app/src/main/res/drawable/home_background_gradient.xml create mode 100644 app/src/main/res/drawable/home_search_background_private.xml create mode 100644 app/src/main/res/drawable/home_search_background_private_dark.xml create mode 100644 app/src/main/res/drawable/home_search_background_private_dark_no_border.xml create mode 100644 app/src/main/res/drawable/ic_home_white.xml create mode 100644 app/src/main/res/drawable/private_browsing_button_background.xml create mode 100644 app/src/main/res/drawable/private_browsing_button_white_background.xml create mode 100644 app/src/main/res/drawable/rounded_button.xml diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index d38e807c70..61f33539d0 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -13,7 +13,7 @@ android:roundIcon="@mipmap/ic_launcher_round" android:supportsRtl="true" android:name=".FenixApplication" - android:theme="@style/LightAppTheme" + android:theme="@style/LightTheme" android:usesCleartextTraffic="true" tools:ignore="UnusedAttribute"> + android:theme="@style/SettingsTheme"/> diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt index 2912371433..f186d1ca2d 100644 --- a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -17,10 +17,20 @@ import org.mozilla.fenix.browser.BrowserFragment import org.mozilla.fenix.ext.components open class HomeActivity : AppCompatActivity() { + val themeManager = DefaultThemeManager().also { + it.onThemeChange = { theme -> + setTheme(theme) + recreate() + } + } + override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_home) + setTheme(themeManager.currentTheme) + DefaultThemeManager.applyStatusBarTheme(window, themeManager, this) + if (intent?.extras?.getBoolean(OPEN_TO_BROWSER) == true) { openToBrowser() } diff --git a/app/src/main/java/org/mozilla/fenix/ThemeManager.kt b/app/src/main/java/org/mozilla/fenix/ThemeManager.kt new file mode 100644 index 0000000000..b94d6c565d --- /dev/null +++ b/app/src/main/java/org/mozilla/fenix/ThemeManager.kt @@ -0,0 +1,79 @@ +/* This Source Code Form is subject to the terms of the Mozilla Public + License, v. 2.0. If a copy of the MPL was not distributed with this + file, You can obtain one at http://mozilla.org/MPL/2.0/. */ + +package org.mozilla.fenix + +import android.app.Activity +import android.content.Context +import android.util.TypedValue +import android.view.View +import android.view.Window +import androidx.core.content.ContextCompat + +interface ThemeManager { + enum class Theme { + Light, Private + } + + val currentTheme: Theme + fun setTheme(theme: Theme) +} + +fun Activity.setTheme(theme: ThemeManager.Theme) { + val themeCode = when (theme) { + ThemeManager.Theme.Light -> R.style.LightTheme + ThemeManager.Theme.Private -> R.style.PrivateTheme + } + + setTheme(themeCode) +} + +fun ThemeManager.Theme.isPrivate(): Boolean = this == ThemeManager.Theme.Private + +private var temporaryThemeManagerStorage = ThemeManager.Theme.Light +class DefaultThemeManager : ThemeManager { + var onThemeChange: ((ThemeManager.Theme) -> Unit)? = null + + override val currentTheme: ThemeManager.Theme + get() = temporaryThemeManagerStorage + + override fun setTheme(theme: ThemeManager.Theme) { + temporaryThemeManagerStorage = theme + + onThemeChange?.invoke(currentTheme) + } + + companion object { + fun resolveAttribute(attribute: Int, context: Context): Int { + val typedValue = TypedValue() + val theme = context.theme + theme.resolveAttribute(attribute, typedValue, true) + + return typedValue.resourceId + } + + // Handles status bar theme change since the window does not dynamically recreate + fun applyStatusBarTheme(window: Window, themeManager: ThemeManager, context: Context) { + window.statusBarColor = ContextCompat + .getColor(context, DefaultThemeManager + .resolveAttribute(android.R.attr.statusBarColor, context)) + + window.navigationBarColor = ContextCompat + .getColor(context, DefaultThemeManager + .resolveAttribute(android.R.attr.navigationBarColor, context)) + + when (themeManager.currentTheme) { + ThemeManager.Theme.Light -> { + window.decorView.systemUiVisibility = window.decorView.systemUiVisibility or + View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR or View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR + } + ThemeManager.Theme.Private -> { + window.decorView.systemUiVisibility = window.decorView.systemUiVisibility and + View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR.inv() and + View.SYSTEM_UI_FLAG_LIGHT_NAVIGATION_BAR.inv() + } + } + } + } +} diff --git a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt index 671cc9e016..91bed695b0 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt @@ -8,6 +8,7 @@ import android.annotation.SuppressLint import android.content.Context import android.content.Intent import android.os.Bundle +import android.preference.PreferenceManager import android.view.Gravity import android.view.LayoutInflater import android.view.View @@ -29,6 +30,7 @@ import mozilla.components.feature.session.SessionFeature import mozilla.components.feature.session.SessionUseCases import mozilla.components.support.ktx.android.arch.lifecycle.addObservers import org.mozilla.fenix.BackHandler +import org.mozilla.fenix.DefaultThemeManager import org.mozilla.fenix.R import org.mozilla.fenix.components.FindInPageIntegration import org.mozilla.fenix.ext.requireComponents @@ -57,6 +59,7 @@ class BrowserFragment : Fragment(), BackHandler { savedInstanceState: Bundle? ): View? { val view = inflater.inflate(R.layout.fragment_browser, container, false) + toolbarComponent = ToolbarComponent( view.browserLayout, ActionBusFactory.get(this), @@ -64,7 +67,8 @@ class BrowserFragment : Fragment(), BackHandler { ) toolbarComponent.uiView.view.apply { - setBackgroundColor(ContextCompat.getColor(view.context, R.color.offwhite)) + setBackgroundColor(ContextCompat.getColor(view.context, + DefaultThemeManager.resolveAttribute(R.attr.browserToolbarBackground, context))) (layoutParams as CoordinatorLayout.LayoutParams).apply { // Stop toolbar from collapsing if TalkBack is enabled @@ -200,6 +204,11 @@ class BrowserFragment : Fragment(), BackHandler { is ToolbarMenu.Item.RequestDesktop -> sessionUseCases.requestDesktopSite.invoke(action.item.isChecked) is ToolbarMenu.Item.Share -> requireComponents.core.sessionManager .selectedSession?.url?.apply { requireContext().share(this) } + is ToolbarMenu.Item.NewPrivateTab -> { + PreferenceManager.getDefaultSharedPreferences(context) + .edit().putBoolean(context!!.getString(R.string.pref_key_private_mode), + !PreferenceManager.getDefaultSharedPreferences(context) + .getBoolean(context!!.getString(R.string.pref_key_private_mode), false)).apply() } is ToolbarMenu.Item.ReportIssue -> requireComponents.core.sessionManager .selectedSession?.url?.apply { val reportUrl = String.format(REPORT_SITE_ISSUE_URL, this) 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 67b5369ce6..fb5b575a9f 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -13,11 +13,15 @@ import android.view.ViewGroup import androidx.constraintlayout.motion.widget.MotionLayout import androidx.fragment.app.Fragment import androidx.navigation.Navigation +import kotlinx.android.synthetic.main.fragment_home.* import kotlinx.android.synthetic.main.fragment_home.view.* +import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.R +import org.mozilla.fenix.ThemeManager import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.home.sessions.SessionsComponent import org.mozilla.fenix.home.sessions.layoutComponents +import org.mozilla.fenix.isPrivate import org.mozilla.fenix.mvi.ActionBusFactory import kotlin.math.roundToInt @@ -80,6 +84,23 @@ class HomeFragment : Fragment() { } override fun onTransitionCompleted(p0: MotionLayout?, p1: Int) { } }) + + view.toolbar_wrapper.isPrivateModeEnabled = (requireActivity() as HomeActivity) + .themeManager + .currentTheme + .isPrivate() + + privateBrowsingButton.setOnClickListener { + // When we build out private mode we will want to handle this logic elsewhere. + (requireActivity() as HomeActivity).themeManager.apply { + val newTheme = when (this.currentTheme) { + ThemeManager.Theme.Light -> ThemeManager.Theme.Private + ThemeManager.Theme.Private -> ThemeManager.Theme.Light + } + + setTheme(newTheme) + } + } } @SuppressWarnings("MagicNumber") diff --git a/app/src/main/java/org/mozilla/fenix/home/SearchView.kt b/app/src/main/java/org/mozilla/fenix/home/SearchView.kt index b348d78c54..5f96eef2ac 100644 --- a/app/src/main/java/org/mozilla/fenix/home/SearchView.kt +++ b/app/src/main/java/org/mozilla/fenix/home/SearchView.kt @@ -11,31 +11,60 @@ import android.widget.FrameLayout import org.mozilla.fenix.R class SearchView(context: Context, attrs: AttributeSet) : FrameLayout(context, attrs) { + + var isPrivateModeEnabled = false + private val lightDrawable = resources.getDrawable(R.drawable.home_search_background_light) + private val privateLightDrawable = resources.getDrawable(R.drawable.home_search_background_private) private val darkDrawable = resources.getDrawable(R.drawable.home_search_background_dark) + private val privateDarkDrawable = resources.getDrawable(R.drawable.home_search_background_private_dark) private val darkNoBorderDrawable = resources.getDrawable(R.drawable.home_search_background_dark_no_border) + private val privateDarkNoBorderDrawable = + resources.getDrawable(R.drawable.home_search_background_private_dark_no_border) private val lightToDark = TransitionDrawable(arrayOf(lightDrawable, darkDrawable)) private val darkToNoBorder = TransitionDrawable(arrayOf(darkDrawable, darkNoBorderDrawable)) + private val privateLightToDark = TransitionDrawable(arrayOf(privateLightDrawable, privateDarkDrawable)) + private val privateDarkToNoBorder = TransitionDrawable(arrayOf(privateDarkDrawable, privateDarkNoBorderDrawable)) fun transitionToLight() { - background = lightToDark - lightToDark.reverseTransition(transitionDurationMs) + if (isPrivateModeEnabled) { + background = privateLightToDark + privateLightToDark.reverseTransition(transitionDurationMs) + } else { + background = lightToDark + lightToDark.reverseTransition(transitionDurationMs) + } } fun transitionToDark() { - background = lightToDark - lightToDark.startTransition(transitionDurationMs) + if (isPrivateModeEnabled) { + background = privateLightToDark + privateLightToDark.startTransition(transitionDurationMs) + } else { + background = lightToDark + lightToDark.startTransition(transitionDurationMs) + } } fun transitionToDarkFromNoBorder() { - background = darkToNoBorder - darkToNoBorder.reverseTransition(transitionDurationMs) + if (isPrivateModeEnabled) { + background = privateDarkToNoBorder + privateDarkToNoBorder.reverseTransition(transitionDurationMs) + } else { + background = darkToNoBorder + darkToNoBorder.reverseTransition(transitionDurationMs) + } } fun transitionToDarkNoBorder() { - background = darkToNoBorder - darkToNoBorder.startTransition(transitionDurationMs) + if (isPrivateModeEnabled) { + background = privateDarkToNoBorder + privateDarkToNoBorder.startTransition(transitionDurationMs) + } else { + background = darkToNoBorder + darkToNoBorder.startTransition(transitionDurationMs) + } } companion object { diff --git a/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarComponent.kt b/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarComponent.kt index ff3fbc63dc..7a2baa1ce8 100644 --- a/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarComponent.kt +++ b/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarComponent.kt @@ -5,6 +5,11 @@ package org.mozilla.fenix.search.toolbar import android.view.ViewGroup +import androidx.core.content.ContextCompat +import kotlinx.android.synthetic.main.component_search.* +import mozilla.components.browser.toolbar.BrowserToolbar +import org.mozilla.fenix.DefaultThemeManager +import org.mozilla.fenix.R import org.mozilla.fenix.mvi.Action import org.mozilla.fenix.mvi.ActionBusFactory import org.mozilla.fenix.mvi.Change @@ -31,6 +36,16 @@ class ToolbarComponent( override fun initView() = ToolbarUIView(container, actionEmitter, changesObservable) init { render(reducer) + applyTheme() + } + + fun getView(): BrowserToolbar = uiView.toolbar + + private fun applyTheme() { + getView().textColor = ContextCompat.getColor(container.context, + DefaultThemeManager.resolveAttribute(R.attr.awesomeBarTitleTextColor, container.context)) + getView().hintColor = ContextCompat.getColor(container.context, + DefaultThemeManager.resolveAttribute(R.attr.awesomeBarDescriptionTextColor, container.context)) } } diff --git a/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarIntegration.kt b/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarIntegration.kt index c2f74bbc1a..4b80ff08bc 100644 --- a/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarIntegration.kt +++ b/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarIntegration.kt @@ -16,6 +16,7 @@ import mozilla.components.browser.toolbar.BrowserToolbar import mozilla.components.concept.storage.HistoryStorage import mozilla.components.feature.toolbar.ToolbarAutocompleteFeature import mozilla.components.feature.toolbar.ToolbarFeature +import org.mozilla.fenix.DefaultThemeManager import org.mozilla.fenix.R import org.mozilla.fenix.ext.application import org.mozilla.fenix.ext.components @@ -33,7 +34,9 @@ class ToolbarIntegration( toolbar.setMenuBuilder(toolbarMenu.menuBuilder) val home = BrowserToolbar.Button( - context.resources.getDrawable(R.drawable.ic_home, context.application.theme), + context.resources + .getDrawable(DefaultThemeManager.resolveAttribute(R.attr.browserToolbarHomeIcon, context), + context.application.theme), context.getString(R.string.browser_home_button), visible = { sessionManager.runWithSession(sessionId) { it.isCustomTabSession().not() } } ) { diff --git a/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarMenu.kt b/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarMenu.kt index 133e41436b..085224445e 100644 --- a/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarMenu.kt +++ b/app/src/main/java/org/mozilla/fenix/search/toolbar/ToolbarMenu.kt @@ -10,6 +10,7 @@ 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 org.mozilla.fenix.DefaultThemeManager import org.mozilla.fenix.R class ToolbarMenu( @@ -37,7 +38,7 @@ class ToolbarMenu( val menuToolbar by lazy { val back = BrowserMenuItemToolbar.Button( mozilla.components.ui.icons.R.drawable.mozac_ic_back, - iconTintColorResource = R.color.icons, + iconTintColorResource = DefaultThemeManager.resolveAttribute(R.attr.browserToolbarIcons, context), contentDescription = context.getString(R.string.browser_menu_back) ) { onItemTapped.invoke(Item.Back) @@ -45,7 +46,7 @@ class ToolbarMenu( val forward = BrowserMenuItemToolbar.Button( mozilla.components.ui.icons.R.drawable.mozac_ic_forward, - iconTintColorResource = R.color.icons, + iconTintColorResource = DefaultThemeManager.resolveAttribute(R.attr.browserToolbarIcons, context), contentDescription = context.getString(R.string.browser_menu_forward) ) { onItemTapped.invoke(Item.Forward) @@ -53,7 +54,7 @@ class ToolbarMenu( val refresh = BrowserMenuItemToolbar.Button( mozilla.components.ui.icons.R.drawable.mozac_ic_refresh, - iconTintColorResource = R.color.icons, + iconTintColorResource = DefaultThemeManager.resolveAttribute(R.attr.browserToolbarIcons, context), contentDescription = context.getString(R.string.browser_menu_refresh) ) { onItemTapped.invoke(Item.Reload) @@ -68,7 +69,7 @@ class ToolbarMenu( context.getString(R.string.browser_menu_help), R.drawable.ic_help, context.getString(R.string.browser_menu_help), - R.color.icons + DefaultThemeManager.resolveAttribute(R.attr.browserToolbarIcons, context) ) { onItemTapped.invoke(Item.Help) }, @@ -77,7 +78,7 @@ class ToolbarMenu( context.getString(R.string.browser_menu_settings), R.drawable.ic_settings, context.getString(R.string.browser_menu_settings), - R.color.icons + DefaultThemeManager.resolveAttribute(R.attr.browserToolbarIcons, context) ) { onItemTapped.invoke(Item.Settings) }, @@ -86,7 +87,7 @@ class ToolbarMenu( context.getString(R.string.browser_menu_library), R.drawable.ic_library, context.getString(R.string.browser_menu_library), - R.color.icons + DefaultThemeManager.resolveAttribute(R.attr.browserToolbarIcons, context) ) { onItemTapped.invoke(Item.Library) }, @@ -102,7 +103,7 @@ class ToolbarMenu( context.getString(R.string.browser_menu_find_in_page), R.drawable.mozac_ic_search, context.getString(R.string.browser_menu_find_in_page), - R.color.icons + DefaultThemeManager.resolveAttribute(R.attr.browserToolbarIcons, context) ) { onItemTapped.invoke(Item.FindInPage) }, @@ -111,7 +112,7 @@ class ToolbarMenu( context.getString(R.string.browser_menu_private_tab), R.drawable.ic_private_browsing, context.getString(R.string.browser_menu_private_tab), - R.color.icons + DefaultThemeManager.resolveAttribute(R.attr.browserToolbarIcons, context) ) { onItemTapped.invoke(Item.NewPrivateTab) }, @@ -120,7 +121,7 @@ class ToolbarMenu( context.getString(R.string.browser_menu_new_tab), R.drawable.ic_new, context.getString(R.string.browser_menu_new_tab), - R.color.icons + DefaultThemeManager.resolveAttribute(R.attr.browserToolbarIcons, context) ) { onItemTapped.invoke(Item.NewTab) }, @@ -129,7 +130,7 @@ class ToolbarMenu( context.getString(R.string.browser_menu_share), R.drawable.mozac_ic_share, context.getString(R.string.browser_menu_share), - R.color.icons + DefaultThemeManager.resolveAttribute(R.attr.browserToolbarIcons, context) ) { onItemTapped.invoke(Item.Share) }, @@ -138,7 +139,7 @@ class ToolbarMenu( context.getString(R.string.browser_menu_report_issue), R.drawable.ic_report_issues, context.getString(R.string.browser_menu_report_issue), - R.color.icons + DefaultThemeManager.resolveAttribute(R.attr.browserToolbarIcons, context) ) { onItemTapped.invoke(Item.ReportIssue) }, diff --git a/app/src/main/res/drawable-xxxhdpi/ic_logo_wordmark_white.png b/app/src/main/res/drawable-xxxhdpi/ic_logo_wordmark_white.png new file mode 100644 index 0000000000000000000000000000000000000000..6b11e82ed91c7d9eeaff2d447c1f8b11b128d136 GIT binary patch literal 67552 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 literal 0 HcmV?d00001 diff --git a/app/src/main/res/drawable/home_background_gradient.xml b/app/src/main/res/drawable/home_background_gradient.xml new file mode 100644 index 0000000000..41c81cc04b --- /dev/null +++ b/app/src/main/res/drawable/home_background_gradient.xml @@ -0,0 +1,15 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_search_background_private.xml b/app/src/main/res/drawable/home_search_background_private.xml new file mode 100644 index 0000000000..3fe9a85fcb --- /dev/null +++ b/app/src/main/res/drawable/home_search_background_private.xml @@ -0,0 +1,12 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_search_background_private_dark.xml b/app/src/main/res/drawable/home_search_background_private_dark.xml new file mode 100644 index 0000000000..54a0af3f17 --- /dev/null +++ b/app/src/main/res/drawable/home_search_background_private_dark.xml @@ -0,0 +1,12 @@ + + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/home_search_background_private_dark_no_border.xml b/app/src/main/res/drawable/home_search_background_private_dark_no_border.xml new file mode 100644 index 0000000000..d4f54cb0a1 --- /dev/null +++ b/app/src/main/res/drawable/home_search_background_private_dark_no_border.xml @@ -0,0 +1,12 @@ + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/drawable/ic_home_white.xml b/app/src/main/res/drawable/ic_home_white.xml new file mode 100644 index 0000000000..bec75dd7cd --- /dev/null +++ b/app/src/main/res/drawable/ic_home_white.xml @@ -0,0 +1,13 @@ + + + + + diff --git a/app/src/main/res/drawable/ic_link.xml b/app/src/main/res/drawable/ic_link.xml index 354708ccc2..d5ff00a3c1 100644 --- a/app/src/main/res/drawable/ic_link.xml +++ b/app/src/main/res/drawable/ic_link.xml @@ -1,3 +1,7 @@ + + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/private_browsing_button_white_background.xml b/app/src/main/res/drawable/private_browsing_button_white_background.xml new file mode 100644 index 0000000000..86a28894fc --- /dev/null +++ b/app/src/main/res/drawable/private_browsing_button_white_background.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + diff --git a/app/src/main/res/drawable/rounded_button.xml b/app/src/main/res/drawable/rounded_button.xml new file mode 100644 index 0000000000..f37577ee91 --- /dev/null +++ b/app/src/main/res/drawable/rounded_button.xml @@ -0,0 +1,11 @@ + + + + + + + + \ No newline at end of file diff --git a/app/src/main/res/layout/component_awesomebar.xml b/app/src/main/res/layout/component_awesomebar.xml index 808bcc8991..51433a8d89 100644 --- a/app/src/main/res/layout/component_awesomebar.xml +++ b/app/src/main/res/layout/component_awesomebar.xml @@ -15,7 +15,7 @@ app:layout_constraintStart_toStartOf="parent" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintBottom_toTopOf="@id/pill_wrapper" - mozac:awesomeBarTitleTextColor="#212121" - mozac:awesomeBarDescriptionTextColor="#6b6b6b" - mozac:awesomeBarChipTextColor="#ffffff" - mozac:awesomeBarChipBackgroundColor="#444444" /> \ No newline at end of file + mozac:awesomeBarTitleTextColor="?attr/awesomeBarTitleTextColor" + mozac:awesomeBarDescriptionTextColor="?attr/awesomeBarDescriptionTextColor" + mozac:awesomeBarChipTextColor="@color/offwhite" + mozac:awesomeBarChipBackgroundColor="@color/photonBlue40" /> \ No newline at end of file diff --git a/app/src/main/res/layout/component_search.xml b/app/src/main/res/layout/component_search.xml index 7b3a4185e0..895cea060a 100644 --- a/app/src/main/res/layout/component_search.xml +++ b/app/src/main/res/layout/component_search.xml @@ -10,6 +10,6 @@ android:clickable="true" android:focusable="true" android:focusableInTouchMode="true" - app:browserToolbarInsecureColor="@color/icons" - app:browserToolbarMenuColor="@color/icons" - app:browserToolbarSecureColor="@color/icons" /> \ No newline at end of file + app:browserToolbarInsecureColor="?attr/browserToolbarIcons" + app:browserToolbarMenuColor="?attr/browserToolbarIcons" + app:browserToolbarSecureColor="?attr/browserToolbarIcons" /> \ No newline at end of file diff --git a/app/src/main/res/layout/fragment_browser.xml b/app/src/main/res/layout/fragment_browser.xml index b440edf888..8b27652483 100644 --- a/app/src/main/res/layout/fragment_browser.xml +++ b/app/src/main/res/layout/fragment_browser.xml @@ -26,10 +26,11 @@ android:layout_height="wrap_content" android:padding="4dp" android:visibility="gone" + android:background="@color/private_browsing_top_gradient" mozac:awesomeBarChipBackgroundColor="#444444" mozac:awesomeBarChipTextColor="#ffffff" - mozac:awesomeBarDescriptionTextColor="#dddddd" - mozac:awesomeBarTitleTextColor="#ffffff" /> + mozac:awesomeBarDescriptionTextColor="?attr/awesomeBarDescriptionTextColor" + mozac:awesomeBarTitleTextColor="?attr/awesomeBarTitleTextColor" /> diff --git a/app/src/main/res/layout/fragment_home.xml b/app/src/main/res/layout/fragment_home.xml index 2ba308cabf..b1dab4b298 100644 --- a/app/src/main/res/layout/fragment_home.xml +++ b/app/src/main/res/layout/fragment_home.xml @@ -8,6 +8,7 @@ android:id="@+id/homeLayout" android:layout_width="match_parent" android:layout_height="match_parent" + android:background="?attr/homeBackgroundGradient" app:layoutDescription="@xml/home_scene" tools:context=".home.HomeFragment"> @@ -18,6 +19,7 @@ android:layout_marginTop="16dp" android:background="?android:attr/selectableItemBackgroundBorderless" android:src="@drawable/ic_menu" + android:tint="?attr/menuButtonTint" android:contentDescription="@string/content_description_menu" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintTop_toTopOf="parent" /> @@ -26,7 +28,7 @@ android:id="@+id/privateBrowsingButton" android:layout_width="@dimen/glyph_button_height" android:layout_height="@dimen/glyph_button_height" - android:background="?android:attr/selectableItemBackgroundBorderless" + android:background="?attr/privateBrowsingButtonBackground" android:src="@drawable/ic_private_browsing" android:contentDescription="@string/content_description_private_browsing_button" app:layout_constraintEnd_toStartOf="@id/menuButton" @@ -38,7 +40,7 @@ android:layout_height="wrap_content" android:layout_marginStart="16dp" android:layout_marginTop="42dp" - android:src="@drawable/ic_logo_wordmark" + android:src="?attr/fenixLogo" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/menuButton" /> @@ -50,7 +52,7 @@ android:layout_marginTop="64dp" android:layout_marginStart="16dp" android:elevation="@dimen/toolbar_elevation" - android:background="@drawable/home_search_background_light" + android:background="?attr/toolbarWrapperBackground" app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@id/wordmark"> @@ -68,7 +70,7 @@ android:focusable="true" android:gravity="center_vertical" android:text="@string/search_hint" - android:textColor="@color/searchText" + android:textColor="?attr/toolbarTextColor" android:textSize="14sp" /> diff --git a/app/src/main/res/layout/fragment_search.xml b/app/src/main/res/layout/fragment_search.xml index d52f651ec9..fe85de3eab 100644 --- a/app/src/main/res/layout/fragment_search.xml +++ b/app/src/main/res/layout/fragment_search.xml @@ -5,11 +5,11 @@ + android:id="@+id/search_layout" + android:background="?attr/searchBackground"> + android:layout_marginEnd="8dp" + android:textColor="?attr/searchShortcutsTextColor" + android:background="?attr/pillWrapperBackground" + android:drawableTint="?attr/searchShortcutsTextColor"/>