Merge "Migrate SeekBarPreference to SliderPreference" into main

This commit is contained in:
Angela Wang
2024-12-23 17:51:06 -08:00
committed by Android (Google) Code Review
3 changed files with 22 additions and 21 deletions

View File

@@ -37,8 +37,8 @@ import androidx.preference.PreferenceGroup;
import androidx.preference.PreferenceViewHolder; import androidx.preference.PreferenceViewHolder;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.widget.SeekBarPreference;
import com.android.settingslib.bluetooth.AmbientVolumeUi; import com.android.settingslib.bluetooth.AmbientVolumeUi;
import com.android.settingslib.widget.SliderPreference;
import com.google.common.collect.BiMap; import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap; import com.google.common.collect.HashBiMap;
@@ -68,12 +68,12 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
private boolean mExpanded = false; private boolean mExpanded = false;
private boolean mMutable = false; private boolean mMutable = false;
private boolean mMuted = false; private boolean mMuted = false;
private final BiMap<Integer, SeekBarPreference> mSideToSliderMap = HashBiMap.create(); private final BiMap<Integer, SliderPreference> mSideToSliderMap = HashBiMap.create();
private int mVolumeLevel = AMBIENT_VOLUME_LEVEL_DEFAULT; private int mVolumeLevel = AMBIENT_VOLUME_LEVEL_DEFAULT;
private final OnPreferenceChangeListener mPreferenceChangeListener = private final OnPreferenceChangeListener mPreferenceChangeListener =
(slider, v) -> { (slider, v) -> {
if (slider instanceof SeekBarPreference && v instanceof final Integer value) { if (slider instanceof SliderPreference && v instanceof final Integer value) {
final Integer side = mSideToSliderMap.inverse().get(slider); final Integer side = mSideToSliderMap.inverse().get(slider);
if (mListener != null && side != null) { if (mListener != null && side != null) {
mListener.onSliderValueChange(side, value); mListener.onSliderValueChange(side, value);
@@ -173,8 +173,8 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
} }
mMuted = muted; mMuted = muted;
if (mMutable && mMuted) { if (mMutable && mMuted) {
for (SeekBarPreference slider : mSideToSliderMap.values()) { for (SliderPreference slider : mSideToSliderMap.values()) {
slider.setProgress(slider.getMin()); slider.setValue(slider.getMin());
} }
} }
updateVolumeIcon(); updateVolumeIcon();
@@ -198,7 +198,7 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
if (!mSideToSliderMap.isEmpty()) { if (!mSideToSliderMap.isEmpty()) {
for (int side : VALID_SIDES) { for (int side : VALID_SIDES) {
final SeekBarPreference slider = mSideToSliderMap.get(side); final SliderPreference slider = mSideToSliderMap.get(side);
if (slider != null && findPreference(slider.getKey()) == null) { if (slider != null && findPreference(slider.getKey()) == null) {
addPreference(slider); addPreference(slider);
} }
@@ -209,7 +209,7 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
@Override @Override
public void setSliderEnabled(int side, boolean enabled) { public void setSliderEnabled(int side, boolean enabled) {
SeekBarPreference slider = mSideToSliderMap.get(side); SliderPreference slider = mSideToSliderMap.get(side);
if (slider != null && slider.isEnabled() != enabled) { if (slider != null && slider.isEnabled() != enabled) {
slider.setEnabled(enabled); slider.setEnabled(enabled);
updateLayout(); updateLayout();
@@ -218,16 +218,16 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
@Override @Override
public void setSliderValue(int side, int value) { public void setSliderValue(int side, int value) {
SeekBarPreference slider = mSideToSliderMap.get(side); SliderPreference slider = mSideToSliderMap.get(side);
if (slider != null && slider.getProgress() != value) { if (slider != null && slider.getValue() != value) {
slider.setProgress(value); slider.setValue(value);
updateVolumeLevel(); updateVolumeLevel();
} }
} }
@Override @Override
public void setSliderRange(int side, int min, int max) { public void setSliderRange(int side, int min, int max) {
SeekBarPreference slider = mSideToSliderMap.get(side); SliderPreference slider = mSideToSliderMap.get(side);
if (slider != null) { if (slider != null) {
slider.setMin(min); slider.setMin(min);
slider.setMax(max); slider.setMax(max);
@@ -243,7 +243,7 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
slider.setVisible(mExpanded); slider.setVisible(mExpanded);
} }
if (!slider.isEnabled()) { if (!slider.isEnabled()) {
slider.setProgress(slider.getMin()); slider.setValue(slider.getMin());
} }
}); });
updateVolumeLevel(); updateVolumeLevel();
@@ -265,14 +265,14 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
} }
private int getVolumeLevel(int side) { private int getVolumeLevel(int side) {
SeekBarPreference slider = mSideToSliderMap.get(side); SliderPreference slider = mSideToSliderMap.get(side);
if (slider == null || !slider.isEnabled()) { if (slider == null || !slider.isEnabled()) {
return 0; return 0;
} }
final double min = slider.getMin(); final double min = slider.getMin();
final double max = slider.getMax(); final double max = slider.getMax();
final double levelGap = (max - min) / 4.0; final double levelGap = (max - min) / 4.0;
final int value = slider.getProgress(); final int value = slider.getValue();
return (int) Math.ceil((value - min) / levelGap); return (int) Math.ceil((value - min) / levelGap);
} }
@@ -311,7 +311,7 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
if (mSideToSliderMap.containsKey(side)) { if (mSideToSliderMap.containsKey(side)) {
return; return;
} }
SeekBarPreference slider = new SeekBarPreference(getContext()); SliderPreference slider = new SliderPreference(getContext());
slider.setKey(KEY_AMBIENT_VOLUME_SLIDER + "_" + side); slider.setKey(KEY_AMBIENT_VOLUME_SLIDER + "_" + side);
slider.setOrder(order); slider.setOrder(order);
slider.setOnPreferenceChangeListener(mPreferenceChangeListener); slider.setOnPreferenceChangeListener(mPreferenceChangeListener);
@@ -326,7 +326,7 @@ public class AmbientVolumePreference extends PreferenceGroup implements AmbientV
} }
@VisibleForTesting @VisibleForTesting
Map<Integer, SeekBarPreference> getSliders() { Map<Integer, SliderPreference> getSliders() {
return mSideToSliderMap; return mSideToSliderMap;
} }
} }

View File

@@ -373,6 +373,7 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment
} }
mFormatter.updateLayout(FragmentTypeModel.DeviceDetailsMainFragment.INSTANCE); mFormatter.updateLayout(FragmentTypeModel.DeviceDetailsMainFragment.INSTANCE);
} }
setDivider(null);
} }
@Override @Override

View File

@@ -41,8 +41,8 @@ import androidx.preference.PreferenceViewHolder;
import androidx.test.core.app.ApplicationProvider; import androidx.test.core.app.ApplicationProvider;
import com.android.settings.R; import com.android.settings.R;
import com.android.settings.widget.SeekBarPreference;
import com.android.settingslib.bluetooth.AmbientVolumeUi; import com.android.settingslib.bluetooth.AmbientVolumeUi;
import com.android.settingslib.widget.SliderPreference;
import org.junit.Before; import org.junit.Before;
import org.junit.Rule; import org.junit.Rule;
@@ -99,13 +99,13 @@ public class AmbientVolumePreferenceTest {
slider.setMax(4); slider.setMax(4);
if (side == SIDE_LEFT) { if (side == SIDE_LEFT) {
slider.setKey(KEY_LEFT_SLIDER); slider.setKey(KEY_LEFT_SLIDER);
slider.setProgress(TEST_LEFT_VOLUME_LEVEL); slider.setValue(TEST_LEFT_VOLUME_LEVEL);
} else if (side == SIDE_RIGHT) { } else if (side == SIDE_RIGHT) {
slider.setKey(KEY_RIGHT_SLIDER); slider.setKey(KEY_RIGHT_SLIDER);
slider.setProgress(TEST_RIGHT_VOLUME_LEVEL); slider.setValue(TEST_RIGHT_VOLUME_LEVEL);
} else { } else {
slider.setKey(KEY_UNIFIED_SLIDER); slider.setKey(KEY_UNIFIED_SLIDER);
slider.setProgress(TEST_UNIFIED_VOLUME_LEVEL); slider.setValue(TEST_UNIFIED_VOLUME_LEVEL);
} }
}); });
@@ -223,7 +223,7 @@ public class AmbientVolumePreferenceTest {
private void assertControlUiCorrect() { private void assertControlUiCorrect() {
final boolean expanded = mPreference.isExpanded(); final boolean expanded = mPreference.isExpanded();
Map<Integer, SeekBarPreference> sliders = mPreference.getSliders(); Map<Integer, SliderPreference> sliders = mPreference.getSliders();
assertThat(sliders.get(SIDE_UNIFIED).isVisible()).isEqualTo(!expanded); assertThat(sliders.get(SIDE_UNIFIED).isVisible()).isEqualTo(!expanded);
assertThat(sliders.get(SIDE_LEFT).isVisible()).isEqualTo(expanded); assertThat(sliders.get(SIDE_LEFT).isVisible()).isEqualTo(expanded);
assertThat(sliders.get(SIDE_RIGHT).isVisible()).isEqualTo(expanded); assertThat(sliders.get(SIDE_RIGHT).isVisible()).isEqualTo(expanded);