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

Commit 3c0dde88 authored by Daniel Akinola's avatar Daniel Akinola Committed by Android (Google) Code Review
Browse files

Merge "Add Shade display position dev option" into main

parents 626017d1 e657ae66
Loading
Loading
Loading
Loading
+7 −0
Original line number Diff line number Diff line
@@ -569,6 +569,13 @@
            android:entries="@array/overlay_display_devices_entries"
            android:entryValues="@array/overlay_display_devices_values" />

        <ListPreference
            android:entries="@array/shade_display_awareness_entries"
            android:entryValues="@array/shade_display_awareness_values"
            android:key="shade_display_awareness"
            android:summary="@string/summary_placeholder"
            android:title="@string/shade_display_awareness_title" />

        <com.android.settings.display.DensityPreference
            android:key="density"
            android:title="@string/developer_smallest_width" />
+1 −0
Original line number Diff line number Diff line
@@ -837,6 +837,7 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra
        controllers.add(new ForceEnableNotesRolePreferenceController(context));
        controllers.add(new GrammaticalGenderPreferenceController(context));
        controllers.add(new SensitiveContentProtectionPreferenceController(context));
        controllers.add(new ShadeDisplayAwarenessPreferenceController(context));

        return controllers;
    }
+89 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2024 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.development;

import android.content.Context;
import android.provider.Settings;
import android.text.TextUtils;

import androidx.annotation.NonNull;
import androidx.preference.ListPreference;
import androidx.preference.Preference;

import com.android.settings.core.PreferenceControllerMixin;
import com.android.settingslib.R;
import com.android.settingslib.development.DeveloperOptionsPreferenceController;

public class ShadeDisplayAwarenessPreferenceController extends DeveloperOptionsPreferenceController
        implements Preference.OnPreferenceChangeListener, PreferenceControllerMixin,
        RebootConfirmationDialogHost {

    private static final int SHADE_DISPLAY_AWARENESS_DEFAULT = 0;
    private static final String SHADE_DISPLAY_AWARENESS_KEY = "shade_display_awareness";

    private final String[] mListValues;
    private final String[] mListSummaries;

    public ShadeDisplayAwarenessPreferenceController(Context context) {
        super(context);

        mListValues = mContext.getResources().getStringArray(
                R.array.shade_display_awareness_values);
        mListSummaries = mContext.getResources().getStringArray(
                R.array.shade_display_awareness_summaries);
    }

    @Override
    public String getPreferenceKey() {
        return SHADE_DISPLAY_AWARENESS_KEY;
    }

    @Override
    public boolean onPreferenceChange(@NonNull Preference preference, Object newValue) {
        Settings.Global.putString(mContext.getContentResolver(),
                Settings.Global.DEVELOPMENT_SHADE_DISPLAY_AWARENESS, newValue.toString());
        updateShadeDisplayAwareness((ListPreference) mPreference);
        return true;
    }

    @Override
    public void updateState(Preference preference) {
        updateShadeDisplayAwareness((ListPreference) mPreference);
    }

    private void updateShadeDisplayAwareness(ListPreference preference) {
        String currentValue = Settings.Global.getString(mContext.getContentResolver(),
                Settings.Global.DEVELOPMENT_SHADE_DISPLAY_AWARENESS);
        int index = SHADE_DISPLAY_AWARENESS_DEFAULT; // Defaults to value is device-display (0)
        for (int i = 0; i < mListValues.length; i++) {
            if (TextUtils.equals(currentValue, mListValues[i])) {
                index = i;
                break;
            }
        }
        preference.setValue(mListValues[index]);
        preference.setSummary(mListSummaries[index]);
    }

    @Override
    protected void onDeveloperOptionsSwitchDisabled() {
        super.onDeveloperOptionsSwitchDisabled();
        Settings.Global.putString(mContext.getContentResolver(),
                Settings.Global.DEVELOPMENT_SHADE_DISPLAY_AWARENESS,
                mListValues[SHADE_DISPLAY_AWARENESS_DEFAULT]);
    }
}