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 {
|
||||
enum class Mode {
|
||||
Normal, Private
|
||||
Normal, Private;
|
||||
|
||||
fun isPrivate(): Boolean = this == Private
|
||||
}
|
||||
|
||||
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
|
||||
get() = mode == BrowsingModeManager.Mode.Private
|
||||
|
||||
override var mode: BrowsingModeManager.Mode
|
||||
get() = storage.currentMode()
|
||||
set(value) = storage.setMode(value)
|
||||
set(value) {
|
||||
storage.setMode(value)
|
||||
modeDidChange(mode)
|
||||
}
|
||||
}
|
||||
|
||||
class CustomTabBrowsingModeManager : BrowsingModeManager {
|
||||
|
|
|
@ -259,12 +259,20 @@ open class HomeActivity : AppCompatActivity() {
|
|||
|
||||
private fun createBrowsingModeManager(): BrowsingModeManager {
|
||||
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 {
|
||||
return if (isCustomTab) CustomTabThemeManager()
|
||||
else DefaultThemeManager(currentTheme)
|
||||
else DefaultThemeManager(currentTheme) {
|
||||
setTheme(it)
|
||||
recreate()
|
||||
}
|
||||
}
|
||||
|
||||
private fun subscribeToSessions(): SessionManager.Observer {
|
||||
|
|
|
@ -119,13 +119,17 @@ fun Activity.setTheme(theme: ThemeManager.Theme) {
|
|||
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
|
||||
get() = _currentTheme
|
||||
|
||||
override fun setTheme(theme: ThemeManager.Theme) {
|
||||
if (theme == _currentTheme) return
|
||||
_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.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
|
||||
|
|
|
@ -33,6 +33,7 @@ import org.mozilla.fenix.HomeActivity
|
|||
import org.mozilla.fenix.IntentReceiverActivity
|
||||
import org.mozilla.fenix.R
|
||||
import org.mozilla.fenix.browser.BrowserFragment
|
||||
import org.mozilla.fenix.currentThemeResource
|
||||
import org.mozilla.fenix.exceptions.ExceptionDomains
|
||||
import org.mozilla.fenix.ext.components
|
||||
import org.mozilla.fenix.ext.requireComponents
|
||||
|
|
Loading…
Reference in New Issue