diff --git a/android/app/src/main/cpp/app/organicmaps/Framework.cpp b/android/app/src/main/cpp/app/organicmaps/Framework.cpp index 29767328d..01f16ffd3 100644 --- a/android/app/src/main/cpp/app/organicmaps/Framework.cpp +++ b/android/app/src/main/cpp/app/organicmaps/Framework.cpp @@ -1143,6 +1143,12 @@ Java_app_organicmaps_Framework_nativeShowTrackRect(JNIEnv * env, jclass, jlong t frm()->ShowTrack(static_cast(track)); } +JNIEXPORT void JNICALL +Java_app_organicmaps_Framework_nativeSaveRoute(JNIEnv *, jclass) +{ + frm()->SaveRoute(); +} + JNIEXPORT jstring JNICALL Java_app_organicmaps_Framework_nativeGetBookmarkDir(JNIEnv * env, jclass) { diff --git a/android/app/src/main/java/app/organicmaps/Framework.java b/android/app/src/main/java/app/organicmaps/Framework.java index c3802b7a6..9d98ab611 100644 --- a/android/app/src/main/java/app/organicmaps/Framework.java +++ b/android/app/src/main/java/app/organicmaps/Framework.java @@ -356,4 +356,6 @@ public class Framework public static native void nativeDidCloseProductsPopup(String reason); public static native void nativeDidSelectProduct(String title, String link); + + public static native void nativeSaveRoute(); } diff --git a/android/app/src/main/java/app/organicmaps/routing/RoutingBottomMenuController.java b/android/app/src/main/java/app/organicmaps/routing/RoutingBottomMenuController.java index b1791971d..93a304c6a 100644 --- a/android/app/src/main/java/app/organicmaps/routing/RoutingBottomMenuController.java +++ b/android/app/src/main/java/app/organicmaps/routing/RoutingBottomMenuController.java @@ -90,7 +90,7 @@ final class RoutingBottomMenuController implements View.OnClickListener @NonNull static RoutingBottomMenuController newInstance(@NonNull Activity activity, @NonNull View frame, - @Nullable RoutingBottomMenuListener listener) + @NonNull RoutingBottomMenuListener listener) { View altitudeChartFrame = getViewById(activity, frame, R.id.altitude_chart_panel); View timeElevationLine = getViewById(activity, frame, R.id.time_elevation_line); @@ -158,6 +158,9 @@ final class RoutingBottomMenuController implements View.OnClickListener res.getDimensionPixelSize(R.dimen.margin_half)); Button manageRouteButton = altitudeChartFrame.findViewById(R.id.btn__manage_route); manageRouteButton.setOnClickListener(this); + + Button saveButton = altitudeChartFrame.findViewById(R.id.btn__save); + saveButton.setOnClickListener(this); } void showAltitudeChartAndRoutingDetails() @@ -168,6 +171,9 @@ final class RoutingBottomMenuController implements View.OnClickListener showRouteAltitudeChart(); showRoutingDetails(); UiUtils.show(mAltitudeChartFrame); + Button saveButton = mAltitudeChartFrame.findViewById(R.id.btn__save); + saveButton.setText(R.string.save); + saveButton.setEnabled(true); } void hideAltitudeChartAndRoutingDetails() @@ -484,14 +490,21 @@ final class RoutingBottomMenuController implements View.OnClickListener public void onClick(View v) { final int id = v.getId(); - if (id == R.id.btn__my_position_use && mListener != null) + if (id == R.id.btn__my_position_use) mListener.onUseMyPositionAsStart(); - else if (id == R.id.btn__search_point && mListener != null) + else if (id == R.id.btn__search_point) { final RouteMarkType pointType = (RouteMarkType) mActionMessage.getTag(); mListener.onSearchRoutePoint(pointType); } - else if (id == R.id.btn__manage_route && mListener != null) + else if (id == R.id.btn__manage_route) mListener.onManageRouteOpen(); + else if (id == R.id.btn__save) + { + Framework.nativeSaveRoute(); + Button saveButton = v.findViewById(R.id.btn__save); + saveButton.setEnabled(false); + saveButton.setText(R.string.saved); + } } } diff --git a/android/app/src/main/java/app/organicmaps/routing/RoutingPlanController.java b/android/app/src/main/java/app/organicmaps/routing/RoutingPlanController.java index de22cff86..418ba01b3 100644 --- a/android/app/src/main/java/app/organicmaps/routing/RoutingPlanController.java +++ b/android/app/src/main/java/app/organicmaps/routing/RoutingPlanController.java @@ -86,7 +86,7 @@ public class RoutingPlanController extends ToolbarController RoutingPlanController(View root, Activity activity, ActivityResultLauncher startDrivingOptionsForResult, @NonNull RoutingPlanInplaceController.RoutingPlanListener routingPlanListener, - @Nullable RoutingBottomMenuListener listener) + @NonNull RoutingBottomMenuListener listener) { super(root, activity); mFrame = root; diff --git a/android/app/src/main/res/layout-land/altitude_chart_panel.xml b/android/app/src/main/res/layout-land/altitude_chart_panel.xml index 1eac5978a..d3734dbab 100644 --- a/android/app/src/main/res/layout-land/altitude_chart_panel.xml +++ b/android/app/src/main/res/layout-land/altitude_chart_panel.xml @@ -73,6 +73,17 @@ android:drawableStart="@drawable/ic_manage_route" android:drawablePadding="6dp"/> +