use of com.google.android.material.slider.RangeSlider in project OsmAnd by osmandapp.
the class GpsFiltersCard method setupSlider.
private void setupSlider(@NonNull final View container, @NonNull final GpsFilter filter) {
boolean range = filter.isRangeSupported();
boolean enabled = filter.getMinValue() != filter.getMaxValue();
Slider slider = container.findViewById(R.id.filter_slider);
RangeSlider rangeSlider = container.findViewById(R.id.filter_range_slider);
AndroidUiHelper.updateVisibility(slider, !range);
AndroidUiHelper.updateVisibility(rangeSlider, range);
if (range) {
rangeSlider.setEnabled(enabled);
rangeSlider.clearOnChangeListeners();
if (enabled) {
rangeSlider.setValueFrom((float) filter.getMinValue());
rangeSlider.setValueTo((float) filter.getMaxValue());
rangeSlider.setValues(((float) filter.getSelectedMinValue()), ((float) filter.getSelectedMaxValue()));
rangeSlider.addOnChangeListener((slider1, value, fromUser) -> {
List<Float> values = rangeSlider.getValues();
if (fromUser && values.size() == 2) {
filter.updateValues((values.get(0)), values.get(1));
updateDisplayedFilterNumbers(container, filter);
if (gpxDataItem != null) {
boolean updated = gpxDbHelper.updateGpsFilters(gpxDataItem, filteredSelectedGpxFile);
if (updated) {
gpsFilterHelper.filterGpxFile(filteredSelectedGpxFile, true);
}
}
}
});
}
UiUtilities.setupSlider(rangeSlider, nightMode, ColorUtilities.getActiveColor(app, nightMode), false);
} else {
slider.setEnabled(enabled);
slider.clearOnChangeListeners();
if (enabled) {
slider.setValueFrom((float) filter.getMinValue());
slider.setValueTo((float) filter.getMaxValue());
slider.setValue((float) filter.getSelectedMaxValue());
slider.addOnChangeListener((slider1, value, fromUser) -> {
if (fromUser) {
filter.updateValue((slider.getValue()));
updateDisplayedFilterNumbers(container, filter);
if (gpxDataItem != null) {
boolean updated = gpxDbHelper.updateGpsFilters(gpxDataItem, filteredSelectedGpxFile);
if (updated) {
gpsFilterHelper.filterGpxFile(filteredSelectedGpxFile, true);
}
}
}
});
}
UiUtilities.setupSlider(slider, nightMode, ColorUtilities.getActiveColor(app, nightMode));
}
}
Aggregations