Search in sources :

Example 11 with Slider

use of com.google.android.material.slider.Slider in project Osmand by osmandapp.

the class WakeTimeBottomSheet method createMenuItems.

@Override
public void createMenuItems(Bundle savedInstanceState) {
    Context ctx = getContext();
    listPreference = getListPreference();
    if (ctx == null || listPreference == null) {
        return;
    }
    if (savedInstanceState != null) {
        selectedEntryIndex = savedInstanceState.getInt(SELECTED_ENTRY_INDEX_KEY);
        keepScreenOnEnabled = savedInstanceState.getBoolean(KEEP_SCREEN_ON_ENABLED);
    } else {
        int savedValIndex = listPreference.getValueIndex();
        keepScreenOnEnabled = savedValIndex <= 0;
        selectedEntryIndex = savedValIndex > 0 ? savedValIndex : 1;
    }
    items.add(new TitleItem(listPreference.getDialogTitle()));
    BaseBottomSheetItem preferenceDescription = new BottomSheetItemWithDescription.Builder().setDescription(listPreference.getDescription()).setLayoutId(R.layout.bottom_sheet_item_descr).create();
    items.add(preferenceDescription);
    final String on = getString(R.string.keep_screen_on);
    // also needs to say 'on' the way the dialog is designed.
    final String off = getString(R.string.keep_screen_on);
    final BottomSheetItemWithCompoundButton[] preferenceBtn = new BottomSheetItemWithCompoundButton[1];
    preferenceBtn[0] = (BottomSheetItemWithCompoundButton) new BottomSheetItemWithCompoundButton.Builder().setChecked(keepScreenOnEnabled).setTitle(keepScreenOnEnabled ? on : off).setLayoutId(R.layout.bottom_sheet_item_with_switch_no_icon).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            keepScreenOnEnabled = !keepScreenOnEnabled;
            preferenceBtn[0].setTitle(keepScreenOnEnabled ? on : off);
            preferenceBtn[0].setChecked(keepScreenOnEnabled);
            AndroidUiHelper.updateVisibility(sliderView, !keepScreenOnEnabled);
            setupHeightAndBackground(getView());
        }
    }).create();
    items.add(preferenceBtn[0]);
    DividerItem dividerItem = new DividerItem(ctx);
    int topMargin = ctx.getResources().getDimensionPixelSize(R.dimen.context_menu_subtitle_margin);
    int startMargin = ctx.getResources().getDimensionPixelSize(R.dimen.content_padding);
    dividerItem.setMargins(startMargin, topMargin, 0, 0);
    items.add(dividerItem);
    items.add(new DividerSpaceItem(ctx, ctx.getResources().getDimensionPixelSize(R.dimen.content_padding_small)));
    sliderView = UiUtilities.getInflater(ctx, nightMode).inflate(R.layout.bottom_sheet_item_slider_with_two_text, null);
    AndroidUiHelper.updateVisibility(sliderView, !keepScreenOnEnabled);
    Context themedCtx = UiUtilities.getThemedContext(ctx, nightMode);
    TextView tvSliderTitle = sliderView.findViewById(android.R.id.title);
    tvSliderTitle.setText(getString(R.string.wake_time));
    final TextView tvSliderSummary = sliderView.findViewById(android.R.id.summary);
    tvSliderSummary.setText(listPreference.getEntries()[selectedEntryIndex]);
    Slider slider = sliderView.findViewById(R.id.slider);
    slider.setValue(selectedEntryIndex);
    slider.setStepSize(1);
    slider.setValueFrom(1);
    slider.setValueTo(listPreference.getEntryValues().length - 1);
    slider.addOnChangeListener(new Slider.OnChangeListener() {

        @Override
        public void onValueChange(@NonNull Slider slider, float value, boolean fromUser) {
            if (fromUser) {
                selectedEntryIndex = (int) value;
                tvSliderSummary.setText(listPreference.getEntries()[selectedEntryIndex]);
            }
        }
    });
    int appModeColor = getAppMode().getProfileColor(nightMode);
    UiUtilities.setupSlider(slider, nightMode, appModeColor, true);
    items.add(new BaseBottomSheetItem.Builder().setCustomView(sliderView).create());
    BaseBottomSheetItem timeoutDescription = new BottomSheetItemWithDescription.Builder().setDescription(getString(R.string.screen_timeout_descr, getString(R.string.system_screen_timeout))).setLayoutId(R.layout.bottom_sheet_item_descr).create();
    items.add(timeoutDescription);
}
Also used : Context(android.content.Context) BaseBottomSheetItem(net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem) Slider(com.google.android.material.slider.Slider) TitleItem(net.osmand.plus.base.bottomsheetmenu.simpleitems.TitleItem) TextView(android.widget.TextView) View(android.view.View) BottomSheetItemWithDescription(net.osmand.plus.base.bottomsheetmenu.BottomSheetItemWithDescription) TextView(android.widget.TextView) DividerItem(net.osmand.plus.base.bottomsheetmenu.simpleitems.DividerItem) DividerSpaceItem(net.osmand.plus.base.bottomsheetmenu.simpleitems.DividerSpaceItem) BottomSheetItemWithCompoundButton(net.osmand.plus.base.bottomsheetmenu.BottomSheetItemWithCompoundButton)

Example 12 with Slider

use of com.google.android.material.slider.Slider in project Osmand by osmandapp.

the class RecalculateRouteInDeviationBottomSheet method createMenuItems.

@Override
public void createMenuItems(Bundle savedInstanceState) {
    app = requiredMyApplication();
    settings = app.getSettings();
    appMode = getAppMode();
    preference = settings.ROUTE_RECALCULATION_DISTANCE;
    Context themedCtx = UiUtilities.getThemedContext(app, nightMode);
    getPreferenceStateAndValue();
    final SwitchPreferenceEx switchPref = (SwitchPreferenceEx) getPreference();
    if (switchPref == null) {
        return;
    }
    if (savedInstanceState != null && savedInstanceState.containsKey(CURRENT_VALUE)) {
        currentValue = savedInstanceState.getFloat(CURRENT_VALUE);
    }
    int contentPaddingSmall = app.getResources().getDimensionPixelSize(R.dimen.content_padding_small);
    int contentPadding = app.getResources().getDimensionPixelSize(R.dimen.content_padding);
    MetricsConstants mc = settings.METRIC_SYSTEM.get();
    if (mc == MetricsConstants.KILOMETERS_AND_METERS) {
        entryValues = new Float[] { 10.f, 20.0f, 30.0f, 50.0f, 100.0f, 200.0f, 500.0f, 1000.0f, 1500.0f };
    } else {
        entryValues = new Float[] { 9.1f, 18.3f, 30.5f, 45.7f, 91.5f, 183.0f, 482.0f, 965.0f, 1609.0f };
    }
    final int appModeColor = appMode.getProfileColor(nightMode);
    final int activeColor = AndroidUtils.resolveAttribute(themedCtx, R.attr.active_color_basic);
    final int disabledColor = AndroidUtils.resolveAttribute(themedCtx, android.R.attr.textColorSecondary);
    String title = getString(R.string.recalculate_route_in_deviation);
    items.add(new TitleItem(title));
    final View sliderView = UiUtilities.getInflater(getContext(), nightMode).inflate(R.layout.bottom_sheet_item_slider_with_two_text, null);
    slider = sliderView.findViewById(R.id.slider);
    tvSliderTitle = sliderView.findViewById(android.R.id.title);
    tvSliderTitle.setText(getString(R.string.distance));
    tvSliderSummary = sliderView.findViewById(android.R.id.summary);
    slider.setValueFrom(0);
    slider.setValueTo(entryValues.length - 1);
    slider.setStepSize(1);
    updateSliderView();
    final String on = getString(R.string.shared_string_enabled);
    final String off = getString(R.string.shared_string_disabled);
    final BottomSheetItemWithCompoundButton[] preferenceBtn = new BottomSheetItemWithCompoundButton[1];
    preferenceBtn[0] = (BottomSheetItemWithCompoundButton) new BottomSheetItemWithCompoundButton.Builder().setChecked(enabled).setCompoundButtonColor(appModeColor).setTitle(enabled ? on : off).setTitleColorId(enabled ? activeColor : disabledColor).setCustomView(getCustomButtonView(app, getAppMode(), enabled, nightMode)).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            enabled = !enabled;
            sliderPositionChanged = false;
            switchPref.setChecked(enabled);
            preferenceBtn[0].setTitle(enabled ? on : off);
            preferenceBtn[0].setTitleColorId(enabled ? activeColor : disabledColor);
            preferenceBtn[0].setChecked(enabled);
            getDefaultValue();
            updateSliderView();
            updateCustomButtonView(app, getAppMode(), v, enabled, nightMode);
            Fragment target = getTargetFragment();
            float newValue = enabled ? DEFAULT_MODE : DISABLE_MODE;
            if (target instanceof OnConfirmPreferenceChange) {
                ((OnConfirmPreferenceChange) target).onConfirmPreferenceChange(switchPref.getKey(), newValue, ApplyQueryType.NONE);
            }
        }
    }).create();
    items.add(preferenceBtn[0]);
    items.add(new DividerSpaceItem(app, contentPaddingSmall));
    items.add(new LongDescriptionItem(getString(R.string.select_distance_route_will_recalc)));
    items.add(new DividerSpaceItem(app, contentPadding));
    slider.addOnChangeListener(new Slider.OnChangeListener() {

        @Override
        public void onValueChange(@NonNull Slider slider, float value, boolean fromUser) {
            sliderPositionChanged = true;
            if (fromUser) {
                currentValue = entryValues[(int) slider.getValue()];
                tvSliderSummary.setText(getFormattedDistance(app, currentValue));
            }
        }
    });
    UiUtilities.setupSlider(slider, nightMode, appModeColor, true);
    items.add(new BaseBottomSheetItem.Builder().setCustomView(sliderView).create());
    items.add(new SubtitmeListDividerItem(getContext()));
    items.add(new DividerSpaceItem(app, contentPaddingSmall));
    items.add(new LongDescriptionItem(getString(R.string.recalculate_route_distance_promo)));
}
Also used : Context(android.content.Context) BaseBottomSheetItem(net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem) Slider(com.google.android.material.slider.Slider) LongDescriptionItem(net.osmand.plus.base.bottomsheetmenu.simpleitems.LongDescriptionItem) TitleItem(net.osmand.plus.base.bottomsheetmenu.simpleitems.TitleItem) SwitchPreferenceEx(net.osmand.plus.settings.preferences.SwitchPreferenceEx) OnConfirmPreferenceChange(net.osmand.plus.settings.fragments.OnConfirmPreferenceChange) View(android.view.View) TextView(android.widget.TextView) Fragment(androidx.fragment.app.Fragment) MetricsConstants(net.osmand.plus.settings.enums.MetricsConstants) SubtitmeListDividerItem(net.osmand.plus.base.bottomsheetmenu.simpleitems.SubtitmeListDividerItem) DividerSpaceItem(net.osmand.plus.base.bottomsheetmenu.simpleitems.DividerSpaceItem) BottomSheetItemWithCompoundButton(net.osmand.plus.base.bottomsheetmenu.BottomSheetItemWithCompoundButton)

Example 13 with Slider

use of com.google.android.material.slider.Slider in project Osmand by osmandapp.

the class AnnouncementTimeBottomSheet method createBottomSheetItem.

private BaseBottomSheetItem createBottomSheetItem() {
    View rootView = UiUtilities.getInflater(getContext(), nightMode).inflate(R.layout.bottom_sheet_announcement_time, null);
    tvSeekBarLabel = rootView.findViewById(R.id.tv_seek_bar_label);
    slider = rootView.findViewById(R.id.arrival_slider);
    ivArrow = rootView.findViewById(R.id.iv_arrow);
    tvIntervalsDescr = rootView.findViewById(R.id.tv_interval_descr);
    int appModeColor = getAppMode().getProfileColor(nightMode);
    slider.setValue(selectedEntryIndex);
    slider.setValueFrom(0);
    slider.setValueTo(listPreference.getEntries().length - 1);
    slider.setStepSize(1);
    slider.addOnChangeListener(new OnChangeListener() {

        @Override
        public void onValueChange(@NonNull Slider slider, float value, boolean fromUser) {
            int intValue = (int) value;
            if (intValue != selectedEntryIndex) {
                selectedEntryIndex = intValue;
                updateViews();
            }
        }
    });
    UiUtilities.setupSlider(slider, nightMode, appModeColor, true);
    rootView.findViewById(R.id.description_container).setOnClickListener(new OnClickListener() {

        @Override
        public void onClick(View v) {
            toggleDescriptionVisibility();
        }
    });
    return new Builder().setCustomView(rootView).create();
}
Also used : Slider(com.google.android.material.slider.Slider) Builder(net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem.Builder) OnClickListener(android.view.View.OnClickListener) OnChangeListener(com.google.android.material.slider.Slider.OnChangeListener) ImageView(android.widget.ImageView) View(android.view.View)

Example 14 with Slider

use of com.google.android.material.slider.Slider in project MaterialFBook by ZeeRooo.

the class SettingsFragment method onPreferenceClick.

@Override
public boolean onPreferenceClick(Preference preference) {
    switch(preference.getKey()) {
        case "notifications_settings":
            getFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.content_frame, new NotificationsSettingsFragment()).commit();
            return true;
        case "navigation_menu_settings":
            getFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.content_frame, new NavigationMenuFragment()).commit();
            return true;
        case "more_and_credits":
            getFragmentManager().beginTransaction().addToBackStack(null).replace(R.id.content_frame, new MoreAndCreditsFragment()).commit();
            return true;
        case "location_enabled":
            ActivityCompat.requestPermissions(getActivity(), new String[] { Manifest.permission.ACCESS_FINE_LOCATION }, 1);
            return true;
        case "save_data":
        case "notif":
            setScheduler();
            return true;
        case "color_picker":
            final AlertDialog mfbColorPickerDialog = new MFBDialog(getActivity()).create();
            final TextView previewTextView = new TextView(getActivity());
            previewTextView.setTextAppearance(getActivity(), R.style.MaterialAlertDialog_MaterialComponents_Title_Text);
            previewTextView.setTextSize(22.0f);
            previewTextView.setText(R.string.color_picker_title);
            previewTextView.setPadding(24, 21, 24, 21);
            previewTextView.setBackgroundColor(Color.BLACK);
            mfbColorPickerDialog.setCustomTitle(previewTextView);
            final View rootView = LayoutInflater.from(getActivity()).inflate(R.layout.dialog_color_picker, null);
            final EditText hexColorInput = rootView.findViewById(R.id.color_picker_hex);
            final Slider sliderRed = rootView.findViewById(R.id.color_picker_red_slider), sliderGreen = rootView.findViewById(R.id.color_picker_green_slider), sliderBlue = rootView.findViewById(R.id.color_picker_blue_slider);
            sliderRed.addOnChangeListener((slider, value, fromUser) -> {
                red = (int) value;
                setColor(previewTextView, hexColorInput);
            });
            sliderGreen.addOnChangeListener((slider, value, fromUser) -> {
                green = (int) value;
                setColor(previewTextView, hexColorInput);
            });
            sliderBlue.addOnChangeListener((slider, value, fromUser) -> {
                blue = (int) value;
                setColor(previewTextView, hexColorInput);
            });
            hexColorInput.setFilters(new InputFilter[] { new InputFilter.LengthFilter(6) });
            hexColorInput.setOnEditorActionListener((textView, i, keyEvent) -> {
                colorPrimary = Color.parseColor("#" + textView.getText().toString().replace("#", ""));
                previewTextView.setBackgroundColor(colorPrimary);
                red = Color.red(colorPrimary);
                green = Color.green(colorPrimary);
                blue = Color.blue(colorPrimary);
                sliderRed.setValue(red);
                sliderGreen.setValue(green);
                sliderBlue.setValue(blue);
                return true;
            });
            final SwitchMaterial switchMaterial = rootView.findViewById(R.id.color_picker_dark_mode);
            switchMaterial.setOnCheckedChangeListener((compoundButton, b) -> {
                switchMaterial.getThumbDrawable().setColorFilter(b ? MFB.colorAccent : Color.parseColor("#ECECEC"), PorterDuff.Mode.SRC_ATOP);
                switchMaterial.getTrackDrawable().setColorFilter(b ? MFB.colorPrimaryDark : Color.parseColor("#B9B9B9"), PorterDuff.Mode.SRC_ATOP);
            });
            mfbColorPickerDialog.setButton(DialogInterface.BUTTON_NEGATIVE, getString(android.R.string.cancel), (dialogInterface, i) -> mfbColorPickerDialog.dismiss());
            mfbColorPickerDialog.setButton(DialogInterface.BUTTON_POSITIVE, getString(android.R.string.ok), (dialogInterface, i) -> {
                mfbColorPickerDialog.dismiss();
                colorPrimary = Color.rgb(red, green, blue);
                int colorAccent;
                if (// it's too bright
                ColorUtils.calculateLuminance(colorPrimary) > 0.8 || (ColorUtils.calculateLuminance(MFB.colorPrimary) < 0.5 && switchMaterial.isChecked()))
                    colorAccent = Color.BLACK;
                else if (// it's too dark
                ColorUtils.calculateLuminance(colorPrimary) < 0.01 && switchMaterial.isChecked())
                    colorAccent = Color.WHITE;
                else
                    colorAccent = colorLighter(colorPrimary);
                mPreferences.edit().putInt("colorPrimary", colorPrimary).apply();
                mPreferences.edit().putInt("colorPrimaryDark", colorDarker(colorPrimary)).apply();
                mPreferences.edit().putInt("colorAccent", colorAccent).apply();
                mPreferences.edit().putBoolean("darkMode", switchMaterial.isChecked()).apply();
                getActivity().recreate();
            // CookingAToast.cooking(getActivity(), getString(R.string.required_restart), Color.WHITE, colorPrimary, R.drawable.ic_error, true).show();
            });
            mfbColorPickerDialog.setView(rootView);
            mfbColorPickerDialog.show();
            return true;
        default:
            return false;
    }
}
Also used : AlertDialog(androidx.appcompat.app.AlertDialog) EditText(android.widget.EditText) InputFilter(android.text.InputFilter) Slider(com.google.android.material.slider.Slider) View(android.view.View) TextView(android.widget.TextView) MFBDialog(me.zeeroooo.materialfb.ui.MFBDialog) SwitchMaterial(com.google.android.material.switchmaterial.SwitchMaterial) TextView(android.widget.TextView)

Aggregations

Slider (com.google.android.material.slider.Slider)14 TextView (android.widget.TextView)12 View (android.view.View)7 Context (android.content.Context)2 ImageView (android.widget.ImageView)2 AlertDialog (androidx.appcompat.app.AlertDialog)2 BaseBottomSheetItem (net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem)2 BottomSheetItemWithCompoundButton (net.osmand.plus.base.bottomsheetmenu.BottomSheetItemWithCompoundButton)2 DividerSpaceItem (net.osmand.plus.base.bottomsheetmenu.simpleitems.DividerSpaceItem)2 TitleItem (net.osmand.plus.base.bottomsheetmenu.simpleitems.TitleItem)2 ApplicationMode (net.osmand.plus.settings.backend.ApplicationMode)2 InputFilter (android.text.InputFilter)1 OnClickListener (android.view.View.OnClickListener)1 ViewGroup (android.view.ViewGroup)1 EditText (android.widget.EditText)1 LinearLayout (android.widget.LinearLayout)1 LayoutParams (android.widget.LinearLayout.LayoutParams)1 ContextThemeWrapper (androidx.appcompat.view.ContextThemeWrapper)1 AppCompatCheckBox (androidx.appcompat.widget.AppCompatCheckBox)1 Fragment (androidx.fragment.app.Fragment)1