Search in sources :

Example 1 with LocalRoutingParameterGroup

use of net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.LocalRoutingParameterGroup in project Osmand by osmandapp.

the class RoutePreferencesMenu method getItemClickListener.

public OnItemClickListener getItemClickListener(final ArrayAdapter<?> listAdapter) {
    return new OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int item, long l) {
            Object obj = listAdapter.getItem(item);
            if (obj instanceof LocalRoutingParameterGroup) {
                final LocalRoutingParameterGroup group = (LocalRoutingParameterGroup) obj;
                final ContextMenuAdapter adapter = new ContextMenuAdapter(app);
                int i = 0;
                int selectedIndex = -1;
                for (LocalRoutingParameter p : group.getRoutingParameters()) {
                    adapter.addItem(ContextMenuItem.createBuilder(p.getText(mapActivity)).setSelected(false).createItem());
                    if (p.isSelected(settings)) {
                        selectedIndex = i;
                    }
                    i++;
                }
                if (selectedIndex == -1) {
                    selectedIndex = 0;
                }
                AlertDialog.Builder builder = new AlertDialog.Builder(mapActivity);
                final int layout = R.layout.list_menu_item_native_singlechoice;
                final ArrayAdapter<String> listAdapter = new ArrayAdapter<String>(mapActivity, layout, R.id.text1, adapter.getItemNames()) {

                    @NonNull
                    @Override
                    public View getView(final int position, View convertView, ViewGroup parent) {
                        // User super class to create the View
                        View v = convertView;
                        if (v == null) {
                            v = mapActivity.getLayoutInflater().inflate(layout, null);
                        }
                        final ContextMenuItem item = adapter.getItem(position);
                        TextView tv = (TextView) v.findViewById(R.id.text1);
                        tv.setText(item.getTitle());
                        tv.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16f);
                        return v;
                    }
                };
                final int[] selectedPosition = { selectedIndex };
                builder.setSingleChoiceItems(listAdapter, selectedIndex, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int position) {
                        selectedPosition[0] = position;
                    }
                });
                builder.setTitle(group.getText(mapActivity)).setPositiveButton(R.string.shared_string_ok, new DialogInterface.OnClickListener() {

                    @Override
                    public void onClick(DialogInterface dialog, int which) {
                        int position = selectedPosition[0];
                        if (position >= 0 && position < group.getRoutingParameters().size()) {
                            for (int i = 0; i < group.getRoutingParameters().size(); i++) {
                                LocalRoutingParameter rp = group.getRoutingParameters().get(i);
                                rp.setSelected(settings, i == position);
                            }
                            mapActivity.getRoutingHelper().onSettingsChanged(true);
                            updateParameters();
                        }
                    }
                }).setNegativeButton(R.string.shared_string_cancel, null);
                builder.create().show();
            } else if (obj instanceof MuteSoundRoutingParameter) {
                final CompoundButton btn = (CompoundButton) view.findViewById(R.id.toggle_item);
                btn.performClick();
            } else if (obj instanceof VoiceGuidanceRoutingParameter) {
                doSelectVoiceGuidance();
            } else if (obj instanceof InterruptMusicRoutingParameter) {
                final CompoundButton btn = (CompoundButton) view.findViewById(R.id.toggle_item);
                btn.performClick();
            } else if (obj instanceof AvoidRoadsRoutingParameter) {
                routingOptionsHelper.selectRestrictedRoads(mapActivity);
            } else if (obj instanceof GpxLocalRoutingParameter) {
                showOptionsMenu((TextView) view.findViewById(R.id.description));
            } else {
                CheckBox ch = (CheckBox) view.findViewById(R.id.toggle_item);
                if (ch != null) {
                    ch.setChecked(!ch.isChecked());
                }
            }
        }
    };
}
Also used : AlertDialog(androidx.appcompat.app.AlertDialog) DialogInterface(android.content.DialogInterface) GPXRouteParamsBuilder(net.osmand.plus.routing.GPXRouteParams.GPXRouteParamsBuilder) InterruptMusicRoutingParameter(net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.InterruptMusicRoutingParameter) GpxLocalRoutingParameter(net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.GpxLocalRoutingParameter) LocalRoutingParameter(net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.LocalRoutingParameter) AvoidRoadsRoutingParameter(net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.AvoidRoadsRoutingParameter) GpxLocalRoutingParameter(net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.GpxLocalRoutingParameter) TextView(android.widget.TextView) VoiceGuidanceRoutingParameter(net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.VoiceGuidanceRoutingParameter) OnItemClickListener(android.widget.AdapterView.OnItemClickListener) ContextMenuItem(net.osmand.plus.ContextMenuItem) MuteSoundRoutingParameter(net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.MuteSoundRoutingParameter) ViewGroup(android.view.ViewGroup) ImageView(android.widget.ImageView) View(android.view.View) AdapterView(android.widget.AdapterView) TextView(android.widget.TextView) ContextMenuAdapter(net.osmand.plus.ContextMenuAdapter) CheckBox(android.widget.CheckBox) AdapterView(android.widget.AdapterView) CallbackWithObject(net.osmand.CallbackWithObject) LocalRoutingParameterGroup(net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.LocalRoutingParameterGroup) ArrayAdapter(android.widget.ArrayAdapter) CompoundButton(android.widget.CompoundButton)

Example 2 with LocalRoutingParameterGroup

use of net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.LocalRoutingParameterGroup in project Osmand by osmandapp.

the class MapRouteInfoMenu method createLocalRoutingParameterGroupButton.

private void createLocalRoutingParameterGroupButton(MapActivity mapActivity, final LocalRoutingParameter parameter, LinearLayout optionsContainer) {
    final OsmandSettings settings = mapActivity.getMyApplication().getSettings();
    final LocalRoutingParameterGroup group = (LocalRoutingParameterGroup) parameter;
    String text = null;
    LocalRoutingParameter selected = group.getSelected(settings);
    if (selected != null) {
        text = group.getText(mapActivity);
    }
    View item = createToolbarOptionView(false, text, parameter.getActiveIconId(), parameter.getDisabledIconId(), v -> {
        MapActivity mapActv = getMapActivity();
        if (mapActv != null) {
            mapActv.getMyApplication().getRoutingOptionsHelper().showLocalRoutingParameterGroupDialog(group, mapActv, this::updateOptionsButtons);
        }
    });
    if (item != null) {
        optionsContainer.addView(item, getContainerButtonLayoutParams(mapActivity, true));
    }
}
Also used : LocalRoutingParameterGroup(net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.LocalRoutingParameterGroup) ImageView(android.widget.ImageView) HorizontalScrollView(android.widget.HorizontalScrollView) OsmandMapTileView(net.osmand.plus.views.OsmandMapTileView) AppCompatImageView(androidx.appcompat.widget.AppCompatImageView) View(android.view.View) TextView(android.widget.TextView) OsmandSettings(net.osmand.plus.settings.backend.OsmandSettings) OtherLocalRoutingParameter(net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.OtherLocalRoutingParameter) LocalRoutingParameter(net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.LocalRoutingParameter) MapActivity(net.osmand.plus.activities.MapActivity)

Example 3 with LocalRoutingParameterGroup

use of net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.LocalRoutingParameterGroup in project Osmand by osmandapp.

the class RouteOptionsBottomSheet method inflateRoutingParameter.

private void inflateRoutingParameter(final LocalRoutingParameter parameter) {
    if (parameter != null) {
        final BottomSheetItemWithCompoundButton[] item = new BottomSheetItemWithCompoundButton[1];
        BottomSheetItemWithCompoundButton.Builder builder = new BottomSheetItemWithCompoundButton.Builder();
        builder.setCompoundButtonColor(selectedModeColor);
        int iconId = -1;
        if (parameter.routingParameter != null || parameter instanceof RoutingOptionsHelper.OtherLocalRoutingParameter) {
            builder.setTitle(parameter.getText(mapActivity));
            iconId = parameter.isSelected(settings) ? parameter.getActiveIconId() : parameter.getDisabledIconId();
        }
        if (parameter instanceof LocalRoutingParameterGroup) {
            final LocalRoutingParameterGroup group = (LocalRoutingParameterGroup) parameter;
            LocalRoutingParameter selected = group.getSelected(settings);
            iconId = selected != null ? parameter.getActiveIconId() : parameter.getDisabledIconId();
            if (selected != null) {
                builder.setTitle(group.getText(mapActivity));
                builder.setDescription(selected.getText(mapActivity));
            }
            builder.setLayoutId(R.layout.bottom_sheet_item_with_descr_56dp);
            builder.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    routingOptionsHelper.addNewRouteMenuParameter(applicationMode, parameter);
                    routingOptionsHelper.showLocalRoutingParameterGroupDialog(group, mapActivity, new RoutingOptionsHelper.OnClickListener() {

                        @Override
                        public void onClick() {
                            LocalRoutingParameter selected = group.getSelected(settings);
                            if (selected != null) {
                                item[0].setDescription(selected.getText(mapActivity));
                            }
                            updateMenu();
                        }
                    });
                }
            });
        } else {
            builder.setLayoutId(R.layout.bottom_sheet_item_with_switch_56dp);
            if (parameter.routingParameter != null && parameter.routingParameter.getId().equals(GeneralRouter.USE_SHORTEST_WAY)) {
                // if short route settings - it should be inverse of fast_route_mode
                builder.setChecked(!settings.FAST_ROUTE_MODE.getModeValue(applicationMode));
            } else {
                builder.setChecked(parameter.isSelected(settings));
            }
            builder.setOnClickListener(new View.OnClickListener() {

                @Override
                public void onClick(View v) {
                    applyParameter(item[0], parameter);
                }
            });
        }
        if (iconId != -1) {
            builder.setIcon(getContentIcon(iconId));
        }
        item[0] = builder.create();
        items.add(item[0]);
    }
}
Also used : GPXRouteParamsBuilder(net.osmand.plus.routing.GPXRouteParams.GPXRouteParamsBuilder) ImageView(android.widget.ImageView) View(android.view.View) TextView(android.widget.TextView) GpxLocalRoutingParameter(net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.GpxLocalRoutingParameter) LocalRoutingParameter(net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.LocalRoutingParameter) LocalRoutingParameterGroup(net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.LocalRoutingParameterGroup) BottomSheetItemWithCompoundButton(net.osmand.plus.base.bottomsheetmenu.BottomSheetItemWithCompoundButton)

Aggregations

View (android.view.View)3 ImageView (android.widget.ImageView)3 TextView (android.widget.TextView)3 LocalRoutingParameter (net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.LocalRoutingParameter)3 LocalRoutingParameterGroup (net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.LocalRoutingParameterGroup)3 GpxLocalRoutingParameter (net.osmand.plus.routepreparationmenu.RoutingOptionsHelper.GpxLocalRoutingParameter)2 GPXRouteParamsBuilder (net.osmand.plus.routing.GPXRouteParams.GPXRouteParamsBuilder)2 DialogInterface (android.content.DialogInterface)1 ViewGroup (android.view.ViewGroup)1 AdapterView (android.widget.AdapterView)1 OnItemClickListener (android.widget.AdapterView.OnItemClickListener)1 ArrayAdapter (android.widget.ArrayAdapter)1 CheckBox (android.widget.CheckBox)1 CompoundButton (android.widget.CompoundButton)1 HorizontalScrollView (android.widget.HorizontalScrollView)1 AlertDialog (androidx.appcompat.app.AlertDialog)1 AppCompatImageView (androidx.appcompat.widget.AppCompatImageView)1 CallbackWithObject (net.osmand.CallbackWithObject)1 ContextMenuAdapter (net.osmand.plus.ContextMenuAdapter)1 ContextMenuItem (net.osmand.plus.ContextMenuItem)1