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

Commit 3d95908e authored by Jason Monk's avatar Jason Monk
Browse files

Make Theme a DropDownPreference

Also make DropDownPreference support xml lists defined the same
way as ListPreferences.

Bug: 21300431
Change-Id: I1698e8ddcd6134034c3367a6afe36f9740e9efec
parent b777c6e2
Loading
Loading
Loading
Loading
+5 −0
Original line number Diff line number Diff line
@@ -113,4 +113,9 @@
    <!-- Confirm device credentials screen -->
    <attr name="confirmDeviceCredentialsSideMargin" format="dimension" />
    <attr name="confirmDeviceCredentialsTopMargin" format="dimension" />

    <declare-styleable name="DropDownPreference">
        <attr name="android:entries" />
        <attr name="android:entryValues" />
    </declare-styleable>
</resources>
+1 −2
Original line number Diff line number Diff line
@@ -65,11 +65,10 @@
        android:persistent="false"
        android:title="@string/system_ui_settings" />

    <ListPreference
    <com.android.settings.DropDownPreference
        android:key="night_mode"
        android:title="@string/night_mode_title"
        android:summary="@string/night_mode_summary"
        android:persistent="false"
        android:entries="@array/night_mode_entries"
        android:entryValues="@array/night_mode_values" />

+18 −14
Original line number Diff line number Diff line
@@ -265,7 +265,7 @@ public class DevelopmentSettings extends SettingsPreferenceFragment

    private SwitchPreference mShowAllANRs;

    private ListPreference mNightModePreference;
    private DropDownPreference mNightModePreference;

    private final ArrayList<Preference> mAllPrefs = new ArrayList<Preference>();

@@ -427,12 +427,26 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
            removePreferenceForProduction(hdcpChecking);
        }

        mNightModePreference = (ListPreference) findPreference(KEY_NIGHT_MODE);
        mNightModePreference = (DropDownPreference) findPreference(KEY_NIGHT_MODE);
        final UiModeManager uiManager = (UiModeManager) getSystemService(
                Context.UI_MODE_SERVICE);
        final int currentNightMode = uiManager.getNightMode();
        mNightModePreference.setValue(String.valueOf(currentNightMode));
        mNightModePreference.setOnPreferenceChangeListener(this);
        mNightModePreference.setSelectedValue(String.valueOf(currentNightMode));
        mNightModePreference.setCallback(new DropDownPreference.Callback() {
            @Override
            public boolean onItemSelected(int pos, Object newValue) {
                try {
                    final int value = Integer.parseInt((String) newValue);
                    final UiModeManager uiManager = (UiModeManager) getSystemService(
                            Context.UI_MODE_SERVICE);
                    uiManager.setNightMode(value);
                    return true;
                } catch (NumberFormatException e) {
                    Log.e(TAG, "could not persist night mode setting", e);
                    return false;
                }
            }
        });
    }

    private ListPreference addListPreference(String prefKey) {
@@ -1808,16 +1822,6 @@ public class DevelopmentSettings extends SettingsPreferenceFragment
        } else if (preference == mTunerUiPref) {
            writeTweakUi(newValue);
            return true;
        } else if (preference == mNightModePreference) {
            try {
                final int value = Integer.parseInt((String) newValue);
                final UiModeManager uiManager = (UiModeManager) getSystemService(
                        Context.UI_MODE_SERVICE);
                uiManager.setNightMode(value);
            } catch (NumberFormatException e) {
                Log.e(TAG, "could not persist night mode setting", e);
            }
            return true;
        }
        return false;
    }
+12 −1
Original line number Diff line number Diff line
@@ -17,14 +17,15 @@
package com.android.settings;

import android.content.Context;
import android.content.res.TypedArray;
import android.preference.Preference;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.ArrayAdapter;
import android.widget.Spinner;
import android.widget.AdapterView.OnItemSelectedListener;

import java.util.ArrayList;

@@ -69,6 +70,16 @@ public class DropDownPreference extends Preference {
                return true;
            }
        });

        // Support XML specification like ListPreferences do.
        TypedArray a = context.obtainStyledAttributes(attrs, R.styleable.DropDownPreference);
        CharSequence[] entries = a.getTextArray(R.styleable.DropDownPreference_android_entries);
        CharSequence[] values = a.getTextArray(R.styleable.DropDownPreference_android_entryValues);
        if (entries != null && values != null) {
            for (int i= 0; i < entries.length; i++) {
                addItem(entries[i].toString(), values[i]);
            }
        }
    }

    public void setDropDownWidth(int dimenResId) {