1
0
Fork 0

For #2723 - Creates callbacks to wire up the mode and theme manager together

master
Jeff Boek 2019-05-30 16:13:06 -07:00
parent a7d5cdcb9d
commit f9d70dbc92
5 changed files with 29 additions and 7 deletions

View File

@ -8,7 +8,9 @@ import org.mozilla.fenix.utils.Settings
interface BrowsingModeManager { interface BrowsingModeManager {
enum class Mode { enum class Mode {
Normal, Private Normal, Private;
fun isPrivate(): Boolean = this == Private
} }
val isPrivate: Boolean val isPrivate: Boolean
@ -36,13 +38,19 @@ fun Settings.createBrowserModeStorage(): BrowserModeStorage = object : BrowserMo
} }
class DefaultBrowsingModeManager(private val storage: BrowserModeStorage) : BrowsingModeManager { class DefaultBrowsingModeManager(
private val storage: BrowserModeStorage,
private val modeDidChange: (BrowsingModeManager.Mode) -> Unit
) : BrowsingModeManager {
override val isPrivate: Boolean override val isPrivate: Boolean
get() = mode == BrowsingModeManager.Mode.Private get() = mode == BrowsingModeManager.Mode.Private
override var mode: BrowsingModeManager.Mode override var mode: BrowsingModeManager.Mode
get() = storage.currentMode() get() = storage.currentMode()
set(value) = storage.setMode(value) set(value) {
storage.setMode(value)
modeDidChange(mode)
}
} }
class CustomTabBrowsingModeManager : BrowsingModeManager { class CustomTabBrowsingModeManager : BrowsingModeManager {
@ -50,4 +58,4 @@ class CustomTabBrowsingModeManager : BrowsingModeManager {
override var mode: BrowsingModeManager.Mode override var mode: BrowsingModeManager.Mode
get() = BrowsingModeManager.Mode.Normal get() = BrowsingModeManager.Mode.Normal
set(_) { return } set(_) { return }
} }

View File

@ -259,12 +259,20 @@ open class HomeActivity : AppCompatActivity() {
private fun createBrowsingModeManager(): BrowsingModeManager { private fun createBrowsingModeManager(): BrowsingModeManager {
return if (isCustomTab) CustomTabBrowsingModeManager() return if (isCustomTab) CustomTabBrowsingModeManager()
else DefaultBrowsingModeManager(Settings.getInstance(this).createBrowserModeStorage()) else DefaultBrowsingModeManager(Settings.getInstance(this).createBrowserModeStorage()) {
themeManager.setTheme(when (it.isPrivate()) {
true -> ThemeManager.Theme.Private
false -> ThemeManager.Theme.Normal
})
}
} }
private fun createThemeManager(currentTheme: ThemeManager.Theme): ThemeManager { private fun createThemeManager(currentTheme: ThemeManager.Theme): ThemeManager {
return if (isCustomTab) CustomTabThemeManager() return if (isCustomTab) CustomTabThemeManager()
else DefaultThemeManager(currentTheme) else DefaultThemeManager(currentTheme) {
setTheme(it)
recreate()
}
} }
private fun subscribeToSessions(): SessionManager.Observer { private fun subscribeToSessions(): SessionManager.Observer {

View File

@ -119,13 +119,17 @@ fun Activity.setTheme(theme: ThemeManager.Theme) {
setTheme(themeCode) setTheme(themeCode)
} }
class DefaultThemeManager(private var _currentTheme: ThemeManager.Theme) : ThemeManager { class DefaultThemeManager(
private var _currentTheme: ThemeManager.Theme,
private val onThemeChanged: (ThemeManager.Theme) -> Unit
) : ThemeManager {
override val currentTheme: ThemeManager.Theme override val currentTheme: ThemeManager.Theme
get() = _currentTheme get() = _currentTheme
override fun setTheme(theme: ThemeManager.Theme) { override fun setTheme(theme: ThemeManager.Theme) {
if (theme == _currentTheme) return if (theme == _currentTheme) return
_currentTheme = theme _currentTheme = theme
onThemeChanged(theme)
} }
} }

View File

@ -44,6 +44,7 @@ import mozilla.components.feature.readerview.ReaderViewFeature
import mozilla.components.feature.session.FullScreenFeature import mozilla.components.feature.session.FullScreenFeature
import mozilla.components.feature.session.SessionFeature import mozilla.components.feature.session.SessionFeature
import mozilla.components.feature.session.SessionUseCases import mozilla.components.feature.session.SessionUseCases
import mozilla.components.feature.session.SwipeRefreshFeature
import mozilla.components.feature.session.ThumbnailsFeature import mozilla.components.feature.session.ThumbnailsFeature
import mozilla.components.feature.sitepermissions.SitePermissions import mozilla.components.feature.sitepermissions.SitePermissions
import mozilla.components.feature.sitepermissions.SitePermissionsFeature import mozilla.components.feature.sitepermissions.SitePermissionsFeature

View File

@ -33,6 +33,7 @@ import org.mozilla.fenix.HomeActivity
import org.mozilla.fenix.IntentReceiverActivity import org.mozilla.fenix.IntentReceiverActivity
import org.mozilla.fenix.R import org.mozilla.fenix.R
import org.mozilla.fenix.browser.BrowserFragment import org.mozilla.fenix.browser.BrowserFragment
import org.mozilla.fenix.currentThemeResource
import org.mozilla.fenix.exceptions.ExceptionDomains import org.mozilla.fenix.exceptions.ExceptionDomains
import org.mozilla.fenix.ext.components import org.mozilla.fenix.ext.components
import org.mozilla.fenix.ext.requireComponents import org.mozilla.fenix.ext.requireComponents