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

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

Merge "Setting to control UI mode"

parents 2b730e42 3dd45c0e
Loading
Loading
Loading
Loading
+14 −0
Original line number Diff line number Diff line
@@ -1079,4 +1079,18 @@
        <item>2</item>
    </string-array>

    <!-- Titles for ui dark mode preference. -->
    <string-array name="dark_ui_mode_entries" >
        <item>Automatic (based on time of day)</item>
        <item>Always on</item>
        <item>Always off</item>
    </string-array>

    <!-- Values for ui dark mode preference. -->
    <string-array name="dark_ui_mode_values" translatable="false" >
        <item>auto</item>
        <item>yes</item>
        <item>no</item>
    </string-array>

</resources>
+6 −0
Original line number Diff line number Diff line
@@ -8887,6 +8887,12 @@
    <!-- [CHAR LIMIT=60] Name of dev option called "System UI demo mode" -->
    <string name="demo_mode">System UI demo mode</string>
    <!-- [CHAR LIMIT=60] Name of dev option that changes the UI Mode -->
    <string name="dark_ui_mode">Night mode</string>
    <!-- [CHAR LIMIT=60] Name of dev option that changes the color of the UI -->
    <string name="dark_ui_mode_title">Set Night mode</string>
    <!-- [CHAR LIMIT=60] Name of dev option to enable extra quick settings tiles -->
    <string name="quick_settings_developer_tiles">Quick settings developer tiles</string>
+7 −0
Original line number Diff line number Diff line
@@ -112,6 +112,13 @@
            <intent android:action="com.android.settings.action.DEMO_MODE" />
        </Preference>

        <ListPreference
            android:key="dark_ui_mode"
            android:title="@string/dark_ui_mode"
            android:dialogTitle="@string/dark_ui_mode_title"
            android:entries="@array/dark_ui_mode_entries"
            android:entryValues="@array/dark_ui_mode_values" />

        <Preference
            android:key="quick_settings_tiles"
            android:title="@string/quick_settings_developer_tiles"
+107 −0
Original line number Diff line number Diff line
/*
 * Copyright (C) 2018 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.app.UiModeManager;
import android.content.Context;
import android.support.annotation.VisibleForTesting;
import android.support.v7.preference.ListPreference;
import android.support.v7.preference.Preference;

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

public class DarkUIPreferenceController extends
        DeveloperOptionsPreferenceController implements Preference.OnPreferenceChangeListener,
        PreferenceControllerMixin {

    private static final String DARK_UI_KEY = "dark_ui_mode";
    private final UiModeManager mUiModeManager;

    public DarkUIPreferenceController(Context context) {
        this(context, context.getSystemService(UiModeManager.class));
    }

    @VisibleForTesting
    DarkUIPreferenceController(Context context, UiModeManager uiModeManager) {
        super(context);
        mUiModeManager = uiModeManager;
    }

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

    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        mUiModeManager.setNightMode(modeToInt((String) newValue));
        updateSummary(preference);
        return true;
    }

    @Override
    public void updateState(Preference preference) {
        updateSummary(preference);
    }

    private void updateSummary(Preference preference) {
        int mode = mUiModeManager.getNightMode();
        ((ListPreference) preference).setValue(modeToString(mode));
        preference.setSummary(modeToDescription(mode));
    }

    private String modeToDescription(int mode) {
        String[] values = mContext.getResources().getStringArray(R.array.dark_ui_mode_entries);
        switch (mode) {
            case UiModeManager.MODE_NIGHT_AUTO:
                return values[0];
            case UiModeManager.MODE_NIGHT_YES:
                return values[1];
            case UiModeManager.MODE_NIGHT_NO:
            default:
                return values[2];

        }
    }

    private String modeToString(int mode) {
        switch (mode) {
            case UiModeManager.MODE_NIGHT_AUTO:
                return "auto";
            case UiModeManager.MODE_NIGHT_YES:
                return "yes";
            case UiModeManager.MODE_NIGHT_NO:
            default:
                return "no";

        }
    }

    private int modeToInt(String mode) {
        switch (mode) {
            case "auto":
                return UiModeManager.MODE_NIGHT_AUTO;
            case "yes":
                return UiModeManager.MODE_NIGHT_YES;
            case "no":
            default:
                return UiModeManager.MODE_NIGHT_NO;
        }
    }
}
+1 −0
Original line number Diff line number Diff line
@@ -375,6 +375,7 @@ public class DevelopmentSettingsDashboardFragment extends RestrictedDashboardFra
        controllers.add(new LocalBackupPasswordPreferenceController(context));
        controllers.add(new StayAwakePreferenceController(context, lifecycle));
        controllers.add(new HdcpCheckingPreferenceController(context));
        controllers.add(new DarkUIPreferenceController(context));
        controllers.add(new BluetoothSnoopLogPreferenceController(context));
        controllers.add(new OemUnlockPreferenceController(context, activity, fragment));
        controllers.add(new FileEncryptionPreferenceController(context));
Loading