Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c6d2d3a0 authored by Alan Viverette's avatar Alan Viverette Committed by Android (Google) Code Review
Browse files

Merge "Partial revert "Load device default theme mapping from resources""

parents f9be7794 5effd7e8
Loading
Loading
Loading
Loading
+6 −6
Original line number Diff line number Diff line
@@ -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);
+23 −26
Original line number Diff line number Diff line
@@ -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;
        }
        if (targetSdkVersion < Build.VERSION_CODES.ICE_CREAM_SANDWICH) {
            return holo;
        }

        return defaultThemes.getResourceId(0, 0);
        if (targetSdkVersion < Build.VERSION_CODES.CUR_DEVELOPMENT) {
            return dark;
        }
        return deviceDefault;
    }

    /**
+7 −5
Original line number Diff line number Diff line
@@ -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);
+1 −1
Original line number Diff line number Diff line
@@ -96,7 +96,7 @@ public class ContextThemeWrapper extends ContextWrapper {
            return mTheme;
        }

        mThemeResource = getResources().selectDefaultTheme(mThemeResource,
        mThemeResource = Resources.selectDefaultTheme(mThemeResource,
                getApplicationInfo().targetSdkVersion);
        initializeTheme();

+0 −39
Original line number Diff line number Diff line
@@ -348,43 +348,4 @@
        <item>中文 (繁體)</item>
    </string-array>

    <!-- Used by callers to Resources.selectSystemTheme(). Defines the minimum
         targetSdkVersion required for the theme style at a given index.
         NOTE: Must be sorted in ascending order. -->
    <integer-array name="system_theme_sdks">
        <item>0</item>
        <item>11</item>
        <item>14</item>
        <item>21</item>
    </integer-array>

    <!-- Used by Resources.selectDefaultTheme(). Defines the default theme style
         for the targetSdkVersion at a given index (see system_theme_sdks).
         NOTE: Must match number of entries in system_theme_sdks. -->
    <array name="system_theme_styles">
        <item>@style/Theme</item>
        <item>@style/Theme.Holo</item>
        <item>@style/Theme.DeviceDefault</item>
        <item>@style/Theme.DeviceDefault.Light.DarkActionBar</item>
    </array>

    <!-- Used by ContextImpl for notifications. Defines the default dialog theme
         style for the targetSdkVersion at a given index (see system_theme_sdks).
         NOTE: Must match number of entries in system_theme_sdks. -->
    <array name="system_theme_dialog_styles">
        <item>@style/Theme</item>
        <item>@style/Theme.Holo.Dialog</item>
        <item>@style/Theme.DeviceDefault.Dialog</item>
        <item>@style/Theme.DeviceDefault.Light.Dialog</item>
    </array>

    <!-- Used by InputMethodService.onCreate(). Defines the default IME theme
         style for the targetSdkVersion at a given index (see system_theme_sdks).
         NOTE: Must match number of entries in system_theme_sdks. -->
    <array name="system_theme_ime_styles">
        <item>@style/Theme.InputMethod</item>
        <item>@style/Theme.Holo.InputMethod</item>
        <item>@style/Theme.DeviceDefault.InputMethod</item>
        <item>@style/Theme.DeviceDefault.InputMethod</item>
    </array>
</resources>
Loading