diff --git a/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.h b/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.h
index a81f261b4..bef509d8c 100644
--- a/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.h
+++ b/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.h
@@ -69,6 +69,7 @@ NS_SWIFT_NAME(FrameworkHelper)
+ (void)showOnMap:(MWMMarkGroupID)categoryId;
+ (void)showBookmark:(MWMMarkID)bookmarkId;
+ (void)showTrack:(MWMTrackID)trackId;
++ (void)saveRouteAsTrack;
+ (void)updatePlacePageData;
+ (void)updateAfterDeleteBookmark;
+ (int)currentZoomLevel;
diff --git a/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.mm b/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.mm
index d00c60df6..8ad40aedc 100644
--- a/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.mm
+++ b/iphone/CoreApi/CoreApi/Framework/MWMFrameworkHelper.mm
@@ -195,6 +195,10 @@ static Framework::ProductsPopupCloseReason ConvertProductPopupCloseReasonToCore(
GetFramework().ShowTrack(trackId);
}
++ (void)saveRouteAsTrack {
+ GetFramework().SaveRoute();
+}
+
+ (void)updatePlacePageData {
GetFramework().UpdatePlacePageInfoForCurrentSelection();
}
diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm
index 4cdefffa5..f80506d6b 100644
--- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm
+++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm
@@ -228,6 +228,11 @@ NSString *const kNavigationControlViewXibName = @"NavigationControlView";
[[MapViewController sharedController] presentViewController:routeManager animated:YES completion:nil];
}
+- (IBAction)saveRouteAsTrack:(id)sender {
+ [MWMFrameworkHelper saveRouteAsTrack];
+ [self.baseRoutePreviewStatus setRouteSaved:YES];
+}
+
#pragma mark - MWMNavigationControlView
- (IBAction)ttsButtonAction {
diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMiPhoneRoutePreview.xib b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMiPhoneRoutePreview.xib
index 40417b069..e895d10db 100644
--- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMiPhoneRoutePreview.xib
+++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMiPhoneRoutePreview.xib
@@ -237,7 +237,7 @@
+
-
+
+
+
+
+
@@ -319,7 +336,7 @@
+
+
+
@@ -386,6 +418,8 @@
+
+
@@ -459,6 +493,7 @@
+
diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/RoutePreviewStatus/BaseRoutePreviewStatus.swift b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/RoutePreviewStatus/BaseRoutePreviewStatus.swift
index d01a7897c..261fc4efb 100644
--- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/RoutePreviewStatus/BaseRoutePreviewStatus.swift
+++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/RoutePreviewStatus/BaseRoutePreviewStatus.swift
@@ -27,6 +27,18 @@ final class BaseRoutePreviewStatus: SolidTouchView {
}
}
+ @IBOutlet private weak var saveRouteAsTrackButtonRegular: UIButton! {
+ didSet {
+ configSaveRouteAsTrackButton(saveRouteAsTrackButtonRegular)
+ }
+ }
+
+ @IBOutlet private weak var saveRouteAsTrackButtonCompact: UIButton! {
+ didSet {
+ configSaveRouteAsTrackButton(saveRouteAsTrackButtonCompact)
+ }
+ }
+
@IBOutlet private var errorBoxBottom: NSLayoutConstraint!
@IBOutlet private var resultsBoxBottom: NSLayoutConstraint!
@IBOutlet private var heightBoxBottom: NSLayoutConstraint!
@@ -84,6 +96,12 @@ final class BaseRoutePreviewStatus: SolidTouchView {
button.setTitle(L("planning_route_manage_route"), for: .normal)
}
+ private func configSaveRouteAsTrackButton(_ button: UIButton) {
+ button.setImagePadding(8)
+ button.setTitle(L("save"), for: .normal)
+ button.setTitle(L("saved"), for: .disabled)
+ }
+
override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) {
super.traitCollectionDidChange(previousTraitCollection)
updateManageRouteVisibility()
@@ -95,6 +113,7 @@ final class BaseRoutePreviewStatus: SolidTouchView {
let isCompact = traitCollection.verticalSizeClass == .compact
manageRouteBox.isHidden = isCompact || resultsBox.isHidden
manageRouteButtonCompact?.isHidden = !isCompact
+ saveRouteAsTrackButtonCompact.isHidden = !isCompact
}
@objc func hide() {
@@ -107,9 +126,7 @@ final class BaseRoutePreviewStatus: SolidTouchView {
resultsBox.isHidden = true
heightBox.isHidden = true
manageRouteBox.isHidden = true
-
errorLabel.text = message
-
updateHeight()
}
@@ -130,10 +147,20 @@ final class BaseRoutePreviewStatus: SolidTouchView {
} else {
heightBox.isHidden = true
}
+ setRouteAsTrackButtonEnabled(true)
updateManageRouteVisibility()
updateHeight()
}
+ @objc func setRouteSaved(_ isSaved: Bool) {
+ setRouteAsTrackButtonEnabled(!isSaved)
+ }
+
+ private func setRouteAsTrackButtonEnabled(_ isEnabled: Bool) {
+ saveRouteAsTrackButtonRegular.isEnabled = isEnabled
+ saveRouteAsTrackButtonCompact.isEnabled = isEnabled
+ }
+
private func updateResultsLabel() {
guard let info = navigationInfo else { return }