summaryrefslogtreecommitdiff
path: root/src/org
diff options
context:
space:
mode:
Diffstat (limited to 'src/org')
-rw-r--r--src/org/cyanogenmod/themeservice/ThemeManagerService.java38
1 files changed, 32 insertions, 6 deletions
diff --git a/src/org/cyanogenmod/themeservice/ThemeManagerService.java b/src/org/cyanogenmod/themeservice/ThemeManagerService.java
index 276bbb9..53b7dbd 100644
--- a/src/org/cyanogenmod/themeservice/ThemeManagerService.java
+++ b/src/org/cyanogenmod/themeservice/ThemeManagerService.java
@@ -99,6 +99,10 @@ public class ThemeManagerService extends Service {
private static final String CATEGORY_THEME_CHOOSER = "cyanogenmod.intent.category.APP_THEMES";
+ private static final String[] LAUNCHER_KILL_BLACKLIST = new String[] {
+ "com.android.launcher3"
+ };
+
// Defines a min and max compatible api level for themes on this system.
private static final int MIN_COMPATIBLE_VERSION = 21;
@@ -248,6 +252,7 @@ public class ThemeManagerService extends Service {
if (ThemesColumns.MODIFIES_OVERLAYS.equals(key) ||
ThemesColumns.MODIFIES_NAVIGATION_BAR.equals(key) ||
ThemesColumns.MODIFIES_STATUS_BAR.equals(key) ||
+ ThemesColumns.MODIFIES_STATUSBAR_HEADERS.equals(key) ||
ThemesColumns.MODIFIES_ICONS.equals(key)) {
String pkgName = componentMap.get(key);
if (mThemesToProcessQueue.indexOf(pkgName) > 0) {
@@ -429,6 +434,8 @@ public class ThemeManagerService extends Service {
currentThemeMap.put(ThemesColumns.MODIFIES_STATUS_BAR, config.getOverlayForStatusBar());
currentThemeMap.put(ThemesColumns.MODIFIES_NAVIGATION_BAR,
config.getOverlayForNavBar());
+ currentThemeMap.put(ThemesColumns.MODIFIES_STATUSBAR_HEADERS,
+ config.getOverlayForHeaders());
currentThemeMap.put(ThemesColumns.MODIFIES_OVERLAYS, config.getOverlayPkgName());
// Look at each component's theme (that we care about at least) and check compatibility
@@ -922,6 +929,7 @@ public class ThemeManagerService extends Service {
request.getIconsThemePackageName() != null ||
request.getStatusBarThemePackageName() != null ||
request.getNavBarThemePackageName() != null ||
+ request.getHeadersThemePackageName() != null ||
request.getPerAppOverlays().size() > 0;
}
@@ -954,6 +962,11 @@ public class ThemeManagerService extends Service {
request.getNavBarThemePackageName() : pkgName);
}
+ if (request.getHeadersThemePackageName() != null) {
+ builder.overlay(ThemeConfig.SYSTEMUI_STATUSBAR_HEADER_PKG, pkgName == null ?
+ request.getHeadersThemePackageName() : pkgName);
+ }
+
// check for any per app overlays being applied
Map<String, String> appOverlays = request.getPerAppOverlays();
for (String appPkgName : appOverlays.keySet()) {
@@ -1000,12 +1013,25 @@ public class ThemeManagerService extends Service {
!isSetupActivity(info) && !handlesThemeChanges(
info.activityInfo.applicationInfo.packageName, themeChangeInfos)) {
String pkgToStop = info.activityInfo.applicationInfo.packageName;
- Log.d(TAG, "Force stopping " + pkgToStop + " for theme change");
- try {
- am.forceStopPackage(pkgToStop);
- } catch(Exception e) {
- Log.e(TAG, "Unable to force stop package, did you forget platform signature?",
- e);
+ boolean doKillLauncher = true;
+ for (int i = 0; i < LAUNCHER_KILL_BLACKLIST.length; i++) {
+ if (TextUtils.equals(pkgToStop, LAUNCHER_KILL_BLACKLIST[i])) {
+ doKillLauncher = false;
+ break;
+ }
+ }
+ if (doKillLauncher) {
+ Log.d(TAG, "Force stopping " + pkgToStop + " for theme change");
+ try {
+ am.forceStopPackage(pkgToStop);
+ } catch (Exception e) {
+ Log.e(TAG,
+ "Unable to force stop package, did you forget platform signature?",
+ e);
+ }
+ } else {
+ Log.d(TAG, "Not force stopping blacklisted launcher " + pkgToStop
+ + " for theme change");
}
}
}