Merge "[Reduce Bright Colors] Use a switch preference" into sc-dev am: 9aff855052
Original change: https://googleplex-android-review.googlesource.com/c/platform/packages/apps/Settings/+/13719274 Change-Id: Ide66887df44b1ea331275a9766c7ac7ee7d5dfec
This commit is contained in:
@@ -44,7 +44,7 @@
|
|||||||
settings:searchable="true"/>
|
settings:searchable="true"/>
|
||||||
|
|
||||||
<!--TODO(b/170973645): Get icon-->
|
<!--TODO(b/170973645): Get icon-->
|
||||||
<Preference
|
<com.android.settings.widget.PrimarySwitchPreference
|
||||||
android:fragment="com.android.settings.accessibility.ToggleReduceBrightColorsPreferenceFragment"
|
android:fragment="com.android.settings.accessibility.ToggleReduceBrightColorsPreferenceFragment"
|
||||||
android:key="reduce_bright_colors_preference"
|
android:key="reduce_bright_colors_preference"
|
||||||
android:persistent="false"
|
android:persistent="false"
|
||||||
|
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright (C) 2020 The Android Open Source Project
|
* Copyright (C) 2021 The Android Open Source Project
|
||||||
*
|
*
|
||||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -17,17 +17,60 @@
|
|||||||
package com.android.settings.accessibility;
|
package com.android.settings.accessibility;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.database.ContentObserver;
|
||||||
import android.hardware.display.ColorDisplayManager;
|
import android.hardware.display.ColorDisplayManager;
|
||||||
|
import android.net.Uri;
|
||||||
|
import android.os.Handler;
|
||||||
|
import android.os.Looper;
|
||||||
|
import android.os.UserHandle;
|
||||||
|
import android.provider.Settings;
|
||||||
|
import android.text.TextUtils;
|
||||||
|
|
||||||
|
import androidx.preference.Preference;
|
||||||
|
import androidx.preference.PreferenceScreen;
|
||||||
|
|
||||||
import com.android.settings.R;
|
import com.android.settings.R;
|
||||||
import com.android.settings.core.BasePreferenceController;
|
import com.android.settings.core.TogglePreferenceController;
|
||||||
|
import com.android.settings.widget.PrimarySwitchPreference;
|
||||||
|
import com.android.settingslib.core.lifecycle.LifecycleObserver;
|
||||||
|
import com.android.settingslib.core.lifecycle.events.OnStart;
|
||||||
|
import com.android.settingslib.core.lifecycle.events.OnStop;
|
||||||
|
|
||||||
/** PreferenceController that shows the Reduce Bright Colors summary */
|
/** PreferenceController that shows the Reduce Bright Colors summary */
|
||||||
public class ReduceBrightColorsPreferenceController extends BasePreferenceController {
|
public class ReduceBrightColorsPreferenceController extends TogglePreferenceController
|
||||||
|
implements LifecycleObserver, OnStart, OnStop {
|
||||||
|
private ContentObserver mSettingsContentObserver;
|
||||||
|
private PrimarySwitchPreference mPreference;
|
||||||
|
private final Context mContext;
|
||||||
|
|
||||||
public ReduceBrightColorsPreferenceController(Context context,
|
public ReduceBrightColorsPreferenceController(Context context,
|
||||||
String preferenceKey) {
|
String preferenceKey) {
|
||||||
super(context, preferenceKey);
|
super(context, preferenceKey);
|
||||||
|
mContext = context;
|
||||||
|
mSettingsContentObserver = new ContentObserver(new Handler(Looper.getMainLooper())){
|
||||||
|
@Override
|
||||||
|
public void onChange(boolean selfChange, Uri uri) {
|
||||||
|
final String path = uri == null ? null : uri.getLastPathSegment();
|
||||||
|
if (TextUtils.equals(path, Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED)) {
|
||||||
|
updateState(mPreference);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isChecked() {
|
||||||
|
return Settings.Secure.getIntForUser(mContext.getContentResolver(),
|
||||||
|
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED,
|
||||||
|
0,
|
||||||
|
UserHandle.USER_CURRENT) == 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean setChecked(boolean isChecked) {
|
||||||
|
return Settings.Secure.putIntForUser(mContext.getContentResolver(),
|
||||||
|
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, isChecked ? 1 : 0,
|
||||||
|
UserHandle.USER_CURRENT);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -36,9 +79,32 @@ public class ReduceBrightColorsPreferenceController extends BasePreferenceContro
|
|||||||
R.string.reduce_bright_colors_preference_summary);
|
R.string.reduce_bright_colors_preference_summary);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void updateState(Preference preference) {
|
||||||
|
super.updateState(preference);
|
||||||
|
refreshSummary(preference);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public int getAvailabilityStatus() {
|
public int getAvailabilityStatus() {
|
||||||
return ColorDisplayManager.isColorTransformAccelerated(mContext) ? AVAILABLE
|
return ColorDisplayManager.isColorTransformAccelerated(mContext) ? AVAILABLE
|
||||||
: UNSUPPORTED_ON_DEVICE;
|
: UNSUPPORTED_ON_DEVICE;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void displayPreference(PreferenceScreen screen) {
|
||||||
|
super.displayPreference(screen);
|
||||||
|
mPreference = screen.findPreference(getPreferenceKey());
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onStart() {
|
||||||
|
mContext.getContentResolver().registerContentObserver(Settings.Secure.getUriFor(
|
||||||
|
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED),
|
||||||
|
false, mSettingsContentObserver, UserHandle.USER_CURRENT);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
public void onStop() {
|
||||||
|
mContext.getContentResolver().unregisterContentObserver(mSettingsContentObserver);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -19,6 +19,7 @@ package com.android.settings.accessibility;
|
|||||||
import static com.google.common.truth.Truth.assertThat;
|
import static com.google.common.truth.Truth.assertThat;
|
||||||
|
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
|
import android.provider.Settings;
|
||||||
|
|
||||||
import androidx.test.core.app.ApplicationProvider;
|
import androidx.test.core.app.ApplicationProvider;
|
||||||
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
import androidx.test.ext.junit.runners.AndroidJUnit4;
|
||||||
@@ -31,7 +32,6 @@ import org.junit.runner.RunWith;
|
|||||||
@RunWith(AndroidJUnit4.class)
|
@RunWith(AndroidJUnit4.class)
|
||||||
public class ReduceBrightColorsPreferenceControllerTest {
|
public class ReduceBrightColorsPreferenceControllerTest {
|
||||||
private static final String PREF_KEY = "rbc_preference";
|
private static final String PREF_KEY = "rbc_preference";
|
||||||
|
|
||||||
private final Context mContext = ApplicationProvider.getApplicationContext();
|
private final Context mContext = ApplicationProvider.getApplicationContext();
|
||||||
private final ReduceBrightColorsPreferenceController mController =
|
private final ReduceBrightColorsPreferenceController mController =
|
||||||
new ReduceBrightColorsPreferenceController(mContext, PREF_KEY);
|
new ReduceBrightColorsPreferenceController(mContext, PREF_KEY);
|
||||||
@@ -41,4 +41,18 @@ public class ReduceBrightColorsPreferenceControllerTest {
|
|||||||
assertThat(mController.getSummary().toString().contains(
|
assertThat(mController.getSummary().toString().contains(
|
||||||
mContext.getText(R.string.reduce_bright_colors_preference_summary))).isTrue();
|
mContext.getText(R.string.reduce_bright_colors_preference_summary))).isTrue();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isChecked_reduceBrightColorsIsActivated_returnTrue() {
|
||||||
|
Settings.Secure.putInt(mContext.getContentResolver(),
|
||||||
|
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 1);
|
||||||
|
assertThat(mController.isChecked()).isTrue();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
public void isChecked_reduceBrightColorsIsNotActivated_returnFalse() {
|
||||||
|
Settings.Secure.putInt(mContext.getContentResolver(),
|
||||||
|
Settings.Secure.REDUCE_BRIGHT_COLORS_ACTIVATED, 0);
|
||||||
|
assertThat(mController.isChecked()).isFalse();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user