From eca08a10bd86b9ebea5a883bd0444057e4579c0c Mon Sep 17 00:00:00 2001 From: Lucas Dupin Date: Sat, 11 Aug 2018 15:53:40 -0700 Subject: [PATCH] Respect night mode flag on Q and beyond Test: manual Change-Id: I01c51d02e787557717c12567adc8276943dbd1bc Fixes: 110758454 --- .../launcher3/BaseDraggingActivity.java | 24 ++++++++++++++++++- src/com/android/launcher3/Utilities.java | 4 ++++ 2 files changed, 27 insertions(+), 1 deletion(-) diff --git a/src/com/android/launcher3/BaseDraggingActivity.java b/src/com/android/launcher3/BaseDraggingActivity.java index d6635dc136..f5fbf80dcd 100644 --- a/src/com/android/launcher3/BaseDraggingActivity.java +++ b/src/com/android/launcher3/BaseDraggingActivity.java @@ -19,7 +19,9 @@ package com.android.launcher3; import android.app.ActivityOptions; import android.content.ActivityNotFoundException; import android.content.Intent; +import android.content.res.Configuration; import android.graphics.Rect; +import android.os.Build; import android.os.Bundle; import android.os.Process; import android.os.StrictMode; @@ -81,13 +83,33 @@ public abstract class BaseDraggingActivity extends BaseActivity @Override public void onExtractedColorsChanged(WallpaperColorInfo wallpaperColorInfo) { + updateTheme(); + } + + @Override + public void onConfigurationChanged(Configuration newConfig) { + super.onConfigurationChanged(newConfig); + updateTheme(); + } + + private void updateTheme() { + WallpaperColorInfo wallpaperColorInfo = WallpaperColorInfo.getInstance(this); if (mThemeRes != getThemeRes(wallpaperColorInfo)) { recreate(); } } protected int getThemeRes(WallpaperColorInfo wallpaperColorInfo) { - if (wallpaperColorInfo.isDark()) { + boolean darkTheme; + if (Utilities.ATLEAST_Q) { + Configuration configuration = getResources().getConfiguration(); + int nightMode = configuration.uiMode & Configuration.UI_MODE_NIGHT_MASK; + darkTheme = nightMode == Configuration.UI_MODE_NIGHT_YES; + } else { + darkTheme = wallpaperColorInfo.isDark(); + } + + if (darkTheme) { return wallpaperColorInfo.supportsDarkText() ? R.style.AppTheme_Dark_DarkText : R.style.AppTheme_Dark; } else { diff --git a/src/com/android/launcher3/Utilities.java b/src/com/android/launcher3/Utilities.java index a8513185e5..1c12464346 100644 --- a/src/com/android/launcher3/Utilities.java +++ b/src/com/android/launcher3/Utilities.java @@ -83,6 +83,10 @@ public final class Utilities { private static final Matrix sMatrix = new Matrix(); private static final Matrix sInverseMatrix = new Matrix(); + public static final boolean ATLEAST_Q = Build.VERSION.CODENAME.length() == 1 + && Build.VERSION.CODENAME.charAt(0) >= 'Q' + && Build.VERSION.CODENAME.charAt(0) <= 'Z'; + public static final boolean ATLEAST_P = Build.VERSION.SDK_INT >= Build.VERSION_CODES.P;