diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.h b/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.h index 9b8b6e6a5e..bad1c6a1fa 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.h +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.h @@ -42,7 +42,6 @@ - (void)onRoutePrepare; - (void)onRouteRebuild; -- (void)onRouteError; - (void)onRouteReady; - (void)onRouteStart; - (void)onRouteStop; diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm index 91e6e14499..109a050cc8 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm @@ -148,7 +148,7 @@ using Observers = NSHashTable; self.navigationInfoView = nil; self.navigationControlView.isVisible = NO; self.navigationControlView = nil; - [self.statusBox stateNavigation]; + [self.statusBox stateHidden]; self.statusBox = nil; } diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMiPadRoutePreview.xib b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMiPadRoutePreview.xib index ea8a900845..06c6451d52 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMiPadRoutePreview.xib +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMiPadRoutePreview.xib @@ -122,7 +122,7 @@ - + @@ -242,6 +242,36 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMiPhoneRoutePreview.xib b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMiPhoneRoutePreview.xib index b85b341d10..582476df55 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMiPhoneRoutePreview.xib +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/MWMiPhoneRoutePreview.xib @@ -138,7 +138,7 @@ - + @@ -175,6 +175,12 @@ + + + + + + + + + + diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/RoutePreviewStatus.swift b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/RoutePreviewStatus.swift index 21c2c3659e..ffd3fa19bd 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/RoutePreviewStatus.swift +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/RoutePreview/RoutePreviewStatus.swift @@ -3,17 +3,36 @@ final class RoutePreviewStatus: SolidTouchView { @IBOutlet private weak var errorBox: UIView! @IBOutlet private weak var resultsBox: UIView! @IBOutlet private weak var heightBox: UIView! + @IBOutlet private weak var manageRouteBox: UIView! { + didSet { + iPhoneSpecific { + manageRouteBox.backgroundColor = UIColor.blackOpaque() + } + } + } @IBOutlet private weak var taxiBox: UIView! @IBOutlet private weak var errorLabel: UILabel! @IBOutlet private weak var resultLabel: UILabel! @IBOutlet private weak var arriveLabel: UILabel? @IBOutlet private weak var heightProfileImage: UIImageView! @IBOutlet private weak var heightProfileElevationHeight: UILabel? + @IBOutlet private weak var manageRouteButtonRegular: UIButton! { + didSet { + configManageRouteButton(manageRouteButtonRegular) + } + } + @IBOutlet private weak var manageRouteButtonCompact: UIButton? { + didSet { + configManageRouteButton(manageRouteButtonCompact!) + } + } @IBOutlet private var errorBoxBottom: NSLayoutConstraint! @IBOutlet private var resultsBoxBottom: NSLayoutConstraint! @IBOutlet private var heightBoxBottom: NSLayoutConstraint! @IBOutlet private var taxiBoxBottom: NSLayoutConstraint! + @IBOutlet private var manageRouteBoxBottom: NSLayoutConstraint! + @IBOutlet private var heightBoxBottomManageRouteBoxTop: NSLayoutConstraint! private var hiddenConstraint: NSLayoutConstraint! weak var ownerView: UIView! @@ -64,11 +83,31 @@ final class RoutePreviewStatus: SolidTouchView { self.errorBoxBottom.isActive = !self.errorBox.isHidden self.resultsBoxBottom.isActive = !self.resultsBox.isHidden self.heightBoxBottom.isActive = !self.heightBox.isHidden + self.heightBoxBottomManageRouteBoxTop.isActive = !self.heightBox.isHidden self.taxiBoxBottom.isActive = !self.taxiBox.isHidden + self.manageRouteBoxBottom.isActive = !self.manageRouteBox.isHidden UIView.animate(withDuration: kDefaultAnimationDuration) { self.layoutIfNeeded() } } } + private func configManageRouteButton(_ button: UIButton) { + button.titleLabel?.font = UIFont.medium14() + button.setTitle(L("planning_route_manage_route"), for: .normal) + button.tintColor = UIColor.blackSecondaryText() + } + + override func traitCollectionDidChange(_ previousTraitCollection: UITraitCollection?) { + super.traitCollectionDidChange(previousTraitCollection) + updateManageRouteVisibility() + updateHeight() + } + + private func updateManageRouteVisibility() { + let isCompact = traitCollection.verticalSizeClass == .compact + manageRouteBox.isHidden = isCompact || resultsBox.isHidden + manageRouteButtonCompact?.isHidden = !isCompact + } + func stateHidden() { isVisible = false } @@ -83,6 +122,7 @@ final class RoutePreviewStatus: SolidTouchView { resultsBox.isHidden = true heightBox.isHidden = true taxiBox.isHidden = true + manageRouteBox.isHidden = true errorLabel.text = message @@ -111,7 +151,7 @@ final class RoutePreviewStatus: SolidTouchView { heightBox.isHidden = true } } - + updateManageRouteVisibility() updateHeight() } diff --git a/iphone/Maps/Images.xcassets/ic_24px_manager.imageset/Contents.json b/iphone/Maps/Images.xcassets/ic_24px_manager.imageset/Contents.json new file mode 100644 index 0000000000..840060b1f4 --- /dev/null +++ b/iphone/Maps/Images.xcassets/ic_24px_manager.imageset/Contents.json @@ -0,0 +1,15 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ic_24px_manager.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + }, + "properties" : { + "template-rendering-intent" : "template" + } +} \ No newline at end of file diff --git a/iphone/Maps/Images.xcassets/ic_24px_manager.imageset/ic_24px_manager.pdf b/iphone/Maps/Images.xcassets/ic_24px_manager.imageset/ic_24px_manager.pdf new file mode 100644 index 0000000000..e4a81acfc1 Binary files /dev/null and b/iphone/Maps/Images.xcassets/ic_24px_manager.imageset/ic_24px_manager.pdf differ diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj index 390c6d1303..d1a6ece980 100644 --- a/iphone/Maps/Maps.xcodeproj/project.pbxproj +++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj @@ -329,6 +329,9 @@ 3476B8E01BFDD33A00874594 /* tts-how-to-set-up-voice-img in Resources */ = {isa = PBXBuildFile; fileRef = 3476B8DF1BFDD33A00874594 /* tts-how-to-set-up-voice-img */; }; 3476B8E11BFDD33A00874594 /* tts-how-to-set-up-voice-img in Resources */ = {isa = PBXBuildFile; fileRef = 3476B8DF1BFDD33A00874594 /* tts-how-to-set-up-voice-img */; }; 347A4C5E1C4E76C9006BA66E /* liboauthcpp.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 340DC82B1C4E72C700EAA2CC /* liboauthcpp.a */; }; + 347BFA8F1F27909200E5531F /* MenuArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 347BFA8E1F27909200E5531F /* MenuArea.swift */; }; + 347BFA901F27909200E5531F /* MenuArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 347BFA8E1F27909200E5531F /* MenuArea.swift */; }; + 347BFA911F27909200E5531F /* MenuArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 347BFA8E1F27909200E5531F /* MenuArea.swift */; }; 347E1A881F1F5DD7002BF7A8 /* CianItemModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 347E1A871F1F5DD7002BF7A8 /* CianItemModel.swift */; }; 347E1A891F1F5DD7002BF7A8 /* CianItemModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 347E1A871F1F5DD7002BF7A8 /* CianItemModel.swift */; }; 347E1A8A1F1F5DD7002BF7A8 /* CianItemModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 347E1A871F1F5DD7002BF7A8 /* CianItemModel.swift */; }; @@ -344,9 +347,6 @@ 347E1A991F1F7404002BF7A8 /* CianElement.xib in Resources */ = {isa = PBXBuildFile; fileRef = 347E1A951F1F7404002BF7A8 /* CianElement.xib */; }; 347E1A9A1F1F7404002BF7A8 /* CianElement.xib in Resources */ = {isa = PBXBuildFile; fileRef = 347E1A951F1F7404002BF7A8 /* CianElement.xib */; }; 347E1A9B1F1F7404002BF7A8 /* CianElement.xib in Resources */ = {isa = PBXBuildFile; fileRef = 347E1A951F1F7404002BF7A8 /* CianElement.xib */; }; - 347BFA8F1F27909200E5531F /* MenuArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 347BFA8E1F27909200E5531F /* MenuArea.swift */; }; - 347BFA901F27909200E5531F /* MenuArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 347BFA8E1F27909200E5531F /* MenuArea.swift */; }; - 347BFA911F27909200E5531F /* MenuArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 347BFA8E1F27909200E5531F /* MenuArea.swift */; }; 34845DAE1E1649F6003D55B9 /* DownloaderNoResultsEmbedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34845DAD1E1649F6003D55B9 /* DownloaderNoResultsEmbedViewController.swift */; }; 34845DAF1E1649F6003D55B9 /* DownloaderNoResultsEmbedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34845DAD1E1649F6003D55B9 /* DownloaderNoResultsEmbedViewController.swift */; }; 34845DB01E1649F6003D55B9 /* DownloaderNoResultsEmbedViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34845DAD1E1649F6003D55B9 /* DownloaderNoResultsEmbedViewController.swift */; }; @@ -1887,16 +1887,15 @@ 34763F0B1F30CCAC00F4D2D3 /* MWMEditorCellType.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMEditorCellType.h; sourceTree = ""; }; 3476B8D51BFDD30B00874594 /* tts-how-to-set-up-voice.html */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.html; name = "tts-how-to-set-up-voice.html"; path = "../../data/tts-how-to-set-up-voice.html"; sourceTree = ""; }; 3476B8DF1BFDD33A00874594 /* tts-how-to-set-up-voice-img */ = {isa = PBXFileReference; lastKnownFileType = folder; name = "tts-how-to-set-up-voice-img"; path = "../../data/tts-how-to-set-up-voice-img"; sourceTree = ""; }; + 347AD8081F28B4E6007ACB68 /* MWMSearchManagerObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMSearchManagerObserver.h; sourceTree = ""; }; + 347BFA8E1F27909200E5531F /* MenuArea.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuArea.swift; sourceTree = ""; }; + 347BFA921F27923200E5531F /* MWMBottomMenuControllerProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMBottomMenuControllerProtocol.h; sourceTree = ""; }; + 347BFA931F28842300E5531F /* MWMNavigationDashboardObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMNavigationDashboardObserver.h; sourceTree = ""; }; 347E1A871F1F5DD7002BF7A8 /* CianItemModel.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CianItemModel.swift; sourceTree = ""; }; 347E1A8C1F1F71F1002BF7A8 /* PPCianCarouselCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PPCianCarouselCell.swift; sourceTree = ""; }; 347E1A901F1F72AD002BF7A8 /* PPCianCarouselCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PPCianCarouselCell.xib; sourceTree = ""; }; 347E1A941F1F7404002BF7A8 /* CianElement.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CianElement.swift; sourceTree = ""; }; 347E1A951F1F7404002BF7A8 /* CianElement.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CianElement.xib; sourceTree = ""; }; - 348320CC1B6A2C52007EC039 /* MWMNavigationViewProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMNavigationViewProtocol.h; sourceTree = ""; }; - 347AD8081F28B4E6007ACB68 /* MWMSearchManagerObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMSearchManagerObserver.h; sourceTree = ""; }; - 347BFA8E1F27909200E5531F /* MenuArea.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = MenuArea.swift; sourceTree = ""; }; - 347BFA921F27923200E5531F /* MWMBottomMenuControllerProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMBottomMenuControllerProtocol.h; sourceTree = ""; }; - 347BFA931F28842300E5531F /* MWMNavigationDashboardObserver.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMNavigationDashboardObserver.h; sourceTree = ""; }; 34845DAD1E1649F6003D55B9 /* DownloaderNoResultsEmbedViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DownloaderNoResultsEmbedViewController.swift; sourceTree = ""; }; 34845DB11E165E24003D55B9 /* SearchNoResultsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SearchNoResultsViewController.swift; sourceTree = ""; }; 34845DB51E166084003D55B9 /* Common.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Common.swift; sourceTree = ""; }; @@ -3074,10 +3073,10 @@ 340708471F28EDD100029ECC /* MWMTaxiPreviewDataSource.h */, 340708481F28EDD100029ECC /* MWMTaxiPreviewDataSource.mm */, 34763EF91F2F74B200F4D2D3 /* NavigationRoutePreviewStatusView.xib */, + 34763F011F30749000F4D2D3 /* RoutePreviewStatus.swift */, 340708491F28EDD100029ECC /* RoutePreviewTaxiCell.swift */, 3407086C1F2B427400029ECC /* RoutePreviewTaxiCell.xib */, 34763EFD1F3069BB00F4D2D3 /* RouteStartButton.swift */, - 34763F011F30749000F4D2D3 /* RoutePreviewStatus.swift */, ); path = RoutePreview; sourceTree = ""; @@ -3297,6 +3296,17 @@ path = Components; sourceTree = ""; }; + 34763EE31F2F392300F4D2D3 /* TextToSpeech */ = { + isa = PBXGroup; + children = ( + 34763EE41F2F392300F4D2D3 /* MWMTextToSpeech.h */, + 34763EE51F2F392300F4D2D3 /* MWMTextToSpeech.mm */, + 34763EE91F2F394D00F4D2D3 /* MWMTextToSpeech+CPP.h */, + 34763EEA1F2F3AD700F4D2D3 /* MWMTextToSpeechObserver.h */, + ); + path = TextToSpeech; + sourceTree = ""; + }; 347E1A861F1F5DD7002BF7A8 /* Cian */ = { isa = PBXGroup; children = ( @@ -3309,17 +3319,6 @@ path = Cian; sourceTree = ""; }; - 34763EE31F2F392300F4D2D3 /* TextToSpeech */ = { - isa = PBXGroup; - children = ( - 34763EE41F2F392300F4D2D3 /* MWMTextToSpeech.h */, - 34763EE51F2F392300F4D2D3 /* MWMTextToSpeech.mm */, - 34763EE91F2F394D00F4D2D3 /* MWMTextToSpeech+CPP.h */, - 34763EEA1F2F3AD700F4D2D3 /* MWMTextToSpeechObserver.h */, - ); - path = TextToSpeech; - sourceTree = ""; - }; 3486B5041E27A4B50069C126 /* Notifications */ = { isa = PBXGroup; children = ( @@ -5428,7 +5427,6 @@ 34ABA6281C2D567B00FE1BEC /* MWMInputLoginValidator.mm in Sources */, 34F4073D1E9E1AFF00E57AC0 /* MPNativeAd+MWM.mm in Sources */, F69018B81E9E601400B3C10B /* MWMAutoupdateController.mm in Sources */, - 560634F21B78806100F3D670 /* MWMTextToSpeech.mm in Sources */, 347E1A961F1F7404002BF7A8 /* CianElement.swift in Sources */, F6E2FECF1E097BA00083EBEC /* MWMSearchFilterViewController.mm in Sources */, 34D4FA661E265749003F53EF /* WhatsNewController.swift in Sources */,