From 894a39e5479b367b6ef37838d5cb21d74551e2a5 Mon Sep 17 00:00:00 2001 From: VladiMihaylenko Date: Tue, 20 Nov 2018 16:45:23 +0300 Subject: [PATCH] [ios] Speed cams. --- iphone/Maps/Alert 5.m4a | Bin 0 -> 9530 bytes .../MWMNavigationDashboardEntity.h | 1 + .../MWMNavigationDashboardEntity.mm | 9 + .../Views/NavigationControlView.swift | 8 + .../Views/NavigationControlView.xib | 31 +-- iphone/Maps/Core/Routing/MWMRouter.mm | 3 + .../Maps/Core/TextToSpeech/MWMTextToSpeech.h | 1 + .../Maps/Core/TextToSpeech/MWMTextToSpeech.mm | 31 +++ iphone/Maps/Maps.xcodeproj/project.pbxproj | 10 + .../UI/Settings/MWMSettingsViewController.mm | 36 +++- .../Settings/MWMSpeedCamSettingsController.h | 9 + .../Settings/MWMSpeedCamSettingsController.mm | 76 ++++++++ iphone/Maps/UI/Storyboard/Settings.storyboard | 177 +++++++++++++++++- .../routing/routing.xcodeproj/project.pbxproj | 8 + 14 files changed, 374 insertions(+), 26 deletions(-) create mode 100644 iphone/Maps/Alert 5.m4a create mode 100644 iphone/Maps/UI/Settings/MWMSpeedCamSettingsController.h create mode 100644 iphone/Maps/UI/Settings/MWMSpeedCamSettingsController.mm diff --git a/iphone/Maps/Alert 5.m4a b/iphone/Maps/Alert 5.m4a new file mode 100644 index 0000000000000000000000000000000000000000..6f391ae7791a43baf39537e1ff141ee15e6836eb GIT binary patch literal 9530 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 MhA{&$JH~DP2T|8Q4*&oF literal 0 HcmV?d00001 diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardEntity.h b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardEntity.h index c24404aa81..ff5f507072 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardEntity.h +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardEntity.h @@ -20,6 +20,7 @@ @property(nonatomic, readonly) NSUInteger roundExitNumber; @property(nonatomic, readonly) UIImage * nextTurnImage; @property(nonatomic, readonly) UIImage * turnImage; +@property(nonatomic, readonly) BOOL isSpeedLimitExceeded; + (instancetype) new __attribute__((unavailable("init is not available"))); diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardEntity.mm b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardEntity.mm index d9b52545c0..f47e9778a2 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardEntity.mm +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardEntity.mm @@ -5,6 +5,10 @@ #import "MWMSettings.h" #import "SwiftBridge.h" +#include "Framework.h" + +#include "map/routing_manager.hpp" + #include "platform/measurement_utils.hpp" @interface MWMNavigationDashboardEntity () @@ -37,6 +41,11 @@ return @(measurement_utils::FormatSpeed(lastLocation.speed, units).c_str()); } +- (BOOL)isSpeedLimitExceeded +{ + return GetFramework().GetRoutingManager().IsSpeedLimitExceeded(); +} + - (NSString *)speedUnits { auto const units = coreUnits([MWMSettings measurementUnits]); diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/NavigationControlView.swift b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/NavigationControlView.swift index 469caf6065..fef941f19b 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/NavigationControlView.swift +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/NavigationControlView.swift @@ -6,6 +6,7 @@ final class NavigationControlView: SolidTouchView, MWMTextToSpeechObserver, MWMT @IBOutlet private weak var progressView: UIView! @IBOutlet private weak var routingProgress: NSLayoutConstraint! @IBOutlet private weak var speedLabel: UILabel! + @IBOutlet private weak var speedBackground: UIView! @IBOutlet private weak var speedLegendLabel: UILabel! @IBOutlet private weak var speedWithLegendLabel: UILabel! @IBOutlet private weak var timeLabel: UILabel! @@ -189,6 +190,13 @@ final class NavigationControlView: SolidTouchView, MWMTextToSpeechObserver, MWMT speedWithLegend.append(NSAttributedString(string: info.speedUnits, attributes: routingLegendAttributes)) speedWithLegendLabel.attributedText = speedWithLegend + let speedLimitExceeded = info.isSpeedLimitExceeded + let textColor = speedLimitExceeded ? UIColor.white() : UIColor.blackPrimaryText() + speedBackground.backgroundColor = speedLimitExceeded ? UIColor.buttonRed() : UIColor.clear + speedLabel.textColor = textColor + speedLegendLabel.textColor = textColor + speedWithLegendLabel.textColor = textColor + self.routingProgress.constant = self.progressView.width * info.progress / 100 } diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/NavigationControlView.xib b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/NavigationControlView.xib index 759a748cd5..f327808494 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/NavigationControlView.xib +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/NavigationControlView.xib @@ -1,11 +1,11 @@ - + - + @@ -16,7 +16,7 @@ - + @@ -31,7 +31,7 @@ - + - + - + @@ -107,7 +107,7 @@ - +