For #2723 - Creates callbacks to wire up the mode and theme manager together
parent
a7d5cdcb9d
commit
f9d70dbc92
|
@ -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 }
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 {
|
||||||
|
|
|
@ -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)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue