Search in sources :

Example 16 with MapActivity

use of net.osmand.plus.activities.MapActivity in project Osmand by osmandapp.

the class CoordinateInputDialogFragment method registerMainView.

private void registerMainView() {
    MapActivity mapActivity = getMapActivity();
    if (mapActivity == null) {
        return;
    }
    final Context ctx = getContext();
    if (orientationPortrait) {
        View.OnClickListener backspaceOnClickListener = new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                if (v.getId() == R.id.lat_backspace_btn) {
                    clearInputs(R.id.lat_first_input_et, R.id.lat_second_input_et, R.id.lat_third_input_et);
                } else {
                    clearInputs(R.id.lon_first_input_et, R.id.lon_second_input_et, R.id.lon_third_input_et);
                }
            }
        };
        ImageView latBackspaceBtn = (ImageView) mainView.findViewById(R.id.lat_backspace_btn);
        latBackspaceBtn.setImageDrawable(getActiveIcon(R.drawable.ic_action_clear_all_fields));
        latBackspaceBtn.setOnClickListener(backspaceOnClickListener);
        ImageView lonBackspaceBtn = (ImageView) mainView.findViewById(R.id.lon_backspace_btn);
        lonBackspaceBtn.setImageDrawable(getActiveIcon(R.drawable.ic_action_clear_all_fields));
        lonBackspaceBtn.setOnClickListener(backspaceOnClickListener);
        showHideKeyboardIcon = (ImageView) mainView.findViewById(R.id.show_hide_keyboard_icon);
    } else {
        boolean rightHand = getMyApplication().getSettings().COORDS_INPUT_USE_RIGHT_SIDE.get();
        LinearLayout handContainer = (LinearLayout) mainView.findViewById(R.id.hand_container);
        View dataAreaView = View.inflate(ctx, R.layout.coordinate_input_land_data_area, null);
        View keyboardAndListView = View.inflate(ctx, R.layout.coordinate_input_land_keyboard_and_list, null);
        setBackgroundColor(dataAreaView, lightTheme ? R.color.route_info_bg_light : R.color.route_info_bg_dark);
        setBackgroundColor(keyboardAndListView, lightTheme ? R.color.ctx_menu_info_view_bg_light : R.color.coordinate_input_markers_list_bg_dark);
        ((FrameLayout) handContainer.findViewById(R.id.left_container)).addView(rightHand ? dataAreaView : keyboardAndListView, 0);
        ((FrameLayout) handContainer.findViewById(R.id.right_container)).addView(rightHand ? keyboardAndListView : dataAreaView, 0);
        showHideKeyboardIcon = (ImageView) dataAreaView.findViewById(rightHand ? R.id.show_hide_keyboard_icon_right : R.id.show_hide_keyboard_icon_left);
        showHideKeyboardIcon.setVisibility(View.VISIBLE);
        dataAreaView.findViewById(rightHand ? R.id.show_hide_keyboard_icon_left : R.id.show_hide_keyboard_icon_right).setVisibility(View.GONE);
        handContainer.findViewById(R.id.input_area_top_padding).setVisibility(View.VISIBLE);
        handContainer.findViewById(R.id.point_name_top_space).setVisibility(View.VISIBLE);
        handContainer.findViewById(R.id.right_shadow).setVisibility(rightHand ? View.VISIBLE : View.GONE);
        handContainer.findViewById(R.id.left_shadow).setVisibility(rightHand ? View.GONE : View.VISIBLE);
        handContainer.findViewById(R.id.lat_backspace_btn).setVisibility(View.GONE);
        handContainer.findViewById(R.id.lon_backspace_btn).setVisibility(View.GONE);
        handContainer.findViewById(R.id.lat_end_padding).setVisibility(View.VISIBLE);
        handContainer.findViewById(R.id.lon_end_padding).setVisibility(View.VISIBLE);
    }
    registerInputs();
    setupSideOfTheWorldBtns(R.id.lat_side_of_the_world_btn, R.id.lon_side_of_the_world_btn);
    setBackgroundColor(R.id.point_name_divider, lightTheme ? R.color.route_info_divider_light : R.color.route_info_divider_dark);
    setBackgroundColor(R.id.point_name_et_container, lightTheme ? R.color.keyboard_item_control_light_bg : R.color.route_info_bottom_view_bg_dark);
    ImageView pointNameKeyboardBtn = (ImageView) mainView.findViewById(R.id.point_name_keyboard_btn);
    pointNameKeyboardBtn.setImageDrawable(getColoredIcon(R.drawable.ic_action_keyboard, R.color.icon_color));
    pointNameKeyboardBtn.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            if (isOsmandKeyboardCurrentlyVisible()) {
                changeOsmandKeyboardVisibility(false);
            }
            for (EditText et : editTexts) {
                if (et.getId() == R.id.point_name_et) {
                    et.requestFocus();
                }
            }
            final View focusedView = getDialog().getCurrentFocus();
            if (focusedView != null) {
                new Handler().postDelayed(new Runnable() {

                    @Override
                    public void run() {
                        isSoftKeyboardShown = true;
                        AndroidUtils.showSoftKeyboard(focusedView);
                        showHideKeyboardIcon.setImageDrawable(getActiveIcon(R.drawable.ic_action_keyboard_hide));
                    }
                }, 200);
            }
        }
    });
    adapter = new CoordinateInputAdapter(mapActivity, mapMarkers);
    RecyclerView recyclerView = (RecyclerView) mainView.findViewById(R.id.markers_recycler_view);
    recyclerView.setLayoutManager(new LinearLayoutManager(ctx));
    recyclerView.setAdapter(adapter);
    recyclerView.addOnScrollListener(new RecyclerView.OnScrollListener() {

        @Override
        public void onScrollStateChanged(RecyclerView recyclerView, int newState) {
            super.onScrollStateChanged(recyclerView, newState);
            compassUpdateAllowed = newState == RecyclerView.SCROLL_STATE_IDLE;
        }
    });
    setBackgroundColor(R.id.bottom_controls_container, lightTheme ? R.color.keyboard_item_control_light_bg : R.color.keyboard_item_control_dark_bg);
    TextView addButton = (TextView) mainView.findViewById(R.id.add_marker_button);
    addButton.setBackgroundResource(lightTheme ? R.drawable.route_info_go_btn_bg_light : R.drawable.route_info_go_btn_bg_dark);
    addButton.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            addMapMarker();
        }
    });
    mainView.findViewById(R.id.keyboard_layout).setBackgroundResource(lightTheme ? R.drawable.bg_bottom_menu_light : R.drawable.bg_coordinate_input_keyboard_dark);
    View keyboardView = mainView.findViewById(R.id.keyboard_view);
    int dividersColorResId = lightTheme ? R.color.keyboard_divider_light : R.color.keyboard_divider_dark;
    setBackgroundColor(keyboardView, dividersColorResId);
    setBackgroundColor(R.id.keyboard_divider, dividersColorResId);
    View.OnClickListener onClickListener = new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            if (isOsmandKeyboardOn()) {
                View focusedView = getDialog().getCurrentFocus();
                if (focusedView != null && focusedView instanceof EditText) {
                    EditText focusedEditText = (EditText) focusedView;
                    int id = v.getId();
                    switch(id) {
                        case R.id.keyboard_item_clear:
                            focusedEditText.setText("");
                            break;
                        case R.id.keyboard_item_backspace:
                            String str = focusedEditText.getText().toString();
                            if (str.length() > 0) {
                                str = str.substring(0, str.length() - 1);
                                focusedEditText.setText(str);
                                focusedEditText.setSelection(str.length());
                            } else {
                                switchEditText(focusedEditText.getId(), false);
                            }
                            break;
                        case R.id.keyboard_item_next_field:
                            switchEditText(focusedEditText.getId(), true);
                            break;
                        default:
                            focusedEditText.setText(focusedEditText.getText().toString() + getItemObjectById(id));
                            focusedEditText.setSelection(focusedEditText.getText().length());
                    }
                }
            }
        }
    };
    setupKeyboardItems(keyboardView, onClickListener, R.id.keyboard_item_0, R.id.keyboard_item_1, R.id.keyboard_item_2, R.id.keyboard_item_3, R.id.keyboard_item_4, R.id.keyboard_item_5, R.id.keyboard_item_6, R.id.keyboard_item_7, R.id.keyboard_item_8, R.id.keyboard_item_9, R.id.keyboard_item_clear, R.id.keyboard_item_next_field, R.id.keyboard_item_backspace);
    if (!isOsmandKeyboardOn() && isOsmandKeyboardCurrentlyVisible()) {
        changeOsmandKeyboardVisibility(false);
    }
    showHideKeyboardIcon.setImageDrawable(getActiveIcon(R.drawable.ic_action_keyboard_hide));
    showHideKeyboardIcon.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            boolean isCurrentlyVisible = isOsmandKeyboardCurrentlyVisible();
            if (isOsmandKeyboardOn() && !isSoftKeyboardShown) {
                changeOsmandKeyboardVisibility(!isCurrentlyVisible);
            } else {
                final View focusedView = getDialog().getCurrentFocus();
                if (focusedView != null) {
                    if (isSoftKeyboardShown) {
                        isSoftKeyboardShown = false;
                        AndroidUtils.hideSoftKeyboard(getActivity(), focusedView);
                        showHideKeyboardIcon.setImageDrawable(getActiveIcon(R.drawable.ic_action_keyboard_show));
                    } else {
                        new Handler().postDelayed(new Runnable() {

                            @Override
                            public void run() {
                                isSoftKeyboardShown = true;
                                AndroidUtils.showSoftKeyboard(focusedView);
                                showHideKeyboardIcon.setImageDrawable(getActiveIcon(R.drawable.ic_action_keyboard_hide));
                            }
                        }, 200);
                    }
                    changeEditTextSelections();
                }
            }
        }
    });
    mainView.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {

        @Override
        public void onGlobalLayout() {
            Rect r = new Rect();
            mainView.getWindowVisibleDisplayFrame(r);
            int screenHeight = mainView.getRootView().getHeight();
            int keypadHeight = screenHeight - r.bottom;
            if (keypadHeight > screenHeight * 0.15) {
                isSoftKeyboardShown = true;
                showHideKeyboardIcon.setImageDrawable(getActiveIcon(R.drawable.ic_action_keyboard_hide));
            } else {
                isSoftKeyboardShown = false;
            }
        }
    });
}
Also used : Context(android.content.Context) EditText(android.widget.EditText) Rect(android.graphics.Rect) Handler(android.os.Handler) LinearLayoutManager(android.support.v7.widget.LinearLayoutManager) ImageView(android.widget.ImageView) View(android.view.View) TextView(android.widget.TextView) RecyclerView(android.support.v7.widget.RecyclerView) FrameLayout(android.widget.FrameLayout) CoordinateInputAdapter(net.osmand.plus.mapmarkers.adapters.CoordinateInputAdapter) RecyclerView(android.support.v7.widget.RecyclerView) TextView(android.widget.TextView) ImageView(android.widget.ImageView) ViewTreeObserver(android.view.ViewTreeObserver) LinearLayout(android.widget.LinearLayout) MapActivity(net.osmand.plus.activities.MapActivity)

Example 17 with MapActivity

use of net.osmand.plus.activities.MapActivity in project Osmand by osmandapp.

the class MapillaryFiltersFragment method onCreateView.

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    final MapActivity mapActivity = (MapActivity) getActivity();
    final OsmandSettings settings = getSettings();
    final MapillaryPlugin plugin = OsmandPlugin.getPlugin(MapillaryPlugin.class);
    final boolean nightMode = getMyApplication().getDaynightHelper().isNightModeForMapControls();
    final int themeRes = nightMode ? R.style.OsmandDarkTheme : R.style.OsmandLightTheme;
    final int backgroundColor = ContextCompat.getColor(getActivity(), nightMode ? R.color.ctx_menu_info_view_bg_dark : R.color.ctx_menu_info_view_bg_light);
    final DateFormat dateFormat = SimpleDateFormat.getDateInstance(DateFormat.MEDIUM);
    final View view = View.inflate(new ContextThemeWrapper(getContext(), themeRes), R.layout.fragment_mapillary_filters, null);
    view.findViewById(R.id.mapillary_filters_linear_layout).setBackgroundColor(backgroundColor);
    final View toggleRow = view.findViewById(R.id.toggle_row);
    final boolean selected = settings.SHOW_MAPILLARY.get();
    final int toggleActionStringId = selected ? R.string.shared_string_enabled : R.string.shared_string_disabled;
    int toggleIconColorId;
    int toggleIconId;
    if (selected) {
        toggleIconId = R.drawable.ic_action_view;
        toggleIconColorId = nightMode ? R.color.color_dialog_buttons_dark : R.color.color_dialog_buttons_light;
    } else {
        toggleIconId = R.drawable.ic_action_hide;
        toggleIconColorId = nightMode ? 0 : R.color.icon_color;
    }
    ((AppCompatTextView) toggleRow.findViewById(R.id.toggle_row_title)).setText(toggleActionStringId);
    final Drawable drawable = getIcon(toggleIconId, toggleIconColorId);
    ((AppCompatImageView) toggleRow.findViewById(R.id.toggle_row_icon)).setImageDrawable(drawable);
    final CompoundButton toggle = (CompoundButton) toggleRow.findViewById(R.id.toggle_row_toggle);
    toggle.setOnCheckedChangeListener(null);
    toggle.setChecked(selected);
    toggle.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton compoundButton, boolean b) {
            settings.SHOW_MAPILLARY.set(!settings.SHOW_MAPILLARY.get());
            plugin.updateLayers(mapActivity.getMapView(), mapActivity);
            mapActivity.getDashboard().refreshContent(true);
        }
    });
    toggleRow.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            toggle.setChecked(!toggle.isChecked());
        }
    });
    final Button reloadTile = (Button) view.findViewById(R.id.button_reload_tile);
    reloadTile.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            ResourceManager manager = getMyApplication().getResourceManager();
            manager.clearCacheAndTiles(TileSourceManager.getMapillaryVectorSource());
            manager.clearCacheAndTiles(TileSourceManager.getMapillaryRasterSource());
            mapActivity.refreshMap();
        }
    });
    final int colorRes = nightMode ? R.color.color_white : R.color.icon_color;
    ((AppCompatImageView) view.findViewById(R.id.mapillary_filters_user_icon)).setImageDrawable(getIcon(R.drawable.ic_action_user, colorRes));
    ((AppCompatImageView) view.findViewById(R.id.mapillary_filters_date_icon)).setImageDrawable(getIcon(R.drawable.ic_action_data, colorRes));
    ((AppCompatImageView) view.findViewById(R.id.mapillary_filters_tile_cache_icon)).setImageDrawable(getIcon(R.drawable.ic_layer_top_dark, colorRes));
    final DelayAutoCompleteTextView textView = (DelayAutoCompleteTextView) view.findViewById(R.id.auto_complete_text_view);
    textView.setAdapter(new MapillaryAutoCompleteAdapter(getContext(), R.layout.auto_complete_suggestion, getMyApplication()));
    String selectedUsername = settings.MAPILLARY_FILTER_USERNAME.get();
    if (!selectedUsername.equals("") && settings.USE_MAPILLARY_FILTER.get()) {
        textView.setText(selectedUsername);
        textView.setSelection(selectedUsername.length());
    }
    textView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

        @Override
        public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {
            hideKeyboard();
            mapActivity.getDashboard().refreshContent(true);
        }
    });
    textView.setOnEditorActionListener(new TextView.OnEditorActionListener() {

        @Override
        public boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) {
            if (id == EditorInfo.IME_ACTION_DONE) {
                hideKeyboard();
                mapActivity.getDashboard().refreshContent(true);
                return true;
            }
            return false;
        }
    });
    textView.addTextChangedListener(new TextWatcher() {

        @Override
        public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {
        }

        @Override
        public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {
            view.findViewById(R.id.warning_linear_layout).setVisibility(View.GONE);
            if (!settings.MAPILLARY_FILTER_USERNAME.get().equals("") || settings.MAPILLARY_FILTER_TO_DATE.get() != 0 || settings.MAPILLARY_FILTER_FROM_DATE.get() != 0) {
                changeButtonState((Button) view.findViewById(R.id.button_apply), 1, true);
            } else {
                changeButtonState((Button) view.findViewById(R.id.button_apply), .5f, false);
            }
        }

        @Override
        public void afterTextChanged(Editable editable) {
        }
    });
    ImageView imageView = (ImageView) view.findViewById(R.id.warning_image_view);
    imageView.setImageDrawable(getPaintedContentIcon(R.drawable.ic_small_warning, getResources().getColor(R.color.color_warning)));
    final EditText dateFromEt = (EditText) view.findViewById(R.id.date_from_edit_text);
    final DatePickerDialog.OnDateSetListener dateFromDialog = new DatePickerDialog.OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker v, int year, int monthOfYear, int dayOfMonth) {
            Calendar from = Calendar.getInstance();
            from.set(Calendar.YEAR, year);
            from.set(Calendar.MONTH, monthOfYear);
            from.set(Calendar.DAY_OF_MONTH, dayOfMonth);
            dateFromEt.setText(dateFormat.format(from.getTime()));
            settings.MAPILLARY_FILTER_FROM_DATE.set(from.getTimeInMillis());
            changeButtonState((Button) view.findViewById(R.id.button_apply), 1, true);
            mapActivity.getDashboard().refreshContent(true);
        }
    };
    dateFromEt.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            Calendar now = Calendar.getInstance();
            new DatePickerDialog(mapActivity, dateFromDialog, now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH)).show();
        }
    });
    dateFromEt.setCompoundDrawablesWithIntrinsicBounds(null, null, getContentIcon(R.drawable.ic_action_arrow_drop_down), null);
    final EditText dateToEt = (EditText) view.findViewById(R.id.date_to_edit_text);
    final DatePickerDialog.OnDateSetListener dateToDialog = new DatePickerDialog.OnDateSetListener() {

        @Override
        public void onDateSet(DatePicker v, int year, int monthOfYear, int dayOfMonth) {
            Calendar to = Calendar.getInstance();
            to.set(Calendar.YEAR, year);
            to.set(Calendar.MONTH, monthOfYear);
            to.set(Calendar.DAY_OF_MONTH, dayOfMonth);
            dateToEt.setText(dateFormat.format(to.getTime()));
            settings.MAPILLARY_FILTER_TO_DATE.set(to.getTimeInMillis());
            changeButtonState((Button) view.findViewById(R.id.button_apply), 1, true);
            mapActivity.getDashboard().refreshContent(true);
        }
    };
    dateToEt.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            Calendar now = Calendar.getInstance();
            new DatePickerDialog(mapActivity, dateToDialog, now.get(Calendar.YEAR), now.get(Calendar.MONTH), now.get(Calendar.DAY_OF_MONTH)).show();
        }
    });
    dateToEt.setCompoundDrawablesWithIntrinsicBounds(null, null, getContentIcon(R.drawable.ic_action_arrow_drop_down), null);
    if (settings.USE_MAPILLARY_FILTER.get()) {
        long to = settings.MAPILLARY_FILTER_TO_DATE.get();
        if (to != 0) {
            dateToEt.setText(dateFormat.format(new Date(to)));
        }
        long from = settings.MAPILLARY_FILTER_FROM_DATE.get();
        if (from != 0) {
            dateFromEt.setText(dateFormat.format(new Date(from)));
        }
    }
    final Button apply = (Button) view.findViewById(R.id.button_apply);
    changeButtonState(apply, .5f, false);
    apply.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View v) {
            String username = textView.getText().toString();
            String dateFrom = dateFromEt.getText().toString();
            String dateTo = dateToEt.getText().toString();
            if (!settings.MAPILLARY_FILTER_USERNAME.get().equals("") || !dateFrom.equals("") || !dateTo.equals("")) {
                settings.USE_MAPILLARY_FILTER.set(true);
            }
            if (dateFrom.equals("")) {
                settings.MAPILLARY_FILTER_FROM_DATE.set(0L);
            }
            if (dateTo.equals("")) {
                settings.MAPILLARY_FILTER_TO_DATE.set(0L);
            }
            if (!username.equals("") && settings.MAPILLARY_FILTER_USERNAME.get().equals("")) {
                view.findViewById(R.id.warning_linear_layout).setVisibility(View.VISIBLE);
            } else {
                mapActivity.getDashboard().hideDashboard();
            }
            changeButtonState(apply, .5f, false);
            plugin.updateLayers(mapActivity.getMapView(), mapActivity);
            hideKeyboard();
        }
    });
    final Button clear = (Button) view.findViewById(R.id.button_clear);
    clear.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View view) {
            textView.setText("");
            dateFromEt.setText("");
            dateToEt.setText("");
            settings.USE_MAPILLARY_FILTER.set(false);
            settings.MAPILLARY_FILTER_USER_KEY.set("");
            settings.MAPILLARY_FILTER_USERNAME.set("");
            settings.MAPILLARY_FILTER_FROM_DATE.set(0L);
            settings.MAPILLARY_FILTER_TO_DATE.set(0L);
            plugin.updateLayers(mapActivity.getMapView(), mapActivity);
            hideKeyboard();
        }
    });
    return view;
}
Also used : DelayAutoCompleteTextView(net.osmand.plus.views.controls.DelayAutoCompleteTextView) KeyEvent(android.view.KeyEvent) Button(android.widget.Button) CompoundButton(android.widget.CompoundButton) TextWatcher(android.text.TextWatcher) Editable(android.text.Editable) AppCompatTextView(android.support.v7.widget.AppCompatTextView) TextView(android.widget.TextView) DelayAutoCompleteTextView(net.osmand.plus.views.controls.DelayAutoCompleteTextView) ImageView(android.widget.ImageView) AppCompatImageView(android.support.v7.widget.AppCompatImageView) MapActivity(net.osmand.plus.activities.MapActivity) EditText(android.widget.EditText) DatePickerDialog(android.app.DatePickerDialog) Calendar(java.util.Calendar) AppCompatTextView(android.support.v7.widget.AppCompatTextView) Drawable(android.graphics.drawable.Drawable) ResourceManager(net.osmand.plus.resources.ResourceManager) ImageView(android.widget.ImageView) View(android.view.View) AdapterView(android.widget.AdapterView) AppCompatImageView(android.support.v7.widget.AppCompatImageView) AppCompatTextView(android.support.v7.widget.AppCompatTextView) TextView(android.widget.TextView) DelayAutoCompleteTextView(net.osmand.plus.views.controls.DelayAutoCompleteTextView) AppCompatImageView(android.support.v7.widget.AppCompatImageView) OsmandSettings(net.osmand.plus.OsmandSettings) Date(java.util.Date) ContextThemeWrapper(android.view.ContextThemeWrapper) SimpleDateFormat(java.text.SimpleDateFormat) DateFormat(java.text.DateFormat) AdapterView(android.widget.AdapterView) DatePicker(android.widget.DatePicker) CompoundButton(android.widget.CompoundButton)

Example 18 with MapActivity

use of net.osmand.plus.activities.MapActivity in project Osmand by osmandapp.

the class PlanRouteFragment method selectAllOnClick.

private void selectAllOnClick() {
    boolean adjustMap = false;
    int activeMarkersCount = markersHelper.getMapMarkers().size();
    if (selectedCount == activeMarkersCount && markersHelper.isStartFromMyLocation()) {
        markersHelper.deselectAllActiveMarkers();
        markersHelper.setStartFromMyLocation(false);
        selectedCount = 0;
    } else {
        markersHelper.selectAllActiveMarkers();
        markersHelper.setStartFromMyLocation(true);
        selectedCount = activeMarkersCount;
        adjustMap = true;
    }
    adapter.reloadData();
    adapter.notifyDataSetChanged();
    planRouteContext.recreateSnapTrkSegment(adjustMap);
    MapActivity mapActivity = getMapActivity();
    if (mapActivity != null) {
        mapActivity.refreshMap();
    }
}
Also used : TargetPoint(net.osmand.plus.TargetPointsHelper.TargetPoint) MapActivity(net.osmand.plus.activities.MapActivity)

Example 19 with MapActivity

use of net.osmand.plus.activities.MapActivity in project Osmand by osmandapp.

the class PlanRouteFragment method createOptionsFragmentListener.

private PlanRouteOptionsFragmentListener createOptionsFragmentListener() {
    return new PlanRouteOptionsFragmentListener() {

        private MapActivity mapActivity = getMapActivity();

        @Override
        public void selectOnClick() {
            selectAllOnClick();
        }

        @Override
        public void navigateOnClick() {
            if (mapActivity != null) {
                boolean hasTargets = false;
                TargetPointsHelper targetPointsHelper = mapActivity.getMyApplication().getTargetPointsHelper();
                List<MapMarker> markers = markersHelper.getSelectedMarkers();
                if (markers.size() > 0) {
                    int i = 0;
                    if (markersHelper.isStartFromMyLocation()) {
                        targetPointsHelper.clearStartPoint(false);
                    } else {
                        MapMarker m = markers.get(i++);
                        targetPointsHelper.setStartPoint(new LatLon(m.getLatitude(), m.getLongitude()), false, m.getPointDescription(mapActivity));
                    }
                    List<TargetPoint> targetPoints = new ArrayList<>();
                    for (int k = i; k < markers.size(); k++) {
                        MapMarker m = markers.get(k);
                        TargetPoint t = new TargetPoint(new LatLon(m.getLatitude(), m.getLongitude()), m.getPointDescription(mapActivity));
                        targetPoints.add(t);
                    }
                    if (mapActivity.getMyApplication().getSettings().ROUTE_MAP_MARKERS_ROUND_TRIP.get()) {
                        TargetPoint end = targetPointsHelper.getPointToStart();
                        if (end == null) {
                            Location loc = mapActivity.getMyApplication().getLocationProvider().getLastKnownLocation();
                            if (loc != null) {
                                end = TargetPoint.createStartPoint(new LatLon(loc.getLatitude(), loc.getLongitude()), new PointDescription(PointDescription.POINT_TYPE_MY_LOCATION, getString(R.string.shared_string_my_location)));
                            }
                        }
                        if (end != null) {
                            targetPoints.add(end);
                        }
                    }
                    RoutingHelper routingHelper = mapActivity.getRoutingHelper();
                    boolean updateRoute = routingHelper.isFollowingMode() || routingHelper.isRoutePlanningMode();
                    targetPointsHelper.reorderAllTargetPoints(targetPoints, updateRoute);
                    hasTargets = true;
                } else {
                    targetPointsHelper.clearStartPoint(false);
                    targetPointsHelper.clearPointToNavigate(false);
                }
                planRouteContext.setNavigationFromMarkers(true);
                dismiss();
                mapActivity.getMapLayers().getMapControlsLayer().doRoute(hasTargets);
            }
        }

        @Override
        public void makeRoundTripOnClick() {
            roundTripOnClick();
        }

        @Override
        public void doorToDoorOnClick() {
            if (mapActivity != null) {
                OsmandApplication app = mapActivity.getMyApplication();
                Location myLoc = app.getLocationProvider().getLastStaleKnownLocation();
                boolean startFromLocation = app.getMapMarkersHelper().isStartFromMyLocation() && myLoc != null;
                if (selectedCount > (startFromLocation ? 0 : 1)) {
                    sortSelectedMarkersDoorToDoor(mapActivity, startFromLocation, myLoc);
                }
            }
        }

        @Override
        public void reverseOrderOnClick() {
            if (mapActivity != null) {
                markersHelper.reverseActiveMarkersOrder();
                adapter.reloadData();
                adapter.notifyDataSetChanged();
                planRouteContext.recreateSnapTrkSegment(false);
            }
        }
    };
}
Also used : MapMarker(net.osmand.plus.MapMarkersHelper.MapMarker) OsmandApplication(net.osmand.plus.OsmandApplication) ArrayList(java.util.ArrayList) RoutingHelper(net.osmand.plus.routing.RoutingHelper) TargetPoint(net.osmand.plus.TargetPointsHelper.TargetPoint) TargetPoint(net.osmand.plus.TargetPointsHelper.TargetPoint) LatLon(net.osmand.data.LatLon) PlanRouteOptionsFragmentListener(net.osmand.plus.mapmarkers.PlanRouteOptionsBottomSheetDialogFragment.PlanRouteOptionsFragmentListener) PointDescription(net.osmand.data.PointDescription) TargetPointsHelper(net.osmand.plus.TargetPointsHelper) MapActivity(net.osmand.plus.activities.MapActivity) Location(net.osmand.Location)

Example 20 with MapActivity

use of net.osmand.plus.activities.MapActivity in project Osmand by osmandapp.

the class PlanRouteFragment method showRouteOnMap.

private void showRouteOnMap(List<WptPt> points) {
    MapActivity mapActivity = getMapActivity();
    if (points.size() > 0 && mapActivity != null) {
        OsmandMapTileView mapView = mapActivity.getMapView();
        double left = 0, right = 0;
        double top = 0, bottom = 0;
        Location myLocation = mapActivity.getMyApplication().getLocationProvider().getLastStaleKnownLocation();
        if (mapActivity.getMyApplication().getMapMarkersHelper().isStartFromMyLocation() && myLocation != null) {
            left = myLocation.getLongitude();
            right = myLocation.getLongitude();
            top = myLocation.getLatitude();
            bottom = myLocation.getLatitude();
        }
        for (WptPt pt : points) {
            if (left == 0) {
                left = pt.getLongitude();
                right = pt.getLongitude();
                top = pt.getLatitude();
                bottom = pt.getLatitude();
            } else {
                left = Math.min(left, pt.getLongitude());
                right = Math.max(right, pt.getLongitude());
                top = Math.max(top, pt.getLatitude());
                bottom = Math.min(bottom, pt.getLatitude());
            }
        }
        RotatedTileBox tb = mapView.getCurrentRotatedTileBox().copy();
        int tileBoxWidthPx = 0;
        int tileBoxHeightPx = 0;
        if (portrait) {
            tileBoxHeightPx = 3 * (tb.getPixHeight() - toolbarHeight) / 4;
        } else {
            tileBoxWidthPx = tb.getPixWidth() - mapActivity.getResources().getDimensionPixelSize(R.dimen.dashboard_land_width);
        }
        mapView.fitRectToMap(left, right, top, bottom, tileBoxWidthPx, tileBoxHeightPx, toolbarHeight * 3 / 2);
    }
}
Also used : WptPt(net.osmand.plus.GPXUtilities.WptPt) RotatedTileBox(net.osmand.data.RotatedTileBox) OsmandMapTileView(net.osmand.plus.views.OsmandMapTileView) TargetPoint(net.osmand.plus.TargetPointsHelper.TargetPoint) MapActivity(net.osmand.plus.activities.MapActivity) Location(net.osmand.Location)

Aggregations

MapActivity (net.osmand.plus.activities.MapActivity)85 View (android.view.View)39 ImageView (android.widget.ImageView)28 TextView (android.widget.TextView)28 RecyclerView (android.support.v7.widget.RecyclerView)15 OsmandMapTileView (net.osmand.plus.views.OsmandMapTileView)14 AlertDialog (android.support.v7.app.AlertDialog)12 Nullable (android.support.annotation.Nullable)11 DialogInterface (android.content.DialogInterface)10 AdapterView (android.widget.AdapterView)9 LatLon (net.osmand.data.LatLon)9 OsmandApplication (net.osmand.plus.OsmandApplication)9 Bundle (android.os.Bundle)7 Button (android.widget.Button)7 EditText (android.widget.EditText)7 ImageButton (android.widget.ImageButton)7 FavouritePoint (net.osmand.data.FavouritePoint)7 Fragment (android.support.v4.app.Fragment)6 LinearLayoutManager (android.support.v7.widget.LinearLayoutManager)6 ViewTreeObserver (android.view.ViewTreeObserver)6