diff --git a/app/src/main/java/org/mozilla/fenix/BrowsingModeManager.kt b/app/src/main/java/org/mozilla/fenix/BrowsingModeManager.kt index 0b13da4d7..2d5ff3afe 100644 --- a/app/src/main/java/org/mozilla/fenix/BrowsingModeManager.kt +++ b/app/src/main/java/org/mozilla/fenix/BrowsingModeManager.kt @@ -10,40 +10,44 @@ interface BrowsingModeManager { enum class Mode { Normal, Private } -} -var temporaryModeStorage: BrowsingModeManager.Mode? = null -class DefaultBrowsingModeManager(private val homeActivity: HomeActivity) : BrowsingModeManager { val isPrivate: Boolean - get() = mode == BrowsingModeManager.Mode.Private - var mode: BrowsingModeManager.Mode - get() = temporaryModeStorage!! - set(value) { - temporaryModeStorage = value - setPreference() - updateTheme(value) - } + var mode: Mode + +} + +interface BrowserModeStorage { + fun setMode(mode: BrowsingModeManager.Mode) + fun currentMode(): BrowsingModeManager.Mode +} - private fun updateTheme(mode: BrowsingModeManager.Mode) { - homeActivity.themeManager.apply { - val newTheme = when (mode) { - BrowsingModeManager.Mode.Normal -> ThemeManager.Theme.Normal - BrowsingModeManager.Mode.Private -> ThemeManager.Theme.Private - } - setTheme(newTheme) +fun Settings.createBrowserModeStorage(): BrowserModeStorage = object : BrowserModeStorage { + override fun currentMode(): BrowsingModeManager.Mode { + return if (this@createBrowserModeStorage.usePrivateMode) { + BrowsingModeManager.Mode.Private + } else { + BrowsingModeManager.Mode.Normal } } - private fun setPreference() { - Settings.getInstance(homeActivity).setPrivateMode(isPrivate) + override fun setMode(mode: BrowsingModeManager.Mode) { + this@createBrowserModeStorage.setPrivateMode(mode == BrowsingModeManager.Mode.Private) } - init { - if (temporaryModeStorage == null) { - mode = when (Settings.getInstance(homeActivity).usePrivateMode) { - true -> BrowsingModeManager.Mode.Private - false -> BrowsingModeManager.Mode.Normal - } - } - } } + +class DefaultBrowsingModeManager(private val storage: BrowserModeStorage) : BrowsingModeManager { + override val isPrivate: Boolean + get() = mode == BrowsingModeManager.Mode.Private + + override var mode: BrowsingModeManager.Mode + get() = storage.currentMode() + set(value) = storage.setMode(value) +} + +class CustomTabBrowsingModeManager : BrowsingModeManager { + override val isPrivate = false + override var mode: BrowsingModeManager.Mode + get() = BrowsingModeManager.Mode.Normal + set(_) { return } +} \ No newline at end of file diff --git a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt index 75e107d66..bd5438d61 100644 --- a/app/src/main/java/org/mozilla/fenix/HomeActivity.kt +++ b/app/src/main/java/org/mozilla/fenix/HomeActivity.kt @@ -45,30 +45,25 @@ open class HomeActivity : AppCompatActivity() { open val isCustomTab = false private var sessionObserver: SessionManager.Observer? = null - val themeManager = DefaultThemeManager().also { - it.onThemeChange = { theme -> - setTheme(theme) - recreate() - } - } + lateinit var themeManager: ThemeManager + private val navHost by lazy { supportFragmentManager.findFragmentById(R.id.container) as NavHostFragment } - lateinit var browsingModeManager: DefaultBrowsingModeManager + lateinit var browsingModeManager: BrowsingModeManager override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) + browsingModeManager = createBrowsingModeManager() + themeManager = createThemeManager(when (browsingModeManager.isPrivate) { + true -> ThemeManager.Theme.Private + false -> ThemeManager.Theme.Normal + }) - themeManager.temporaryThemeManagerStorage = - when (Settings.getInstance(this).usePrivateMode) { - true -> ThemeManager.Theme.Private - false -> ThemeManager.Theme.Normal - } setTheme(themeManager.currentTheme) - DefaultThemeManager.applyStatusBarTheme(window, themeManager, this) - browsingModeManager = DefaultBrowsingModeManager(this) + ThemeManager.applyStatusBarTheme(window, themeManager, this) setContentView(R.layout.activity_home) @@ -95,7 +90,6 @@ open class HomeActivity : AppCompatActivity() { } override fun onDestroy() { - themeManager.onThemeChange = null sessionObserver?.let { components.core.sessionManager.unregister(it) } super.onDestroy() } @@ -263,6 +257,16 @@ open class HomeActivity : AppCompatActivity() { } } + private fun createBrowsingModeManager(): BrowsingModeManager { + return if (isCustomTab) CustomTabBrowsingModeManager() + else DefaultBrowsingModeManager(Settings.getInstance(this).createBrowserModeStorage()) + } + + private fun createThemeManager(currentTheme: ThemeManager.Theme): ThemeManager { + return if (isCustomTab) CustomTabThemeManager() + else DefaultThemeManager(currentTheme) + } + private fun subscribeToSessions(): SessionManager.Observer { return object : SessionManager.Observer { diff --git a/app/src/main/java/org/mozilla/fenix/ThemeManager.kt b/app/src/main/java/org/mozilla/fenix/ThemeManager.kt index f1688dd84..58d7be055 100644 --- a/app/src/main/java/org/mozilla/fenix/ThemeManager.kt +++ b/app/src/main/java/org/mozilla/fenix/ThemeManager.kt @@ -15,44 +15,13 @@ import androidx.core.content.ContextCompat interface ThemeManager { enum class Theme { - Normal, Private + Normal, Private; + + fun isPrivate(): Boolean = this == Private } val currentTheme: Theme fun setTheme(theme: Theme) -} - -fun Activity.setTheme(theme: ThemeManager.Theme) { - val themeCode = when (theme) { - ThemeManager.Theme.Normal -> R.style.NormalTheme - ThemeManager.Theme.Private -> R.style.PrivateTheme - } - - setTheme(themeCode) -} - -fun ThemeManager.Theme.isPrivate(): Boolean = this == ThemeManager.Theme.Private - -class DefaultThemeManager : ThemeManager { - var temporaryThemeManagerStorage = ThemeManager.Theme.Normal - - var onThemeChange: ((ThemeManager.Theme) -> Unit)? = null - - override val currentTheme: ThemeManager.Theme - get() = temporaryThemeManagerStorage - - val currentThemeResource: Int = when (currentTheme) { - ThemeManager.Theme.Normal -> R.style.NormalTheme - ThemeManager.Theme.Private -> R.style.PrivateTheme - } - - override fun setTheme(theme: ThemeManager.Theme) { - if (temporaryThemeManagerStorage != theme) { - temporaryThemeManagerStorage = theme - - onThemeChange?.invoke(currentTheme) - } - } companion object { fun resolveAttribute(attribute: Int, context: Context): Int { @@ -134,3 +103,33 @@ class DefaultThemeManager : ThemeManager { } } } + +val ThemeManager.currentThemeResource: Int + get() = when (currentTheme) { + ThemeManager.Theme.Normal -> R.style.NormalTheme + ThemeManager.Theme.Private -> R.style.PrivateTheme + } + +fun Activity.setTheme(theme: ThemeManager.Theme) { + val themeCode = when (theme) { + ThemeManager.Theme.Normal -> R.style.NormalTheme + ThemeManager.Theme.Private -> R.style.PrivateTheme + } + + setTheme(themeCode) +} + +class DefaultThemeManager(private var _currentTheme: ThemeManager.Theme) : ThemeManager { + override val currentTheme: ThemeManager.Theme + get() = _currentTheme + + override fun setTheme(theme: ThemeManager.Theme) { + if (theme == _currentTheme) return + _currentTheme = theme + } +} + +class CustomTabThemeManager : ThemeManager { + override val currentTheme = ThemeManager.Theme.Normal + override fun setTheme(theme: ThemeManager.Theme) { /* noop */ } +} 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 70db8d0cf..712c1dcca 100644 --- a/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/browser/BrowserFragment.kt @@ -44,7 +44,6 @@ import mozilla.components.feature.readerview.ReaderViewFeature import mozilla.components.feature.session.FullScreenFeature import mozilla.components.feature.session.SessionFeature import mozilla.components.feature.session.SessionUseCases -import mozilla.components.feature.session.SwipeRefreshFeature import mozilla.components.feature.session.ThumbnailsFeature import mozilla.components.feature.sitepermissions.SitePermissions import mozilla.components.feature.sitepermissions.SitePermissionsFeature @@ -55,11 +54,11 @@ import mozilla.components.support.ktx.android.view.enterToImmersiveMode import mozilla.components.support.ktx.android.view.exitImmersiveModeIfNeeded import mozilla.components.support.ktx.kotlin.toUri import org.mozilla.fenix.BrowsingModeManager -import org.mozilla.fenix.DefaultThemeManager import org.mozilla.fenix.FenixViewModelProvider import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.IntentReceiverActivity import org.mozilla.fenix.R +import org.mozilla.fenix.ThemeManager import org.mozilla.fenix.collections.CreateCollectionViewModel import org.mozilla.fenix.collections.SaveCollectionStep import org.mozilla.fenix.components.FenixSnackbar @@ -205,7 +204,7 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope { ) val activity = activity as HomeActivity - DefaultThemeManager.applyStatusBarTheme(activity.window, activity.themeManager, activity) + ThemeManager.applyStatusBarTheme(activity.window, activity.themeManager, activity) return view } @@ -290,7 +289,7 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope { view = view ) - val accentHighContrastColor = DefaultThemeManager.resolveAttribute(R.attr.accentHighContrast, requireContext()) + val accentHighContrastColor = ThemeManager.resolveAttribute(R.attr.accentHighContrast, requireContext()) sitePermissionsFeature.set( feature = SitePermissionsFeature( @@ -327,7 +326,7 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope { } else { activity?.exitImmersiveModeIfNeeded() (activity as HomeActivity).let { activity: HomeActivity -> - DefaultThemeManager.applyStatusBarTheme( + ThemeManager.applyStatusBarTheme( activity.window, activity.themeManager, activity @@ -351,7 +350,7 @@ class BrowserFragment : Fragment(), BackHandler, CoroutineScope { view = view ) - val primaryTextColor = DefaultThemeManager.resolveAttribute(R.attr.primaryText, requireContext()) + val primaryTextColor = ThemeManager.resolveAttribute(R.attr.primaryText, requireContext()) view.swipeRefresh.setColorSchemeColors(primaryTextColor) swipeRefreshFeature.set( feature = SwipeRefreshFeature( diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt index e18c4943b..0d057d508 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/DefaultToolbarMenu.kt @@ -11,9 +11,9 @@ import mozilla.components.browser.menu.item.BrowserMenuHighlightableItem 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.HomeActivity import org.mozilla.fenix.R +import org.mozilla.fenix.ThemeManager import org.mozilla.fenix.ext.asActivity import org.mozilla.fenix.ext.components @@ -30,14 +30,14 @@ class DefaultToolbarMenu( val back = BrowserMenuItemToolbar.TwoStateButton( primaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_back, primaryContentDescription = context.getString(R.string.browser_menu_back), - primaryImageTintResource = DefaultThemeManager.resolveAttribute( + primaryImageTintResource = ThemeManager.resolveAttribute( R.attr.primaryText, context ), isInPrimaryState = { context.components.core.sessionManager.selectedSession?.canGoBack ?: true }, - secondaryImageTintResource = DefaultThemeManager.resolveAttribute( + secondaryImageTintResource = ThemeManager.resolveAttribute( R.attr.neutral, context ), @@ -49,14 +49,14 @@ class DefaultToolbarMenu( val forward = BrowserMenuItemToolbar.TwoStateButton( primaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_forward, primaryContentDescription = context.getString(R.string.browser_menu_forward), - primaryImageTintResource = DefaultThemeManager.resolveAttribute( + primaryImageTintResource = ThemeManager.resolveAttribute( R.attr.primaryText, context ), isInPrimaryState = { context.components.core.sessionManager.selectedSession?.canGoForward ?: true }, - secondaryImageTintResource = DefaultThemeManager.resolveAttribute( + secondaryImageTintResource = ThemeManager.resolveAttribute( R.attr.neutral, context ), @@ -68,7 +68,7 @@ class DefaultToolbarMenu( val refresh = BrowserMenuItemToolbar.TwoStateButton( primaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_refresh, primaryContentDescription = context.getString(R.string.browser_menu_refresh), - primaryImageTintResource = DefaultThemeManager.resolveAttribute( + primaryImageTintResource = ThemeManager.resolveAttribute( R.attr.primaryText, context ), @@ -78,7 +78,7 @@ class DefaultToolbarMenu( }, secondaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_stop, secondaryContentDescription = context.getString(R.string.browser_menu_stop), - secondaryImageTintResource = DefaultThemeManager.resolveAttribute( + secondaryImageTintResource = ThemeManager.resolveAttribute( R.attr.primaryText, context ), @@ -99,7 +99,7 @@ class DefaultToolbarMenu( BrowserMenuImageText( context.getString(R.string.browser_menu_help), R.drawable.ic_help, - DefaultThemeManager.resolveAttribute(R.attr.primaryText, context) + ThemeManager.resolveAttribute(R.attr.primaryText, context) ) { onItemTapped.invoke(ToolbarMenu.Item.Help) }, @@ -109,10 +109,10 @@ class DefaultToolbarMenu( imageResource = R.drawable.ic_settings, iconTintColorResource = if (hasAccountProblem) R.color.sync_error_text_color else - DefaultThemeManager.resolveAttribute(R.attr.primaryText, context), + ThemeManager.resolveAttribute(R.attr.primaryText, context), textColorResource = if (hasAccountProblem) R.color.sync_error_text_color else - DefaultThemeManager.resolveAttribute(R.attr.primaryText, context), + ThemeManager.resolveAttribute(R.attr.primaryText, context), highlight = if (hasAccountProblem) { BrowserMenuHighlightableItem.Highlight( imageResource = R.drawable.ic_alert, @@ -126,7 +126,7 @@ class DefaultToolbarMenu( BrowserMenuImageText( context.getString(R.string.browser_menu_your_library), R.drawable.ic_library, - DefaultThemeManager.resolveAttribute(R.attr.primaryText, context) + ThemeManager.resolveAttribute(R.attr.primaryText, context) ) { onItemTapped.invoke(ToolbarMenu.Item.Library) }, @@ -139,7 +139,7 @@ class DefaultToolbarMenu( BrowserMenuImageText( context.getString(R.string.browser_menu_find_in_page), R.drawable.mozac_ic_search, - DefaultThemeManager.resolveAttribute(R.attr.primaryText, context) + ThemeManager.resolveAttribute(R.attr.primaryText, context) ) { onItemTapped.invoke(ToolbarMenu.Item.FindInPage) }, @@ -147,7 +147,7 @@ class DefaultToolbarMenu( BrowserMenuImageText( context.getString(R.string.browser_menu_private_tab), R.drawable.ic_private_browsing, - DefaultThemeManager.resolveAttribute(R.attr.primaryText, context) + ThemeManager.resolveAttribute(R.attr.primaryText, context) ) { onItemTapped.invoke(ToolbarMenu.Item.NewPrivateTab) }, @@ -155,7 +155,7 @@ class DefaultToolbarMenu( BrowserMenuImageText( context.getString(R.string.browser_menu_new_tab), R.drawable.ic_new, - DefaultThemeManager.resolveAttribute(R.attr.primaryText, context) + ThemeManager.resolveAttribute(R.attr.primaryText, context) ) { onItemTapped.invoke(ToolbarMenu.Item.NewTab) }, @@ -163,7 +163,7 @@ class DefaultToolbarMenu( BrowserMenuImageText( context.getString(R.string.browser_menu_share), R.drawable.mozac_ic_share, - DefaultThemeManager.resolveAttribute(R.attr.primaryText, context) + ThemeManager.resolveAttribute(R.attr.primaryText, context) ) { onItemTapped.invoke(ToolbarMenu.Item.Share) }, @@ -171,7 +171,7 @@ class DefaultToolbarMenu( BrowserMenuImageText( context.getString(R.string.browser_menu_report_issue), R.drawable.ic_report_issues, - DefaultThemeManager.resolveAttribute(R.attr.primaryText, context) + ThemeManager.resolveAttribute(R.attr.primaryText, context) ) { onItemTapped.invoke(ToolbarMenu.Item.ReportIssue) } @@ -182,7 +182,7 @@ class DefaultToolbarMenu( BrowserMenuImageText( context.getString(R.string.browser_menu_save_to_collection), R.drawable.ic_tab_collection, - DefaultThemeManager.resolveAttribute(R.attr.primaryText, context) + ThemeManager.resolveAttribute(R.attr.primaryText, context) ) { onItemTapped.invoke(ToolbarMenu.Item.SaveToCollection) } diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarComponent.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarComponent.kt index 117601a90..8f5e1722a 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarComponent.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarComponent.kt @@ -10,8 +10,8 @@ import androidx.core.content.ContextCompat import kotlinx.android.synthetic.main.component_search.* import mozilla.components.browser.search.SearchEngine import mozilla.components.browser.toolbar.BrowserToolbar -import org.mozilla.fenix.DefaultThemeManager import org.mozilla.fenix.R +import org.mozilla.fenix.ThemeManager import org.mozilla.fenix.mvi.ViewState import org.mozilla.fenix.mvi.Change import org.mozilla.fenix.mvi.Action @@ -60,11 +60,11 @@ class ToolbarComponent( ) getView().textColor = ContextCompat.getColor( container.context, - DefaultThemeManager.resolveAttribute(R.attr.primaryText, container.context) + ThemeManager.resolveAttribute(R.attr.primaryText, container.context) ) getView().hintColor = ContextCompat.getColor( container.context, - DefaultThemeManager.resolveAttribute(R.attr.secondaryText, container.context) + ThemeManager.resolveAttribute(R.attr.secondaryText, container.context) ) } } diff --git a/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarIntegration.kt b/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarIntegration.kt index fc432aa3e..e4e224dd7 100644 --- a/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarIntegration.kt +++ b/app/src/main/java/org/mozilla/fenix/components/toolbar/ToolbarIntegration.kt @@ -20,8 +20,8 @@ import mozilla.components.feature.toolbar.ToolbarPresenter import mozilla.components.lib.publicsuffixlist.PublicSuffixList import mozilla.components.support.base.feature.LifecycleAwareFeature import mozilla.components.support.ktx.android.view.hideKeyboard -import org.mozilla.fenix.DefaultThemeManager import org.mozilla.fenix.R +import org.mozilla.fenix.ThemeManager import org.mozilla.fenix.ext.components import org.mozilla.fenix.utils.Settings @@ -91,7 +91,7 @@ class ToolbarIntegration( sessionId, ToolbarFeature.UrlRenderConfiguration( PublicSuffixList(context), - DefaultThemeManager.resolveAttribute(R.attr.primaryText, context), renderStyle = renderStyle + ThemeManager.resolveAttribute(R.attr.primaryText, context), renderStyle = renderStyle ) ) private var menuPresenter = MenuPresenter(toolbar, context.components.core.sessionManager, sessionId) diff --git a/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabToolbarMenu.kt b/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabToolbarMenu.kt index 1bc7ce7a1..da2260bd8 100644 --- a/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabToolbarMenu.kt +++ b/app/src/main/java/org/mozilla/fenix/customtabs/CustomTabToolbarMenu.kt @@ -12,10 +12,9 @@ import mozilla.components.browser.menu.item.BrowserMenuItemToolbar import mozilla.components.browser.menu.item.SimpleBrowserMenuItem import mozilla.components.browser.session.Session import mozilla.components.browser.session.SessionManager -import org.mozilla.fenix.DefaultThemeManager import org.mozilla.fenix.R +import org.mozilla.fenix.ThemeManager import org.mozilla.fenix.components.toolbar.ToolbarMenu -import org.mozilla.fenix.ext.components class CustomTabToolbarMenu( private val context: Context, @@ -32,14 +31,14 @@ class CustomTabToolbarMenu( val back = BrowserMenuItemToolbar.TwoStateButton( primaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_back, primaryContentDescription = context.getString(R.string.browser_menu_back), - primaryImageTintResource = DefaultThemeManager.resolveAttribute( + primaryImageTintResource = ThemeManager.resolveAttribute( R.attr.primaryText, context ), isInPrimaryState = { session?.canGoBack ?: true }, - secondaryImageTintResource = DefaultThemeManager.resolveAttribute( + secondaryImageTintResource = ThemeManager.resolveAttribute( R.attr.neutral, context ), @@ -51,14 +50,14 @@ class CustomTabToolbarMenu( val forward = BrowserMenuItemToolbar.TwoStateButton( primaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_forward, primaryContentDescription = context.getString(R.string.browser_menu_forward), - primaryImageTintResource = DefaultThemeManager.resolveAttribute( + primaryImageTintResource = ThemeManager.resolveAttribute( R.attr.primaryText, context ), isInPrimaryState = { session?.canGoForward ?: true }, - secondaryImageTintResource = DefaultThemeManager.resolveAttribute( + secondaryImageTintResource = ThemeManager.resolveAttribute( R.attr.neutral, context ), @@ -70,7 +69,7 @@ class CustomTabToolbarMenu( val refresh = BrowserMenuItemToolbar.TwoStateButton( primaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_refresh, primaryContentDescription = context.getString(R.string.browser_menu_refresh), - primaryImageTintResource = DefaultThemeManager.resolveAttribute( + primaryImageTintResource = ThemeManager.resolveAttribute( R.attr.primaryText, context ), @@ -80,7 +79,7 @@ class CustomTabToolbarMenu( }, secondaryImageResource = mozilla.components.ui.icons.R.drawable.mozac_ic_stop, secondaryContentDescription = context.getString(R.string.browser_menu_stop), - secondaryImageTintResource = DefaultThemeManager.resolveAttribute( + secondaryImageTintResource = ThemeManager.resolveAttribute( R.attr.primaryText, context ), @@ -105,11 +104,11 @@ class CustomTabToolbarMenu( BrowserMenuImageText( context.getString(R.string.browser_menu_share), R.drawable.mozac_ic_share, - textColorResource = DefaultThemeManager.resolveAttribute( + textColorResource = ThemeManager.resolveAttribute( R.attr.primaryText, context ), - iconTintColorResource = DefaultThemeManager.resolveAttribute( + iconTintColorResource = ThemeManager.resolveAttribute( R.attr.primaryText, context ) @@ -122,7 +121,7 @@ class CustomTabToolbarMenu( val appName = context.getString(R.string.app_name) context.getString(R.string.browser_menu_open_in_fenix, appName) }(), - textColorResource = DefaultThemeManager.resolveAttribute( + textColorResource = ThemeManager.resolveAttribute( R.attr.primaryText, context ) @@ -138,7 +137,7 @@ class CustomTabToolbarMenu( context.getString(R.string.browser_menu_powered_by, appName).toUpperCase() }(), ToolbarMenu.CAPTION_TEXT_SIZE, - DefaultThemeManager.resolveAttribute(R.attr.primaryText, context) + ThemeManager.resolveAttribute(R.attr.primaryText, context) ) ) } diff --git a/app/src/main/java/org/mozilla/fenix/ext/Int.kt b/app/src/main/java/org/mozilla/fenix/ext/Int.kt index dd0804fb7..a8730969a 100644 --- a/app/src/main/java/org/mozilla/fenix/ext/Int.kt +++ b/app/src/main/java/org/mozilla/fenix/ext/Int.kt @@ -6,7 +6,7 @@ package org.mozilla.fenix.ext import android.content.Context import androidx.core.content.ContextCompat -import org.mozilla.fenix.DefaultThemeManager +import org.mozilla.fenix.ThemeManager -fun Int.getColorIntFromAttr(context: Context): Int = DefaultThemeManager.resolveAttribute(this, context) +fun Int.getColorIntFromAttr(context: Context): Int = ThemeManager.resolveAttribute(this, context) fun Int.getColorFromAttr(context: Context): Int = ContextCompat.getColor(context, this.getColorIntFromAttr(context)) 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 4f735025a..c03aa6e05 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeFragment.kt @@ -43,10 +43,10 @@ import org.jetbrains.anko.constraint.layout.ConstraintSetBuilder.Side.TOP import org.jetbrains.anko.constraint.layout.applyConstraintSet import org.mozilla.fenix.BrowserDirection import org.mozilla.fenix.BrowsingModeManager -import org.mozilla.fenix.DefaultThemeManager import org.mozilla.fenix.FenixViewModelProvider import org.mozilla.fenix.HomeActivity import org.mozilla.fenix.R +import org.mozilla.fenix.ThemeManager import org.mozilla.fenix.collections.CreateCollectionViewModel import org.mozilla.fenix.collections.SaveCollectionStep import org.mozilla.fenix.components.metrics.Event @@ -155,7 +155,7 @@ class HomeFragment : Fragment(), CoroutineScope, AccountObserver { ActionBusFactory.get(this).logMergedObservables() val activity = activity as HomeActivity - DefaultThemeManager.applyStatusBarTheme(activity.window, activity.themeManager, activity) + ThemeManager.applyStatusBarTheme(activity.window, activity.themeManager, activity) return view } 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 4b24d3275..fd4f4207d 100644 --- a/app/src/main/java/org/mozilla/fenix/home/HomeMenu.kt +++ b/app/src/main/java/org/mozilla/fenix/home/HomeMenu.kt @@ -8,8 +8,8 @@ import android.content.Context import mozilla.components.browser.menu.BrowserMenuBuilder import mozilla.components.browser.menu.item.BrowserMenuDivider import mozilla.components.browser.menu.item.BrowserMenuImageText -import org.mozilla.fenix.DefaultThemeManager import org.mozilla.fenix.R +import org.mozilla.fenix.ThemeManager class HomeMenu( private val context: Context, @@ -28,7 +28,7 @@ class HomeMenu( BrowserMenuImageText( context.getString(R.string.browser_menu_settings), R.drawable.ic_settings, - DefaultThemeManager.resolveAttribute(R.attr.primaryText, context) + ThemeManager.resolveAttribute(R.attr.primaryText, context) ) { onItemTapped.invoke(HomeMenu.Item.Settings) }, @@ -36,7 +36,7 @@ class HomeMenu( BrowserMenuImageText( context.getString(R.string.browser_menu_your_library), R.drawable.ic_library, - DefaultThemeManager.resolveAttribute(R.attr.primaryText, context) + ThemeManager.resolveAttribute(R.attr.primaryText, context) ) { onItemTapped.invoke(HomeMenu.Item.Library) }, @@ -45,7 +45,7 @@ class HomeMenu( BrowserMenuImageText( context.getString(R.string.browser_menu_help), R.drawable.ic_help, - DefaultThemeManager.resolveAttribute(R.attr.primaryText, context) + ThemeManager.resolveAttribute(R.attr.primaryText, context) ) { onItemTapped.invoke(HomeMenu.Item.Help) }) diff --git a/app/src/main/java/org/mozilla/fenix/home/SessionBottomSheetFragment.kt b/app/src/main/java/org/mozilla/fenix/home/SessionBottomSheetFragment.kt index 569793810..defc989aa 100644 --- a/app/src/main/java/org/mozilla/fenix/home/SessionBottomSheetFragment.kt +++ b/app/src/main/java/org/mozilla/fenix/home/SessionBottomSheetFragment.kt @@ -13,9 +13,9 @@ import androidx.core.content.ContextCompat import com.google.android.material.bottomsheet.BottomSheetDialogFragment import kotlinx.android.extensions.LayoutContainer import kotlinx.android.synthetic.main.session_bottom_sheet.view.* -import org.mozilla.fenix.DefaultThemeManager import org.mozilla.fenix.utils.ItsNotBrokenSnack import org.mozilla.fenix.R +import org.mozilla.fenix.ThemeManager import org.mozilla.fenix.ext.getColorFromAttr class SessionBottomSheetFragment : BottomSheetDialogFragment(), LayoutContainer { @@ -47,7 +47,7 @@ class SessionBottomSheetFragment : BottomSheetDialogFragment(), LayoutContainer drawable?.setColorFilter( ContextCompat.getColor( context!!, - DefaultThemeManager.resolveAttribute(R.attr.accent, context!!) + ThemeManager.resolveAttribute(R.attr.accent, context!!) ), PorterDuff.Mode.SRC_IN ) setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null) @@ -69,7 +69,7 @@ class SessionBottomSheetFragment : BottomSheetDialogFragment(), LayoutContainer drawable?.setColorFilter( ContextCompat.getColor( context!!, - DefaultThemeManager.resolveAttribute(R.attr.primaryText, context!!) + ThemeManager.resolveAttribute(R.attr.primaryText, context!!) ), PorterDuff.Mode.SRC_IN ) setCompoundDrawablesWithIntrinsicBounds(drawable, null, null, null) diff --git a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/CollectionViewHolder.kt b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/CollectionViewHolder.kt index 4fc9cba99..b7fa8abde 100644 --- a/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/CollectionViewHolder.kt +++ b/app/src/main/java/org/mozilla/fenix/home/sessioncontrol/viewholders/CollectionViewHolder.kt @@ -19,8 +19,8 @@ import kotlinx.coroutines.Job import mozilla.components.browser.menu.BrowserMenu import mozilla.components.browser.menu.BrowserMenuBuilder import mozilla.components.browser.menu.item.SimpleBrowserMenuItem -import org.mozilla.fenix.DefaultThemeManager import org.mozilla.fenix.R +import org.mozilla.fenix.ThemeManager import org.mozilla.fenix.ext.increaseTapArea import org.mozilla.fenix.ext.urlToTrimmedHost import org.mozilla.fenix.home.sessioncontrol.CollectionAction @@ -175,7 +175,7 @@ class CollectionItemMenu( listOf( SimpleBrowserMenuItem( context.getString(R.string.collection_delete), - textColorResource = DefaultThemeManager.resolveAttribute(R.attr.destructive, context) + textColorResource = ThemeManager.resolveAttribute(R.attr.destructive, context) ) { onItemTapped.invoke(Item.DeleteCollection) }, diff --git a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkAdapter.kt b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkAdapter.kt index 563e47bb5..3628319f3 100644 --- a/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkAdapter.kt +++ b/app/src/main/java/org/mozilla/fenix/library/bookmarks/BookmarkAdapter.kt @@ -23,8 +23,8 @@ import mozilla.components.browser.icons.IconRequest import mozilla.components.browser.menu.BrowserMenu import mozilla.components.concept.storage.BookmarkNode import mozilla.components.concept.storage.BookmarkNodeType -import org.mozilla.fenix.DefaultThemeManager import org.mozilla.fenix.R +import org.mozilla.fenix.ThemeManager import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.increaseTapArea import kotlin.coroutines.CoroutineContext @@ -195,9 +195,9 @@ class BookmarkAdapter(val emptyView: View, val actionEmitter: Observer