SystemUI: add hook to block monet from applying its overlays
if we want to use our own custom overlays this prevents
the final set enable of the monet overlays.
this does not block creating the fabricated overlays on
wallpaper change so when monet is enabled again they
are already there and will be used
Change-Id: I17ca85f6f5108bd70f4e79ef142a129f249d0a20
diff --git a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayApplier.java b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayApplier.java
index de2fb67..bc9ce4e 100644
--- a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayApplier.java
+++ b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayApplier.java
@@ -203,6 +203,18 @@
Set<UserHandle> managedProfiles,
Runnable onComplete
) {
+ applyCurrentUserOverlays(categoryToPackage, pendingCreation, currentUser, managedProfiles,
+ onComplete, true);
+ }
+
+ /** @hide */
+ public void applyCurrentUserOverlays(
+ Map<String, OverlayIdentifier> categoryToPackage,
+ FabricatedOverlay[] pendingCreation,
+ int currentUser,
+ Set<UserHandle> managedProfiles,
+ Runnable onComplete,
+ boolean enable) {
mBgExecutor.execute(() -> {
@@ -234,17 +246,20 @@
}
}
- for (Pair<String, String> packageToDisable : overlaysToDisable) {
- OverlayIdentifier overlayInfo = new OverlayIdentifier(packageToDisable.second);
- setEnabled(transaction, overlayInfo, packageToDisable.first, currentUser,
- managedProfiles, false, identifiersPending.contains(overlayInfo));
- }
+ // if we disable monet we want everything but the final setEnabled call
+ if (enable) {
+ for (Pair<String, String> packageToDisable : overlaysToDisable) {
+ OverlayIdentifier overlayInfo = new OverlayIdentifier(packageToDisable.second);
+ setEnabled(transaction, overlayInfo, packageToDisable.first, currentUser,
+ managedProfiles, false, identifiersPending.contains(overlayInfo));
+ }
- for (String category : THEME_CATEGORIES) {
- if (categoryToPackage.containsKey(category)) {
- OverlayIdentifier overlayInfo = categoryToPackage.get(category);
- setEnabled(transaction, overlayInfo, category, currentUser, managedProfiles,
- true, identifiersPending.contains(overlayInfo));
+ for (String category : THEME_CATEGORIES) {
+ if (categoryToPackage.containsKey(category)) {
+ OverlayIdentifier overlayInfo = categoryToPackage.get(category);
+ setEnabled(transaction, overlayInfo, category, currentUser, managedProfiles,
+ true, identifiersPending.contains(overlayInfo));
+ }
}
}
diff --git a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
index 4963aae..3d7fca0 100644
--- a/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
+++ b/packages/SystemUI/src/com/android/systemui/theme/ThemeOverlayController.java
@@ -89,6 +89,8 @@
import com.google.ux.material.libmonet.dynamiccolor.DynamicColor;
import com.google.ux.material.libmonet.dynamiccolor.MaterialDynamicColors;
+import org.omnirom.omnilib.utils.OmniSettings;
+
import org.json.JSONException;
import org.json.JSONObject;
@@ -800,6 +802,8 @@
}
FabricatedOverlay[] fOverlays = null;
+ final boolean enableOverlays = Settings.System.getIntForUser(mContext.getContentResolver(),
+ OmniSettings.OMNI_MONET_DISABLE, 0, currentUser) == 0;
if (mNeedsOverlayCreation) {
mNeedsOverlayCreation = false;
@@ -809,7 +813,7 @@
}
mThemeManager.applyCurrentUserOverlays(categoryToPackage, fOverlays, currentUser,
- managedProfiles, onCompleteCallback);
+ managedProfiles, onCompleteCallback, enableOverlays);
}