Merge "Migrate SeekBarPreference to SliderPreference" into main
This commit is contained in:
@@ -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;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -373,6 +373,7 @@ public class BluetoothDeviceDetailsFragment extends RestrictedDashboardFragment
|
|||||||
}
|
}
|
||||||
mFormatter.updateLayout(FragmentTypeModel.DeviceDetailsMainFragment.INSTANCE);
|
mFormatter.updateLayout(FragmentTypeModel.DeviceDetailsMainFragment.INSTANCE);
|
||||||
}
|
}
|
||||||
|
setDivider(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@@ -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);
|
||||||
|
Reference in New Issue
Block a user