Partial revert "Load device default theme mapping from resources"

This reverts commit e4ab72d54cf41d16819b72e94d9b0d0d51289647.

Change-Id: Id17170312c75993fc1f7859d52c7e050b2aeaf80
This commit is contained in:
Alan Viverette
2014-05-05 12:25:33 -07:00
parent 5d039c458c
commit 5effd7e89f
6 changed files with 37 additions and 81 deletions

View File

@@ -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);

View File

@@ -137,45 +137,42 @@ public class Resources {
/**
* Returns the most appropriate default theme for the specified target SDK version.
* <ul>
* <li>Below API 11: Gingerbread
* <li>APIs 11 thru 14: Holo
* <li>APIs 14 thru XX: Device default dark
* <li>API XX and above: Device default light with dark action bar
* </ul>
*
* @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;
}
/**

View File

@@ -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);

View File

@@ -96,7 +96,7 @@ public class ContextThemeWrapper extends ContextWrapper {
return mTheme;
}
mThemeResource = getResources().selectDefaultTheme(mThemeResource,
mThemeResource = Resources.selectDefaultTheme(mThemeResource,
getApplicationInfo().targetSdkVersion);
initializeTheme();