From 5effd7e89f83824ac8982a6cbcebbf5cc331e436 Mon Sep 17 00:00:00 2001 From: Alan Viverette Date: Mon, 5 May 2014 12:25:33 -0700 Subject: [PATCH] Partial revert "Load device default theme mapping from resources" This reverts commit e4ab72d54cf41d16819b72e94d9b0d0d51289647. Change-Id: Id17170312c75993fc1f7859d52c7e050b2aeaf80 --- core/java/android/app/ContextImpl.java | 12 ++--- core/java/android/content/res/Resources.java | 49 +++++++++---------- .../InputMethodService.java | 12 +++-- .../android/view/ContextThemeWrapper.java | 2 +- core/res/res/values/arrays.xml | 39 --------------- core/res/res/values/symbols.xml | 4 -- 6 files changed, 37 insertions(+), 81 deletions(-) diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index a4b2651862614..fe532bf1c6aca 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -473,14 +473,14 @@ class ContextImpl extends Context { registerService(NOTIFICATION_SERVICE, new ServiceFetcher() { public Object createService(ContextImpl ctx) { final Context outerContext = ctx.getOuterContext(); - // TODO: Why are we not just using the theme attribute - // that defines the dialog theme? return new NotificationManager( new ContextThemeWrapper(outerContext, - outerContext.getResources().selectSystemTheme(0, + Resources.selectSystemTheme(0, outerContext.getApplicationInfo().targetSdkVersion, - com.android.internal.R.array.system_theme_sdks, - com.android.internal.R.array.system_theme_dialog_styles)), + com.android.internal.R.style.Theme_Dialog, + com.android.internal.R.style.Theme_Holo_Dialog, + com.android.internal.R.style.Theme_DeviceDefault_Dialog, + com.android.internal.R.style.Theme_DeviceDefault_Light_Dialog)), ctx.mMainThread.getHandler()); }}); @@ -731,7 +731,7 @@ class ContextImpl extends Context { @Override public Resources.Theme getTheme() { if (mTheme == null) { - mThemeResource = mResources.selectDefaultTheme(mThemeResource, + mThemeResource = Resources.selectDefaultTheme(mThemeResource, getOuterContext().getApplicationInfo().targetSdkVersion); mTheme = mResources.newTheme(); mTheme.applyStyle(mThemeResource, true); diff --git a/core/java/android/content/res/Resources.java b/core/java/android/content/res/Resources.java index 133177711092a..499de17162399 100644 --- a/core/java/android/content/res/Resources.java +++ b/core/java/android/content/res/Resources.java @@ -137,45 +137,42 @@ public class Resources { /** * Returns the most appropriate default theme for the specified target SDK version. + * * * @param curTheme The current theme, or 0 if not specified. * @param targetSdkVersion The target SDK version. * @return A theme resource identifier * @hide */ - public int selectDefaultTheme(int curTheme, int targetSdkVersion) { + public static int selectDefaultTheme(int curTheme, int targetSdkVersion) { return selectSystemTheme(curTheme, targetSdkVersion, - com.android.internal.R.array.system_theme_sdks, - com.android.internal.R.array.system_theme_styles); + com.android.internal.R.style.Theme, + com.android.internal.R.style.Theme_Holo, + com.android.internal.R.style.Theme_DeviceDefault, + com.android.internal.R.style.Theme_DeviceDefault_Light_DarkActionBar); } - /** - * Returns the most appropriate default theme for the specified target SDK version. - * - * @param curTheme The current theme, or 0 if not specified. - * @param targetSdkVersion The target SDK version. - * @param sdkArrayId Identifier for integer array resource containing - * sorted minimum SDK versions. First entry must be 0. - * @param themeArrayId Identifier for array resource containing the - * default themes that map to SDK versions. - * @return A theme resource identifier - * @hide - */ - public int selectSystemTheme( - int curTheme, int targetSdkVersion, int sdkArrayId, int themeArrayId) { + /** @hide */ + public static int selectSystemTheme(int curTheme, int targetSdkVersion, int orig, int holo, + int dark, int deviceDefault) { if (curTheme != 0) { return curTheme; } - - final int[] targetSdks = getIntArray(sdkArrayId); - final TypedArray defaultThemes = obtainTypedArray(themeArrayId); - for (int i = targetSdks.length - 1; i > 0; i--) { - if (targetSdkVersion >= targetSdks[i]) { - return defaultThemes.getResourceId(i, 0); - } + if (targetSdkVersion < Build.VERSION_CODES.HONEYCOMB) { + return orig; } - - return defaultThemes.getResourceId(0, 0); + if (targetSdkVersion < Build.VERSION_CODES.ICE_CREAM_SANDWICH) { + return holo; + } + if (targetSdkVersion < Build.VERSION_CODES.CUR_DEVELOPMENT) { + return dark; + } + return deviceDefault; } /** diff --git a/core/java/android/inputmethodservice/InputMethodService.java b/core/java/android/inputmethodservice/InputMethodService.java index 4160633a2e5f2..f6438b444cb5a 100644 --- a/core/java/android/inputmethodservice/InputMethodService.java +++ b/core/java/android/inputmethodservice/InputMethodService.java @@ -654,11 +654,13 @@ public class InputMethodService extends AbstractInputMethodService { return false; } - @Override - public void onCreate() { - mTheme = getResources().selectSystemTheme(mTheme, getApplicationInfo().targetSdkVersion, - com.android.internal.R.array.system_theme_sdks, - com.android.internal.R.array.system_theme_ime_styles); + @Override public void onCreate() { + mTheme = Resources.selectSystemTheme(mTheme, + getApplicationInfo().targetSdkVersion, + android.R.style.Theme_InputMethod, + android.R.style.Theme_Holo_InputMethod, + android.R.style.Theme_DeviceDefault_InputMethod, + android.R.style.Theme_DeviceDefault_InputMethod); super.setTheme(mTheme); super.onCreate(); mImm = (InputMethodManager)getSystemService(INPUT_METHOD_SERVICE); diff --git a/core/java/android/view/ContextThemeWrapper.java b/core/java/android/view/ContextThemeWrapper.java index ba1c4b6632696..0afbde9ee14f6 100644 --- a/core/java/android/view/ContextThemeWrapper.java +++ b/core/java/android/view/ContextThemeWrapper.java @@ -96,7 +96,7 @@ public class ContextThemeWrapper extends ContextWrapper { return mTheme; } - mThemeResource = getResources().selectDefaultTheme(mThemeResource, + mThemeResource = Resources.selectDefaultTheme(mThemeResource, getApplicationInfo().targetSdkVersion); initializeTheme(); diff --git a/core/res/res/values/arrays.xml b/core/res/res/values/arrays.xml index 305ba28eaf727..f01f10e48ccf8 100644 --- a/core/res/res/values/arrays.xml +++ b/core/res/res/values/arrays.xml @@ -348,43 +348,4 @@ 中文 (繁體) - - - 0 - 11 - 14 - 21 - - - - - @style/Theme - @style/Theme.Holo - @style/Theme.DeviceDefault - @style/Theme.DeviceDefault.Light.DarkActionBar - - - - - @style/Theme - @style/Theme.Holo.Dialog - @style/Theme.DeviceDefault.Dialog - @style/Theme.DeviceDefault.Light.Dialog - - - - - @style/Theme.InputMethod - @style/Theme.Holo.InputMethod - @style/Theme.DeviceDefault.InputMethod - @style/Theme.DeviceDefault.InputMethod - diff --git a/core/res/res/values/symbols.xml b/core/res/res/values/symbols.xml index 6bcbbcea79bab..a8a4b513d7301 100644 --- a/core/res/res/values/symbols.xml +++ b/core/res/res/values/symbols.xml @@ -1864,9 +1864,5 @@ - - - -