From d59a6ca8e660c8de2a2e70079e2fa8583a467e9b Mon Sep 17 00:00:00 2001 From: Aleksey Belousov Date: Fri, 13 Mar 2020 06:05:11 +0300 Subject: [PATCH] [iOS] fix PP buttons for route points --- .../CoreApi/PlacePageData/PlacePageData.h | 9 ++++++++ .../CoreApi/PlacePageData/PlacePageData.mm | 15 ++++++++++++ .../Components/ActionBarViewController.swift | 23 +++++++++++++++---- 3 files changed, 43 insertions(+), 4 deletions(-) diff --git a/iphone/CoreApi/CoreApi/PlacePageData/PlacePageData.h b/iphone/CoreApi/CoreApi/PlacePageData/PlacePageData.h index ebe497f7f3..af727a6b49 100644 --- a/iphone/CoreApi/CoreApi/PlacePageData/PlacePageData.h +++ b/iphone/CoreApi/CoreApi/PlacePageData/PlacePageData.h @@ -32,6 +32,13 @@ typedef NS_ENUM(NSInteger, PlacePageTaxiProvider) { PlacePageTaxiProviderRutaxi }; +typedef NS_ENUM(NSInteger, PlacePageRoadType) { + PlacePageRoadTypeToll, + PlacePageRoadTypeFerry, + PlacePageRoadTypeDirty, + PlacePageRoadTypeNone +}; + @protocol IOpeningHoursLocalization; NS_ASSUME_NONNULL_BEGIN @@ -44,6 +51,7 @@ NS_ASSUME_NONNULL_BEGIN @property(nonatomic, readonly, nullable) PlacePageBookmarkData *bookmarkData; @property(nonatomic, readonly) PlacePageSponsoredType sponsoredType; @property(nonatomic, readonly) PlacePageTaxiProvider taxiProvider; +@property(nonatomic, readonly) PlacePageRoadType roadType; @property(nonatomic, readonly, nullable) NSString *wikiDescriptionHtml; @property(nonatomic, readonly, nullable) CatalogPromoData *catalogPromo; @property(nonatomic, readonly, nullable) HotelBookingData *hotelBooking; @@ -59,6 +67,7 @@ NS_ASSUME_NONNULL_BEGIN @property(nonatomic, readonly) BOOL shouldShowUgc; @property(nonatomic, readonly) BOOL isMyPosition; @property(nonatomic, readonly) BOOL isPreviewPlus; +@property(nonatomic, readonly) BOOL isRoutePoint; @property(nonatomic, readonly) NSInteger partnerIndex; @property(nonatomic, readonly, nullable) NSString *partnerName; @property(nonatomic, readonly) CLLocationCoordinate2D locationCoordinate; diff --git a/iphone/CoreApi/CoreApi/PlacePageData/PlacePageData.mm b/iphone/CoreApi/CoreApi/PlacePageData/PlacePageData.mm index bc95266739..a475e5315f 100644 --- a/iphone/CoreApi/CoreApi/PlacePageData/PlacePageData.mm +++ b/iphone/CoreApi/CoreApi/PlacePageData/PlacePageData.mm @@ -51,6 +51,19 @@ static PlacePageTaxiProvider convertTaxiProvider(taxi::Provider::Type providerTy } } +static PlacePageRoadType convertRoadType(RoadWarningMarkType roadType) { + switch (roadType) { + case RoadWarningMarkType::Toll: + return PlacePageRoadTypeToll; + case RoadWarningMarkType::Ferry: + return PlacePageRoadTypeFerry; + case RoadWarningMarkType::Dirty: + return PlacePageRoadTypeDirty; + case RoadWarningMarkType::Count: + return PlacePageRoadTypeNone; + } +} + @implementation PlacePageData - (instancetype)initWithLocalizationProvider:(id)localization { @@ -70,6 +83,7 @@ static PlacePageTaxiProvider convertTaxiProvider(taxi::Provider::Type providerTy } _sponsoredType = convertSponsoredType(rawData().GetSponsoredType()); + _roadType = convertRoadType(rawData().GetRoadType()); auto const &taxiProviders = rawData().ReachableByTaxiProviders(); if (!taxiProviders.empty()) { @@ -82,6 +96,7 @@ static PlacePageTaxiProvider convertTaxiProvider(taxi::Provider::Type providerTy _isPromoCatalog = _isLargeToponim || _isSightseeing || _isOutdoor; _shouldShowUgc = rawData().ShouldShowUGC(); _isMyPosition = rawData().IsMyPosition(); + _isRoutePoint = rawData().IsRoutePoint(); _isPreviewPlus = rawData().GetOpeningMode() == place_page::OpeningMode::PreviewPlus; _isPartner = rawData().GetSponsoredType() == place_page::SponsoredType::Partner; _partnerIndex = _isPartner ? rawData().GetPartnerIndex() : -1; diff --git a/iphone/Maps/UI/PlacePage/Components/ActionBarViewController.swift b/iphone/Maps/UI/PlacePage/Components/ActionBarViewController.swift index 5f5fc300c0..6cf272d79e 100644 --- a/iphone/Maps/UI/PlacePage/Components/ActionBarViewController.swift +++ b/iphone/Maps/UI/PlacePage/Components/ActionBarViewController.swift @@ -17,10 +17,25 @@ class ActionBarViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - configButton1() - configButton2() - configButton3() - configButton4() + if placePageData.isRoutePoint { + visibleButtons.append(.routeRemoveStop) + } else if placePageData.roadType != .none { + switch placePageData.roadType { + case .toll: + visibleButtons.append(.avoidToll) + case .ferry: + visibleButtons.append(.avoidFerry) + case .dirty: + visibleButtons.append(.avoidDirty) + default: + fatalError() + } + } else { + configButton1() + configButton2() + configButton3() + configButton4() + } for buttonType in visibleButtons { var selected = false