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 }