diff options
Diffstat (limited to 'core/java/android/content/res/Configuration.java')
-rw-r--r-- | core/java/android/content/res/Configuration.java | 84 |
1 files changed, 78 insertions, 6 deletions
diff --git a/core/java/android/content/res/Configuration.java b/core/java/android/content/res/Configuration.java index fd60476..f077d4d 100644 --- a/core/java/android/content/res/Configuration.java +++ b/core/java/android/content/res/Configuration.java @@ -1,5 +1,6 @@ /* * Copyright (C) 2008 The Android Open Source Project + * This code has been modified. Portions copyright (C) 2010, T-Mobile USA, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -82,6 +83,11 @@ public final class Configuration implements Parcelable, Comparable<Configuration public Locale locale; /** + * @hide + */ + public ThemeConfig themeConfig; + + /** * Locale should persist on setting. This is hidden because it is really * questionable whether this is the right way to expose the functionality. * @hide @@ -441,7 +447,47 @@ public final class Configuration implements Parcelable, Comparable<Configuration public static final int ORIENTATION_LANDSCAPE = 2; /** @deprecated Not currently supported or used. */ @Deprecated public static final int ORIENTATION_SQUARE = 3; - + + /** + * @hide + * @deprecated + */ + public static final String THEME_PACKAGE_NAME_PERSISTENCE_PROPERTY + = "persist.sys.themePackageName"; + + /** + * @hide + * @deprecated + */ + public static final String THEME_ICONPACK_PACKAGE_NAME_PERSISTENCE_PROPERTY + = "themeIconPackPkgName"; + + /** + * @hide + * @deprecated + */ + public static final String THEME_FONT_PACKAGE_NAME_PERSISTENCE_PROPERTY + = "themeFontPackPkgName"; + + /** + * @hide + * Serialized json structure mapping app pkgnames to their set theme. + * + * { + * "default":{ + *" stylePkgName":"com.jasonevil.theme.miuiv5dark", + * "iconPkgName":"com.cyngn.hexo", + * "fontPkgName":"com.cyngn.hexo" + * } + * } + + * If an app does not have a specific theme set then it will use the 'default' theme+ + * example: 'default' -> overlayPkgName: 'org.blue.theme' + * 'com.android.phone' -> 'com.red.theme' + * 'com.google.vending' -> 'com.white.theme' + */ + public static final String THEME_PKG_CONFIGURATION_PERSISTENCE_PROPERTY = "themeConfig"; + /** * Overall orientation of the screen. May be one of * {@link #ORIENTATION_LANDSCAPE}, {@link #ORIENTATION_PORTRAIT}. @@ -673,8 +719,11 @@ public final class Configuration implements Parcelable, Comparable<Configuration compatScreenHeightDp = o.compatScreenHeightDp; compatSmallestScreenWidthDp = o.compatSmallestScreenWidthDp; seq = o.seq; + if (o.themeConfig != null) { + themeConfig = (ThemeConfig) o.themeConfig.clone(); + } } - + public String toString() { StringBuilder sb = new StringBuilder(128); sb.append("{"); @@ -809,6 +858,8 @@ public final class Configuration implements Parcelable, Comparable<Configuration sb.append(" s."); sb.append(seq); } + sb.append(" themeResource="); + sb.append(themeConfig); sb.append('}'); return sb.toString(); } @@ -835,6 +886,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration smallestScreenWidthDp = compatSmallestScreenWidthDp = SMALLEST_SCREEN_WIDTH_DP_UNDEFINED; densityDpi = DENSITY_DPI_UNDEFINED; seq = 0; + themeConfig = null; } /** {@hide} */ @@ -977,7 +1029,13 @@ public final class Configuration implements Parcelable, Comparable<Configuration if (delta.seq != 0) { seq = delta.seq; } - + + if (delta.themeConfig != null + && (themeConfig == null || !themeConfig.equals(delta.themeConfig))) { + changed |= ActivityInfo.CONFIG_THEME_RESOURCE; + themeConfig = (ThemeConfig)delta.themeConfig.clone(); + } + return changed; } @@ -1087,7 +1145,10 @@ public final class Configuration implements Parcelable, Comparable<Configuration && densityDpi != delta.densityDpi) { changed |= ActivityInfo.CONFIG_DENSITY; } - + if (delta.themeConfig != null && + (themeConfig == null || !themeConfig.equals(delta.themeConfig))) { + changed |= ActivityInfo.CONFIG_THEME_RESOURCE; + } return changed; } @@ -1103,7 +1164,9 @@ public final class Configuration implements Parcelable, Comparable<Configuration * @return Return true if the resource needs to be loaded, else false. */ public static boolean needNewResources(int configChanges, int interestingChanges) { - return (configChanges & (interestingChanges|ActivityInfo.CONFIG_FONT_SCALE)) != 0; + return (configChanges & (interestingChanges | + ActivityInfo.CONFIG_FONT_SCALE | + ActivityInfo.CONFIG_THEME_RESOURCE)) != 0; } /** @@ -1176,6 +1239,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration dest.writeInt(compatScreenHeightDp); dest.writeInt(compatSmallestScreenWidthDp); dest.writeInt(seq); + dest.writeParcelable(themeConfig, flags); } public void readFromParcel(Parcel source) { @@ -1204,6 +1268,7 @@ public final class Configuration implements Parcelable, Comparable<Configuration compatScreenHeightDp = source.readInt(); compatSmallestScreenWidthDp = source.readInt(); seq = source.readInt(); + themeConfig = source.readParcelable(ThemeConfig.class.getClassLoader()); } public static final Parcelable.Creator<Configuration> CREATOR @@ -1271,7 +1336,12 @@ public final class Configuration implements Parcelable, Comparable<Configuration n = this.smallestScreenWidthDp - that.smallestScreenWidthDp; if (n != 0) return n; n = this.densityDpi - that.densityDpi; - //if (n != 0) return n; + if (n != 0) return n; + if (this.themeConfig == null) { + if (that.themeConfig != null) return 1; + } else { + n = this.themeConfig.compareTo(that.themeConfig); + } return n; } @@ -1308,6 +1378,8 @@ public final class Configuration implements Parcelable, Comparable<Configuration result = 31 * result + screenHeightDp; result = 31 * result + smallestScreenWidthDp; result = 31 * result + densityDpi; + result = 31 * result + (this.themeConfig != null ? + this.themeConfig.hashCode() : 0); return result; } |