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

Commit 775cb147 authored by TreeHugger Robot's avatar TreeHugger Robot Committed by Android (Google) Code Review
Browse files

Merge "Change "When in VR mode" to full screen radio button picker"

parents 4a355851 a0c2c11b
Loading
Loading
Loading
Loading
+111 −110
Original line number Diff line number Diff line
@@ -14,7 +14,8 @@
     limitations under the License.
-->

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:settings="http://schemas.android.com/apk/res/com.android.settings"
    android:title="@string/display_settings"
    settings:keywords="@string/keywords_display">
@@ -120,9 +121,9 @@
        android:title="@string/device_theme"
        android:summary="%s" />

        <DropDownPreference
    <Preference
        android:key="vr_display_pref"
            android:summary="%s"
            android:title="@string/display_vr_pref_title" />
        android:title="@string/display_vr_pref_title"
        android:fragment="com.android.settings.display.VrDisplayPreferencePicker" />

</PreferenceScreen>
+6 −27
Original line number Diff line number Diff line
@@ -17,17 +17,13 @@ import android.app.ActivityManager;
import android.content.Context;
import android.content.pm.PackageManager;
import android.provider.Settings;
import android.support.v7.preference.DropDownPreference;
import android.support.v7.preference.Preference;
import android.util.Log;

import com.android.settings.R;
import com.android.settings.core.PreferenceController;

public class VrDisplayPreferenceController extends PreferenceController implements
        Preference.OnPreferenceChangeListener {
public class VrDisplayPreferenceController extends PreferenceController {

    private static final String TAG = "VrDisplayPrefContr";
    private static final String KEY_VR_DISPLAY_PREF = "vr_display_pref";

    public VrDisplayPreferenceController(Context context) {
@@ -47,31 +43,14 @@ public class VrDisplayPreferenceController extends PreferenceController implemen

    @Override
    public void updateState(Preference preference) {
        final DropDownPreference pref = (DropDownPreference) preference;
        pref.setEntries(new CharSequence[]{
                mContext.getString(R.string.display_vr_pref_low_persistence),
                mContext.getString(R.string.display_vr_pref_off),
        });
        pref.setEntryValues(new CharSequence[]{"0", "1"});

        int currentUser = ActivityManager.getCurrentUser();
        int current = Settings.Secure.getIntForUser(mContext.getContentResolver(),
                Settings.Secure.VR_DISPLAY_MODE,
                            /*default*/Settings.Secure.VR_DISPLAY_MODE_LOW_PERSISTENCE,
                Settings.Secure.VR_DISPLAY_MODE, Settings.Secure.VR_DISPLAY_MODE_LOW_PERSISTENCE,
                currentUser);
        pref.setValueIndex(current);
    }

    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        int i = Integer.parseInt((String) newValue);
        int u = ActivityManager.getCurrentUser();
        if (!Settings.Secure.putIntForUser(mContext.getContentResolver(),
                Settings.Secure.VR_DISPLAY_MODE,
                i, u)) {
            Log.e(TAG, "Could not change setting for " +
                    Settings.Secure.VR_DISPLAY_MODE);
        if (current == 0) {
            preference.setSummary(R.string.display_vr_pref_low_persistence);
        } else {
            preference.setSummary(R.string.display_vr_pref_off);
        }
        return true;
    }
}
+99 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2017 The Android Open Source Project
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *      http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.android.settings.display;

import android.content.Context;
import android.graphics.drawable.Drawable;
import android.provider.Settings;
import android.text.TextUtils;

import com.android.internal.logging.nano.MetricsProto;
import com.android.settings.R;
import com.android.settings.widget.RadioButtonPickerFragment;

import java.util.ArrayList;
import java.util.List;

public class VrDisplayPreferencePicker extends RadioButtonPickerFragment {

    static final String PREF_KEY_PREFIX = "vr_display_pref_";

    @Override
    public int getMetricsCategory() {
        return MetricsProto.MetricsEvent.VR_DISPLAY_PREFERENCE;
    }

    @Override
    protected List<VrCandidateInfo> getCandidates() {
        List<VrCandidateInfo> candidates = new ArrayList<>();
        final Context context = getContext();
        candidates.add(new VrCandidateInfo(context, 0, R.string.display_vr_pref_low_persistence));
        candidates.add(new VrCandidateInfo(context, 1, R.string.display_vr_pref_off));
        return candidates;
    }

    @Override
    protected String getDefaultKey() {
        int current = Settings.Secure.getIntForUser(getContext().getContentResolver(),
                Settings.Secure.VR_DISPLAY_MODE, Settings.Secure.VR_DISPLAY_MODE_LOW_PERSISTENCE,
                mUserId);
        return PREF_KEY_PREFIX + current;
    }

    @Override
    protected boolean setDefaultKey(String key) {
        if (TextUtils.isEmpty(key)) {
            return false;
        }
        switch (key) {
            case PREF_KEY_PREFIX + 0:
                return Settings.Secure.putIntForUser(getContext().getContentResolver(),
                        Settings.Secure.VR_DISPLAY_MODE, 0, mUserId);
            case PREF_KEY_PREFIX + 1:
                return Settings.Secure.putIntForUser(getContext().getContentResolver(),
                        Settings.Secure.VR_DISPLAY_MODE, 1, mUserId);
        }
        return false;
    }

    static class VrCandidateInfo extends CandidateInfo {

        public final String label;
        public final int value;

        public VrCandidateInfo(Context context, int value, int resId) {
            super(true);
            this.value = value;
            label = context.getString(resId);
        }

        @Override
        public CharSequence loadLabel() {
            return label;
        }

        @Override
        public Drawable loadIcon() {
            return null;
        }

        @Override
        public String getKey() {
            return PREF_KEY_PREFIX + value;
        }
    }
}
+1 −2
Original line number Diff line number Diff line
@@ -141,8 +141,7 @@ public abstract class RadioButtonPickerFragment extends InstrumentedPreferenceFr
        }
        for (Map.Entry<String, CandidateInfo> app : mCandidates.entrySet()) {
            RadioButtonPreference pref = new RadioButtonPreference(getPrefContext());
            bindPreference(
                    pref, app.getKey(), app.getValue(), defaultKey);
            bindPreference(pref, app.getKey(), app.getValue(), defaultKey);
            bindPreferenceExtra(pref, app.getKey(), app.getValue(), defaultKey, systemDefaultKey);
            screen.addPreference(pref);
        }
+0 −1
Original line number Diff line number Diff line
@@ -17,7 +17,6 @@
package com.android.settings.applications.defaultapps;


import static com.google.common.truth.Truth.assertThat;
import static org.mockito.Matchers.any;
import static org.mockito.Mockito.doReturn;
import static org.mockito.Mockito.spy;
Loading