From 63e958a793b434642709e816f308d23ed558a15d Mon Sep 17 00:00:00 2001 From: Mia Alexiou Date: Mon, 8 Oct 2018 13:46:50 +0100 Subject: [PATCH 01/11] Separate application theme init from activity theme selection --- .../app/global/DuckDuckGoApplication.kt | 11 +++++++- .../java/com/duckduckgo/app/global/Theming.kt | 28 ++++++++----------- 2 files changed, 22 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/duckduckgo/app/global/DuckDuckGoApplication.kt b/app/src/main/java/com/duckduckgo/app/global/DuckDuckGoApplication.kt index c1d4a3b8ea4c..f67f5277e359 100644 --- a/app/src/main/java/com/duckduckgo/app/global/DuckDuckGoApplication.kt +++ b/app/src/main/java/com/duckduckgo/app/global/DuckDuckGoApplication.kt @@ -28,14 +28,16 @@ import android.support.v4.app.Fragment import com.duckduckgo.app.browser.BuildConfig import com.duckduckgo.app.di.AppComponent import com.duckduckgo.app.di.DaggerAppComponent -import com.duckduckgo.app.fire.UnsentForgetAllPixelStore import com.duckduckgo.app.fire.FireActivity +import com.duckduckgo.app.fire.UnsentForgetAllPixelStore import com.duckduckgo.app.global.install.AppInstallStore import com.duckduckgo.app.global.notification.NotificationRegistrar import com.duckduckgo.app.global.shortcut.AppShortcutCreator import com.duckduckgo.app.httpsupgrade.HttpsUpgrader import com.duckduckgo.app.job.AppConfigurationSyncer import com.duckduckgo.app.migration.LegacyMigration +import com.duckduckgo.app.settings.db.SettingsDataStore +import com.duckduckgo.app.statistics.VariantManager import com.duckduckgo.app.statistics.api.StatisticsUpdater import com.duckduckgo.app.statistics.pixels.Pixel import com.duckduckgo.app.statistics.pixels.Pixel.PixelName.APP_LAUNCH @@ -82,9 +84,15 @@ open class DuckDuckGoApplication : HasActivityInjector, HasServiceInjector, HasS @Inject lateinit var appInstallStore: AppInstallStore + @Inject + lateinit var settingsDataStore: SettingsDataStore + @Inject lateinit var notificationRegistrar: NotificationRegistrar + @Inject + lateinit var variantManager: VariantManager + @Inject lateinit var pixel: Pixel @@ -118,6 +126,7 @@ open class DuckDuckGoApplication : HasActivityInjector, HasServiceInjector, HasS } initializeStatistics() + initializeTheme(settingsDataStore, variantManager.getVariant()) loadTrackerData() configureDataDownloader() recordInstallationTimestamp() diff --git a/app/src/main/java/com/duckduckgo/app/global/Theming.kt b/app/src/main/java/com/duckduckgo/app/global/Theming.kt index df91506f1202..1e095622edb9 100644 --- a/app/src/main/java/com/duckduckgo/app/global/Theming.kt +++ b/app/src/main/java/com/duckduckgo/app/global/Theming.kt @@ -22,6 +22,8 @@ import android.content.Intent import android.content.IntentFilter import android.support.v4.content.LocalBroadcastManager import com.duckduckgo.app.browser.R +import com.duckduckgo.app.global.DuckDuckGoTheme.DARK +import com.duckduckgo.app.global.DuckDuckGoTheme.LIGHT import com.duckduckgo.app.global.ThemingConstants.BROADCAST_THEME_CHANGED import com.duckduckgo.app.settings.db.SettingsDataStore import com.duckduckgo.app.statistics.Variant @@ -33,16 +35,22 @@ enum class DuckDuckGoTheme { LIGHT; } -fun DuckDuckGoActivity.applyTheme(settingsDataStore: SettingsDataStore, variant: Variant): BroadcastReceiver? { - +fun DuckDuckGoApplication.initializeTheme(settingsDataStore: SettingsDataStore, variant: Variant) { if (settingsDataStore.theme == null) { - settingsDataStore.theme = defaultApplicationTheme(variant) + settingsDataStore.theme = if (variant.hasFeature(LightThemeAsDefault)) LIGHT else DARK } +} +fun DuckDuckGoActivity.applyTheme(settingsDataStore: SettingsDataStore, variant: Variant): BroadcastReceiver? { if (!isThemeConfigurable()) { return null } - setTheme(themeId(settingsDataStore, variant)) + val themeId = when (settingsDataStore.theme) { + LIGHT -> R.style.AppTheme_Light + DARK -> R.style.AppTheme_Dark + null -> if (variant.hasFeature(LightThemeAsDefault)) R.style.AppTheme_Light else R.style.AppTheme_Dark + } + setTheme(themeId) return registerForThemeChangeBroadcast() } @@ -62,14 +70,6 @@ fun DuckDuckGoActivity.sendThemeChangedBroadcast() { manager.sendBroadcast(Intent(BROADCAST_THEME_CHANGED)) } -private fun themeId(settingsDataStore: SettingsDataStore, variant: Variant): Int { - val theme = settingsDataStore.theme ?: defaultApplicationTheme(variant) - return when (theme) { - DuckDuckGoTheme.LIGHT -> R.style.AppTheme_Light - DuckDuckGoTheme.DARK -> R.style.AppTheme_Dark - } -} - private fun DuckDuckGoActivity.isThemeConfigurable(): Boolean { return manifestThemeId() == R.style.AppTheme_Dark || manifestThemeId() == R.style.AppTheme_Light } @@ -78,10 +78,6 @@ private fun DuckDuckGoActivity.manifestThemeId(): Int { return packageManager.getActivityInfo(componentName, 0).themeResource } -private fun defaultApplicationTheme(variant: Variant): DuckDuckGoTheme { - return if (variant.hasFeature(LightThemeAsDefault)) DuckDuckGoTheme.LIGHT else DuckDuckGoTheme.DARK -} - object ThemingConstants { const val BROADCAST_THEME_CHANGED = "BROADCAST_THEME_CHANGED" } From 29ee3338a1e8d80090912f3c83d523b3486ff75d Mon Sep 17 00:00:00 2001 From: Mia Alexiou Date: Mon, 8 Oct 2018 15:04:38 +0100 Subject: [PATCH 02/11] Add themed switch background color --- app/src/main/res/values/attrs.xml | 1 + app/src/main/res/values/styles.xml | 2 +- app/src/main/res/values/themes.xml | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/res/values/attrs.xml b/app/src/main/res/values/attrs.xml index ad3573b3ec6e..2aab51e03906 100644 --- a/app/src/main/res/values/attrs.xml +++ b/app/src/main/res/values/attrs.xml @@ -33,5 +33,6 @@ + diff --git a/app/src/main/res/values/styles.xml b/app/src/main/res/values/styles.xml index 965771998e15..d214dba77574 100644 --- a/app/src/main/res/values/styles.xml +++ b/app/src/main/res/values/styles.xml @@ -127,7 +127,7 @@ - - + + From 82a838eb39cada81a397dc219d1c808d28a089fe Mon Sep 17 00:00:00 2001 From: Mia Alexiou Date: Tue, 9 Oct 2018 11:40:31 +0100 Subject: [PATCH 10/11] Remove unwanted background color from toolbar --- app/src/main/res/values/themes.xml | 1 - 1 file changed, 1 deletion(-) diff --git a/app/src/main/res/values/themes.xml b/app/src/main/res/values/themes.xml index 86e651a73773..108df658468f 100644 --- a/app/src/main/res/values/themes.xml +++ b/app/src/main/res/values/themes.xml @@ -114,7 +114,6 @@