Search in sources :

Example 1 with SubtitmeListDividerItem

use of net.osmand.plus.base.bottomsheetmenu.simpleitems.SubtitmeListDividerItem in project Osmand by osmandapp.

the class SendAnalyticsBottomSheetDialogFragment method createMenuItems.

@Override
public void createMenuItems(Bundle savedInstanceState) {
    OsmandApplication app = getMyApplication();
    Context context = getContext();
    if (context == null || app == null) {
        return;
    }
    final View titleView = View.inflate(new ContextThemeWrapper(context, themeRes), R.layout.make_better_title, null);
    final SimpleBottomSheetItem titleItem = (SimpleBottomSheetItem) new SimpleBottomSheetItem.Builder().setCustomView(titleView).create();
    items.add(titleItem);
    items.add(new SubtitleDividerItem(context));
    if (app.getSettings().SEND_ANONYMOUS_MAP_DOWNLOADS_DATA.isSet()) {
        sendAnonymousMapDownloadsData = app.getSettings().SEND_ANONYMOUS_MAP_DOWNLOADS_DATA.get();
    } else {
        sendAnonymousMapDownloadsData = true;
    }
    if (app.getSettings().SEND_ANONYMOUS_APP_USAGE_DATA.isSet()) {
        sendAnonymousAppUsageData = app.getSettings().SEND_ANONYMOUS_APP_USAGE_DATA.get();
    } else {
        sendAnonymousAppUsageData = true;
    }
    final BottomSheetItemWithCompoundButton[] downloadedMapsItem = new BottomSheetItemWithCompoundButton[1];
    downloadedMapsItem[0] = (BottomSheetItemWithCompoundButton) new BottomSheetItemWithCompoundButton.Builder().setChecked(sendAnonymousMapDownloadsData).setTitle(getString(R.string.downloaded_maps)).setLayoutId(R.layout.bottom_sheet_item_with_switch_no_icon).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            boolean checked = !downloadedMapsItem[0].isChecked();
            downloadedMapsItem[0].setChecked(checked);
            sendAnonymousMapDownloadsData = checked;
            updateBottomButtons();
        }
    }).setTag("downloaded_maps").create();
    items.add(downloadedMapsItem[0]);
    items.add(new LongDescriptionItem(getString(R.string.downloaded_maps_collect_descr)));
    items.add(new SubtitmeListDividerItem(context));
    final BottomSheetItemWithCompoundButton[] visitedScreensItem = new BottomSheetItemWithCompoundButton[1];
    visitedScreensItem[0] = (BottomSheetItemWithCompoundButton) new BottomSheetItemWithCompoundButton.Builder().setChecked(sendAnonymousAppUsageData).setTitle(getString(R.string.visited_screens)).setLayoutId(R.layout.bottom_sheet_item_with_switch_no_icon).setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            boolean checked = !visitedScreensItem[0].isChecked();
            visitedScreensItem[0].setChecked(checked);
            sendAnonymousAppUsageData = checked;
            updateBottomButtons();
        }
    }).setTag("visited_screens").create();
    items.add(visitedScreensItem[0]);
    items.add(new LongDescriptionItem(getString(R.string.visited_screens_collect_descr)));
    items.add(new DividerItem(context));
    String privacyPolicyText = getString(R.string.shared_string_privacy_policy);
    String text = getString(R.string.privacy_and_security_change_descr, privacyPolicyText);
    SpannableString spannable = new SpannableString(text);
    int start = text.indexOf(privacyPolicyText);
    int end = start + privacyPolicyText.length();
    spannable.setSpan(new URLSpan(OsmandApplication.OSMAND_PRIVACY_POLICY_URL) {

        @Override
        public void updateDrawState(@NonNull TextPaint ds) {
            super.updateDrawState(ds);
            ds.setUnderlineText(false);
        }
    }, start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    int linkTextColor = ContextCompat.getColor(context, !nightMode ? R.color.ctx_menu_bottom_view_url_color_light : R.color.ctx_menu_bottom_view_url_color_dark);
    spannable.setSpan(new ForegroundColorSpan(linkTextColor), start, end, Spannable.SPAN_EXCLUSIVE_EXCLUSIVE);
    LongDescriptionItem descriptionItem = new LongDescriptionItem(spannable);
    descriptionItem.setDescriptionLinksClickable(true);
    items.add(descriptionItem);
}
Also used : Context(android.content.Context) SimpleBottomSheetItem(net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem) OsmandApplication(net.osmand.plus.OsmandApplication) ForegroundColorSpan(android.text.style.ForegroundColorSpan) LongDescriptionItem(net.osmand.plus.base.bottomsheetmenu.simpleitems.LongDescriptionItem) SpannableString(android.text.SpannableString) URLSpan(android.text.style.URLSpan) View(android.view.View) TextPaint(android.text.TextPaint) SubtitleDividerItem(net.osmand.plus.base.bottomsheetmenu.simpleitems.SubtitleDividerItem) TextPaint(android.text.TextPaint) SpannableString(android.text.SpannableString) ContextThemeWrapper(android.view.ContextThemeWrapper) SubtitmeListDividerItem(net.osmand.plus.base.bottomsheetmenu.simpleitems.SubtitmeListDividerItem) SubtitmeListDividerItem(net.osmand.plus.base.bottomsheetmenu.simpleitems.SubtitmeListDividerItem) SubtitleDividerItem(net.osmand.plus.base.bottomsheetmenu.simpleitems.SubtitleDividerItem) DividerItem(net.osmand.plus.base.bottomsheetmenu.simpleitems.DividerItem) BottomSheetItemWithCompoundButton(net.osmand.plus.base.bottomsheetmenu.BottomSheetItemWithCompoundButton)

Example 2 with SubtitmeListDividerItem

use of net.osmand.plus.base.bottomsheetmenu.simpleitems.SubtitmeListDividerItem 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)

Aggregations

Context (android.content.Context)2 View (android.view.View)2 BottomSheetItemWithCompoundButton (net.osmand.plus.base.bottomsheetmenu.BottomSheetItemWithCompoundButton)2 LongDescriptionItem (net.osmand.plus.base.bottomsheetmenu.simpleitems.LongDescriptionItem)2 SubtitmeListDividerItem (net.osmand.plus.base.bottomsheetmenu.simpleitems.SubtitmeListDividerItem)2 SpannableString (android.text.SpannableString)1 TextPaint (android.text.TextPaint)1 ForegroundColorSpan (android.text.style.ForegroundColorSpan)1 URLSpan (android.text.style.URLSpan)1 ContextThemeWrapper (android.view.ContextThemeWrapper)1 TextView (android.widget.TextView)1 Fragment (androidx.fragment.app.Fragment)1 Slider (com.google.android.material.slider.Slider)1 OsmandApplication (net.osmand.plus.OsmandApplication)1 BaseBottomSheetItem (net.osmand.plus.base.bottomsheetmenu.BaseBottomSheetItem)1 SimpleBottomSheetItem (net.osmand.plus.base.bottomsheetmenu.SimpleBottomSheetItem)1 DividerItem (net.osmand.plus.base.bottomsheetmenu.simpleitems.DividerItem)1 DividerSpaceItem (net.osmand.plus.base.bottomsheetmenu.simpleitems.DividerSpaceItem)1 SubtitleDividerItem (net.osmand.plus.base.bottomsheetmenu.simpleitems.SubtitleDividerItem)1 TitleItem (net.osmand.plus.base.bottomsheetmenu.simpleitems.TitleItem)1