1
0
Fork 0

Closes #438: Adds dynamic nav bar color

master
Sawyer Blatz 2019-02-12 07:51:42 -08:00 committed by Colin Lee
parent 616af429dd
commit d543d776b1
5 changed files with 28 additions and 6 deletions

View File

@ -54,14 +54,25 @@ class DefaultThemeManager : ThemeManager {
} }
// Handles status bar theme change since the window does not dynamically recreate // Handles status bar theme change since the window does not dynamically recreate
fun applyStatusBarTheme(window: Window, themeManager: ThemeManager, context: Context) { fun applyStatusBarTheme(
window: Window,
themeManager: ThemeManager,
context: Context,
onHomeScreen: Boolean = true
) {
window.statusBarColor = ContextCompat window.statusBarColor = ContextCompat
.getColor(context, DefaultThemeManager .getColor(context, DefaultThemeManager
.resolveAttribute(android.R.attr.statusBarColor, context)) .resolveAttribute(android.R.attr.statusBarColor, context))
window.navigationBarColor = ContextCompat if (onHomeScreen) {
.getColor(context, DefaultThemeManager window.navigationBarColor = ContextCompat
.resolveAttribute(android.R.attr.navigationBarColor, context)) .getColor(context, DefaultThemeManager
.resolveAttribute(R.attr.navigationBarColorHome, context))
} else {
window.navigationBarColor = ContextCompat
.getColor(context, DefaultThemeManager
.resolveAttribute(R.attr.navigationBarColorBrowser, context))
}
when (themeManager.currentTheme) { when (themeManager.currentTheme) {
ThemeManager.Theme.Light -> { ThemeManager.Theme.Light -> {

View File

@ -32,6 +32,7 @@ import mozilla.components.feature.session.SessionUseCases
import mozilla.components.support.base.feature.BackHandler import mozilla.components.support.base.feature.BackHandler
import mozilla.components.support.base.feature.ViewBoundFeatureWrapper import mozilla.components.support.base.feature.ViewBoundFeatureWrapper
import org.mozilla.fenix.DefaultThemeManager import org.mozilla.fenix.DefaultThemeManager
import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.components.FindInPageIntegration import org.mozilla.fenix.components.FindInPageIntegration
import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.requireComponents
@ -89,6 +90,9 @@ class BrowserFragment : Fragment(), BackHandler {
} }
} }
val activity = activity as HomeActivity
DefaultThemeManager.applyStatusBarTheme(activity.window, activity.themeManager, activity, false)
return view return view
} }

View File

@ -20,6 +20,7 @@ import kotlinx.android.synthetic.main.fragment_home.view.*
import kotlinx.android.synthetic.main.tab_list_header.view.* import kotlinx.android.synthetic.main.tab_list_header.view.*
import mozilla.components.browser.session.Session import mozilla.components.browser.session.Session
import mozilla.components.browser.session.SessionManager import mozilla.components.browser.session.SessionManager
import org.mozilla.fenix.DefaultThemeManager
import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.ext.increaseTapArea import org.mozilla.fenix.ext.increaseTapArea
@ -49,6 +50,8 @@ class HomeFragment : Fragment() {
TabsComponent(view.homeLayout, bus, TabsState(requireComponents.core.sessionManager.sessions)) TabsComponent(view.homeLayout, bus, TabsState(requireComponents.core.sessionManager.sessions))
SessionsComponent(view.homeLayout, bus) SessionsComponent(view.homeLayout, bus)
ActionBusFactory.get(this).logMergedObservables() ActionBusFactory.get(this).logMergedObservables()
val activity = activity as HomeActivity
DefaultThemeManager.applyStatusBarTheme(activity.window, activity.themeManager, activity)
return view return view
} }

View File

@ -21,6 +21,7 @@
<attr name="menuButtonTint" format="reference"/> <attr name="menuButtonTint" format="reference"/>
<attr name="toolbarWrapperBackground" format="reference"/> <attr name="toolbarWrapperBackground" format="reference"/>
<attr name="toolbarTextColor" format="reference"/> <attr name="toolbarTextColor" format="reference"/>
<attr name="navigationBarColorHome" format="reference"/>
<!-- Search fragment --> <!-- Search fragment -->
<attr name="searchBackground" format="reference"/> <attr name="searchBackground" format="reference"/>
@ -32,4 +33,5 @@
<attr name="browserToolbarBackground" format="reference"/> <attr name="browserToolbarBackground" format="reference"/>
<attr name="browserToolbarIcons" format="reference"/> <attr name="browserToolbarIcons" format="reference"/>
<attr name="browserToolbarHomeIcon" format="reference"/> <attr name="browserToolbarHomeIcon" format="reference"/>
<attr name="navigationBarColorBrowser" format="reference"/>
</resources> </resources>

View File

@ -10,7 +10,8 @@
<item name="android:colorPrimary">@color/off_white</item> <item name="android:colorPrimary">@color/off_white</item>
<!-- Style the navigation bar --> <!-- Style the navigation bar -->
<item name="android:navigationBarColor">@android:color/transparent</item> <item name="navigationBarColorHome">@android:color/transparent</item>
<item name="navigationBarColorBrowser">@android:color/transparent</item>
<!-- Home fragment colors --> <!-- Home fragment colors -->
<item name="homeBackgroundTopGradient">@color/off_white</item> <item name="homeBackgroundTopGradient">@color/off_white</item>
@ -48,7 +49,8 @@
<item name="android:colorPrimary">@color/private_browsing_primary</item> <item name="android:colorPrimary">@color/private_browsing_primary</item>
<!-- Style the navigation bar --> <!-- Style the navigation bar -->
<item name="android:navigationBarColor">@color/private_browsing_top_gradient</item> <item name="navigationBarColorHome">@color/private_browsing_bottom_gradient</item>
<item name="navigationBarColorBrowser">@color/private_browsing_top_gradient</item>
<!-- Home fragment colors --> <!-- Home fragment colors -->
<item name="homeBackgroundTopGradient">@color/private_browsing_top_gradient</item> <item name="homeBackgroundTopGradient">@color/private_browsing_top_gradient</item>