Search in sources :

Example 6 with RangeSlider

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));
    }
}
Also used : Slider(com.google.android.material.slider.Slider) RangeSlider(com.google.android.material.slider.RangeSlider) RangeSlider(com.google.android.material.slider.RangeSlider)

Aggregations

RangeSlider (com.google.android.material.slider.RangeSlider)6 View (android.view.View)3 Slider (com.google.android.material.slider.Slider)3 LayoutInflater (android.view.LayoutInflater)2 TextView (android.widget.TextView)2 List (java.util.List)2 OsmandApplication (net.osmand.plus.OsmandApplication)2 SimpleBottomSheetItem (net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem)2 TitleItem (net.osmand.plus.base.bottomsheetmenu.simpleitems.TitleItem)2 SuppressLint (android.annotation.SuppressLint)1 Button (android.widget.Button)1