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 {
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 {
@ -50,4 +58,4 @@ class CustomTabBrowsingModeManager : BrowsingModeManager {
override var mode: BrowsingModeManager.Mode
get() = BrowsingModeManager.Mode.Normal
set(_) { return }
}
}

View File

@ -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 {

View File

@ -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)
}
}

View File

@ -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

View File

@ -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