diff --git a/iphone/CoreApi/CoreApi.xcodeproj/project.pbxproj b/iphone/CoreApi/CoreApi.xcodeproj/project.pbxproj index ed4cd18ab0..14c422593e 100644 --- a/iphone/CoreApi/CoreApi.xcodeproj/project.pbxproj +++ b/iphone/CoreApi/CoreApi.xcodeproj/project.pbxproj @@ -220,8 +220,6 @@ 47F4F1F723A3336B0022FD56 /* MWMMapNodeAttributes.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMMapNodeAttributes.h; sourceTree = ""; }; 47F4F1F823A3336C0022FD56 /* MWMMapNodeAttributes.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMMapNodeAttributes.mm; sourceTree = ""; }; 47F4F1FB23A3D1AC0022FD56 /* MWMMapNodeAttributes+Core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "MWMMapNodeAttributes+Core.h"; sourceTree = ""; }; - 99103841237EDFA200893C9F /* DeepLinkData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = DeepLinkData.h; sourceTree = ""; }; - 99103842237EDFA200893C9F /* DeepLinkData.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = DeepLinkData.m; sourceTree = ""; }; 47F701ED238C86F000D18E95 /* PlacePageButtonsData.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = PlacePageButtonsData.h; sourceTree = ""; }; 47F701EE238C86F000D18E95 /* PlacePageButtonsData.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = PlacePageButtonsData.mm; sourceTree = ""; }; 47F701F1238C877C00D18E95 /* PlacePageButtonsData+Core.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "PlacePageButtonsData+Core.h"; sourceTree = ""; }; diff --git a/iphone/Maps/Bridging-Header.h b/iphone/Maps/Bridging-Header.h index a05be10cd1..8ebd30915a 100644 --- a/iphone/Maps/Bridging-Header.h +++ b/iphone/Maps/Bridging-Header.h @@ -51,10 +51,7 @@ #import "MWMNavigationDashboardEntity.h" #import "MWMNavigationDashboardManager.h" #import "MWMNoMapsViewController.h" -#import "MWMPlacePageButtonsProtocol.h" -#import "MWMPlacePageCellUpdateProtocol.h" #import "MWMPlacePageManagerHelper.h" -#import "MWMPlacePageTaxiProvider.h" #import "MWMPushNotifications.h" #import "MWMReviewsViewModelProtocol.h" #import "MWMRouteManagerPointType.h" diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.h b/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.h index 98604adae9..c7485eae7d 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.h +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.h @@ -5,7 +5,6 @@ @class MapViewController; @protocol MWMFeatureHolder; -@protocol MWMBookingInfoHolder; @interface MWMMapViewControlsManager : NSObject @@ -35,9 +34,6 @@ #pragma mark - MWMPlacePageViewManager -- (void)dismissPlacePage; -- (void)showPlacePage; -- (void)updatePlacePage; - (void)showPlacePageReview; #pragma mark - MWMNavigationDashboardManager @@ -59,10 +55,6 @@ - (id)featureHolder; -#pragma mark - MWMBookingInfoHolder - -- (id)bookingInfoHolder; - - (void)showAdditionalViewsIfNeeded; @end diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm b/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm index a41b125d59..7c339c45dc 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm @@ -108,7 +108,6 @@ NSString * const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue"; [self.navigationManager mwm_refreshUI]; [self.searchManager mwm_refreshUI]; [self.menuController mwm_refreshUI]; - [self.placePageManager mwm_refreshUI]; [self.promoButton mwm_refreshUI]; [self.ownerController setNeedsStatusBarAppearanceUpdate]; } @@ -123,23 +122,6 @@ NSString * const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue"; #pragma mark - MWMPlacePageViewManager -- (void)dismissPlacePage -{ - self.trafficButtonHidden = NO; - [self.placePageManager dismiss]; -} - -- (void)showPlacePage { - [[MWMNetworkPolicy sharedPolicy] callOnlineApi:^(BOOL) { - self.trafficButtonHidden = YES; - [self.placePageManager show]; - }]; -} - -- (void)updatePlacePage { - [self.placePageManager update]; -} - - (void)showPlacePageReview { [[MWMNetworkPolicy sharedPolicy] callOnlineApi:^(BOOL) { self.trafficButtonHidden = YES; @@ -188,7 +170,7 @@ NSString * const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue"; self.trafficButtonHidden = YES; self.menuState = MWMBottomMenuStateHidden; MapViewController * ownerController = self.ownerController; - [self.placePageManager dismiss]; + [ownerController dismissPlacePage]; self.searchManager.state = MWMSearchManagerStateHidden; [MWMAddPlaceNavigationBar showInSuperview:ownerController.view @@ -390,9 +372,6 @@ NSString * const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue"; - (id)featureHolder { return self.placePageManager; } -#pragma mark - MWMBookingInfoHolder -- (id)bookingInfoHolder { return self.placePageManager; } - - (MWMTutorialViewController *)tutorialWithType:(MWMTip)tutorialType { MWMTutorialViewController * tutorial; diff --git a/iphone/Maps/Classes/MapViewController.h b/iphone/Maps/Classes/MapViewController.h index 1b7faf18ef..28668d98c4 100644 --- a/iphone/Maps/Classes/MapViewController.h +++ b/iphone/Maps/Classes/MapViewController.h @@ -6,7 +6,6 @@ @class MWMWelcomePageController; @class MWMMapViewControlsManager; -@class MWMPlacePageData; @class EAGLView; @class MWMMapDownloadDialog; @protocol MWMLocationModeListener; diff --git a/iphone/Maps/Classes/MapViewController.mm b/iphone/Maps/Classes/MapViewController.mm index d20e495dc8..ad5a857b41 100644 --- a/iphone/Maps/Classes/MapViewController.mm +++ b/iphone/Maps/Classes/MapViewController.mm @@ -17,6 +17,7 @@ #import "MapsAppDelegate.h" #import "SwiftBridge.h" #import "MWMLocationModeListener.h" +#import "MWMNetworkPolicy+UI.h" #include #import @@ -109,12 +110,30 @@ NSString * const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; #pragma mark - Map Navigation +- (void)showPlacePage { + self.controlsManager.trafficButtonHidden = YES; + self.placePageVC = (PlacePageViewController *)[[UIStoryboard instance:MWMStoryboardPlacePage] instantiateInitialViewController]; + self.placePageVC.placePageData = [[PlacePageData alloc] init]; + [self addChildViewController:self.placePageVC]; + self.placePageContainer.hidden = NO; + [self.placePageContainer addSubview:self.placePageVC.view]; + self.placePageVC.view.translatesAutoresizingMaskIntoConstraints = NO; + [NSLayoutConstraint activateConstraints:@[ + [self.placePageVC.view.topAnchor constraintEqualToAnchor:self.placePageContainer.safeAreaLayoutGuide.topAnchor], + [self.placePageVC.view.leftAnchor constraintEqualToAnchor:self.placePageContainer.leftAnchor], + [self.placePageVC.view.bottomAnchor constraintEqualToAnchor:self.placePageContainer.bottomAnchor], + [self.placePageVC.view.rightAnchor constraintEqualToAnchor:self.placePageContainer.rightAnchor] + ]]; + [self.placePageVC didMoveToParentViewController:self]; +} + - (void)dismissPlacePage { [self.placePageVC.view removeFromSuperview]; [self.placePageVC willMoveToParentViewController:nil]; [self.placePageVC removeFromParentViewController]; self.placePageVC = nil; self.placePageContainer.hidden = YES; + self.controlsManager.trafficButtonHidden = NO; } - (void)onMapObjectDeselected:(bool)switchFullScreenMode @@ -136,19 +155,9 @@ NSString * const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; - (void)onMapObjectSelected { [self dismissPlacePage]; - self.placePageVC = (PlacePageViewController *)[[UIStoryboard instance:MWMStoryboardPlacePage] instantiateInitialViewController]; - self.placePageVC.placePageData = [[PlacePageData alloc] init]; - [self addChildViewController:self.placePageVC]; - self.placePageContainer.hidden = NO; - [self.placePageContainer addSubview:self.placePageVC.view]; - self.placePageVC.view.translatesAutoresizingMaskIntoConstraints = NO; - [NSLayoutConstraint activateConstraints:@[ - [self.placePageVC.view.topAnchor constraintEqualToAnchor:self.placePageContainer.safeAreaLayoutGuide.topAnchor], - [self.placePageVC.view.leftAnchor constraintEqualToAnchor:self.placePageContainer.leftAnchor], - [self.placePageVC.view.bottomAnchor constraintEqualToAnchor:self.placePageContainer.bottomAnchor], - [self.placePageVC.view.rightAnchor constraintEqualToAnchor:self.placePageContainer.rightAnchor] - ]]; - [self.placePageVC didMoveToParentViewController:self]; + [[MWMNetworkPolicy sharedPolicy] callOnlineApi:^(BOOL) { + [self showPlacePage]; + }]; } - (void)onMapObjectUpdated { @@ -742,11 +751,6 @@ NSString * const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; MWMEditorViewController * dvc = segue.destinationViewController; [dvc setFeatureToEdit:static_cast>(sender).featureId]; } - else if ([segue.identifier isEqualToString:kPP2BookmarkEditingSegue]) - { -// MWMEditBookmarkController * dvc = segue.destinationViewController; -// dvc.data = static_cast(sender); - } else if ([segue.identifier isEqualToString:kDownloaderSegue]) { MWMDownloadMapsViewController * dvc = segue.destinationViewController; diff --git a/iphone/Maps/Core/Search/MWMSearch.h b/iphone/Maps/Core/Search/MWMSearch.h index c1f357abb4..c0864c98f3 100644 --- a/iphone/Maps/Core/Search/MWMSearch.h +++ b/iphone/Maps/Core/Search/MWMSearch.h @@ -1,4 +1,5 @@ #import +#import #import "MWMHotelParams.h" #import "MWMSearchItemType.h" diff --git a/iphone/Maps/Core/Search/MWMSearch.mm b/iphone/Maps/Core/Search/MWMSearch.mm index 5be29766c7..c58eab9281 100644 --- a/iphone/Maps/Core/Search/MWMSearch.mm +++ b/iphone/Maps/Core/Search/MWMSearch.mm @@ -7,6 +7,7 @@ #include #include "partners_api/ads_engine.hpp" +#include "platform/network_policy.hpp" namespace { diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj index 1070f0fb6b..1edd65ad15 100644 --- a/iphone/Maps/Maps.xcodeproj/project.pbxproj +++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj @@ -9,13 +9,11 @@ /* Begin PBXBuildFile section */ 1DA7908820762CEB008BDD6B /* libopen_location_code.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DA7908920762CEB008BDD6B /* libopen_location_code.a */; }; 1DFA2F6A20D3B57400FB2C66 /* UIColor+PartnerColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DFA2F6920D3B57400FB2C66 /* UIColor+PartnerColor.m */; }; - 33010DB321B7E14700925411 /* MWMPlaceDescriptionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 33010DB221B7E14700925411 /* MWMPlaceDescriptionCell.xib */; }; 3304306D21D4EAFB00317CA3 /* SearchCategoryCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3304306C21D4EAFB00317CA3 /* SearchCategoryCell.swift */; }; 33046832219C57180041F3A8 /* CategorySettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33046831219C57180041F3A8 /* CategorySettingsViewController.swift */; }; 33046836219C5A4E0041F3A8 /* CategorySettings.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 33046835219C5A4E0041F3A8 /* CategorySettings.storyboard */; }; 330473EA21F7440C00DC4AEA /* MWMHotelParams.mm in Sources */ = {isa = PBXBuildFile; fileRef = 330473E921F7440C00DC4AEA /* MWMHotelParams.mm */; }; 331630D12191D74B00BB91A9 /* TagSectionHeaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 331630D02191D74B00BB91A9 /* TagSectionHeaderView.swift */; }; - 331922AF21BAD29900D4AAC5 /* MWMPlaceDescriptionCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 331922AE21BAD29900D4AAC5 /* MWMPlaceDescriptionCell.m */; }; 3358607E217632A2006D11F2 /* BookmarksSharingViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3358607D217632A2006D11F2 /* BookmarksSharingViewController.swift */; }; 33603C85219F0F6300B11FFE /* SharingPropertiesViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33603C84219F0F6300B11FFE /* SharingPropertiesViewController.swift */; }; 337F98A321D37B5800C8AC27 /* SearchHistoryViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 337F98A021D37B5700C8AC27 /* SearchHistoryViewController.xib */; }; @@ -104,7 +102,6 @@ 344BEAF31F66BDC30045DC45 /* RatingSummaryView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 344BEAF01F66BDC30045DC45 /* RatingSummaryView.swift */; }; 344BEAF61F66BDC30045DC45 /* RatingSummaryViewSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 344BEAF11F66BDC30045DC45 /* RatingSummaryViewSettings.swift */; }; 344D63181E795A3C006F17CB /* SystemConfiguration.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 344D63161E795A2D006F17CB /* SystemConfiguration.framework */; }; - 3451F4EE1F026DAF00A981F2 /* PlacePageTaxiCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3451F4EC1F026DAF00A981F2 /* PlacePageTaxiCell.swift */; }; 3454D7B91E07F045004AF2AD /* CALayer+RuntimeAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 3454D79A1E07F045004AF2AD /* CALayer+RuntimeAttributes.m */; }; 3454D7BC1E07F045004AF2AD /* CLLocation+Mercator.mm in Sources */ = {isa = PBXBuildFile; fileRef = 3454D79C1E07F045004AF2AD /* CLLocation+Mercator.mm */; }; 3454D7BF1E07F045004AF2AD /* DateComponentsFormatter+ETA.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3454D79D1E07F045004AF2AD /* DateComponentsFormatter+ETA.swift */; }; @@ -293,8 +290,6 @@ 34D3B04F1E38A20C004100F9 /* Bundle+Init.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34D3B04D1E38A20C004100F9 /* Bundle+Init.swift */; }; 34E50DD81F6FCAB1008EED49 /* UGCSummaryRatingCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34E50DD51F6FCAB1008EED49 /* UGCSummaryRatingCell.swift */; }; 34E50DDB1F6FCAB1008EED49 /* UGCSummaryRatingCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34E50DD61F6FCAB1008EED49 /* UGCSummaryRatingCell.xib */; }; - 34E50DE01F6FCBA1008EED49 /* UGCAddReviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34E50DDD1F6FCBA1008EED49 /* UGCAddReviewCell.swift */; }; - 34E50DE31F6FCBA1008EED49 /* UGCAddReviewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34E50DDE1F6FCBA1008EED49 /* UGCAddReviewCell.xib */; }; 34E50DF01F6FCC41008EED49 /* UGCYourReviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34E50DED1F6FCC41008EED49 /* UGCYourReviewCell.swift */; }; 34E50DF31F6FCC41008EED49 /* UGCYourReviewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 34E50DEE1F6FCC41008EED49 /* UGCYourReviewCell.xib */; }; 34E50DF81F6FCC96008EED49 /* UGCReviewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34E50DF51F6FCC96008EED49 /* UGCReviewCell.swift */; }; @@ -305,7 +300,6 @@ 34E7761F1F14DB48003040B3 /* PlacePageArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34E7761D1F14DB48003040B3 /* PlacePageArea.swift */; }; 34E776331F15FAC2003040B3 /* MWMPlacePageManagerHelper.mm in Sources */ = {isa = PBXBuildFile; fileRef = 34E776311F15FAC2003040B3 /* MWMPlacePageManagerHelper.mm */; }; 34EF94291C05A6F30050B714 /* MWMSegue.m in Sources */ = {isa = PBXBuildFile; fileRef = F607C18D1C047FDC00B53A87 /* MWMSegue.m */; }; - 34F1ADD31F6BC09E001CE79D /* PPPReview.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34F1ADD11F6BC09E001CE79D /* PPPReview.swift */; }; 34F4072C1E9E1AFF00E57AC0 /* Banner.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34F4071D1E9E1AFF00E57AC0 /* Banner.swift */; }; 34F4072F1E9E1AFF00E57AC0 /* BannersCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34F4071E1E9E1AFF00E57AC0 /* BannersCache.swift */; }; 34F407321E9E1AFF00E57AC0 /* BannerType.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34F4071F1E9E1AFF00E57AC0 /* BannerType.swift */; }; @@ -375,8 +369,6 @@ 47289E5A2212DFFF002ABFC0 /* EditOnWebAlertViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47289E582212DFFF002ABFC0 /* EditOnWebAlertViewController.swift */; }; 47289E5B2212DFFF002ABFC0 /* EditOnWebAlertViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 47289E592212DFFF002ABFC0 /* EditOnWebAlertViewController.xib */; }; 4728F69322CF89A400E00028 /* GradientView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4728F69222CF89A400E00028 /* GradientView.swift */; }; - 472C40E4232A7B9F009AA777 /* CatalogSingleItemCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472C40E2232A7B9F009AA777 /* CatalogSingleItemCell.swift */; }; - 472C40E5232A7B9F009AA777 /* CatalogSingleItemCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 472C40E3232A7B9F009AA777 /* CatalogSingleItemCell.xib */; }; 472E3F472146BCD30020E412 /* SubscriptionManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472E3F462146BCD30020E412 /* SubscriptionManager.swift */; }; 472E3F4A2146C4CD0020E412 /* MWMPurchaseManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = 472E3F492146C4CD0020E412 /* MWMPurchaseManager.mm */; }; 472E3F4C2147D5700020E412 /* Subscription.swift in Sources */ = {isa = PBXBuildFile; fileRef = 472E3F4B2147D5700020E412 /* Subscription.swift */; }; @@ -440,6 +432,8 @@ 47C8789A22DF622400A772DA /* SubscriptionFailViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 47C8789822DF622400A772DA /* SubscriptionFailViewController.xib */; }; 47C8789D22DF662700A772DA /* SubscriptionExpiredViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47C8789B22DF662700A772DA /* SubscriptionExpiredViewController.swift */; }; 47C8789E22DF662700A772DA /* SubscriptionExpiredViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 47C8789C22DF662700A772DA /* SubscriptionExpiredViewController.xib */; }; + 47CF2E6123BA090400D11C30 /* FacilitiesController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47CF2E6023BA090400D11C30 /* FacilitiesController.swift */; }; + 47CF2E6323BA0DD500D11C30 /* CopyLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47CF2E6223BA0DD500D11C30 /* CopyLabel.swift */; }; 47D0026721999DA900F651A2 /* PendingTransactionsHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47D0026621999DA900F651A2 /* PendingTransactionsHandler.swift */; }; 47DF72B922520CE20004AB10 /* MWMRoutingOptions.mm in Sources */ = {isa = PBXBuildFile; fileRef = 474902D9224A54EC008D71E0 /* MWMRoutingOptions.mm */; }; 47DF72BB225356BF0004AB10 /* DrivingOptions.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 47DF72BA225356BF0004AB10 /* DrivingOptions.storyboard */; }; @@ -704,27 +698,17 @@ F653CE121C6DEC8E00A453F1 /* MWMDropDown.m in Sources */ = {isa = PBXBuildFile; fileRef = F653CE101C6DEB5A00A453F1 /* MWMDropDown.m */; }; F653CE191C71F62700A453F1 /* MWMAddPlaceNavigationBar.mm in Sources */ = {isa = PBXBuildFile; fileRef = F653CE151C71F60200A453F1 /* MWMAddPlaceNavigationBar.mm */; }; F6550C1F1FD81B3800352D88 /* RatingSummaryView+DefaultConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6550C1D1FD81B3800352D88 /* RatingSummaryView+DefaultConfig.swift */; }; - F6558DA21E642CC0002203AE /* MWMFacilitiesController.m in Sources */ = {isa = PBXBuildFile; fileRef = F6558DA01E642CC0002203AE /* MWMFacilitiesController.m */; }; F655C027207278300048A241 /* DiscoveryMoreCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F655C026207278300048A241 /* DiscoveryMoreCell.swift */; }; F655C02920727A630048A241 /* DiscoveryMoreCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F655C02820727A630048A241 /* DiscoveryMoreCell.xib */; }; F65D1E1A20E4F11600FE31DD /* ugc_migration in Resources */ = {isa = PBXBuildFile; fileRef = F65D1E1920E4F11600FE31DD /* ugc_migration */; }; F660DEE51EAF4F59004DC056 /* MWMLocationManager+SpeedAndAltitude.swift in Sources */ = {isa = PBXBuildFile; fileRef = F660DEE31EAF4F59004DC056 /* MWMLocationManager+SpeedAndAltitude.swift */; }; - F6664BFA1E6459CB00E703C2 /* PPFacilityCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6664BF71E6459CB00E703C2 /* PPFacilityCell.swift */; }; - F6664BFD1E6459CB00E703C2 /* PPFacilityCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6664BF81E6459CB00E703C2 /* PPFacilityCell.xib */; }; - F6664C021E6459DA00E703C2 /* PPReviewHeaderCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6664BFF1E6459DA00E703C2 /* PPReviewHeaderCell.swift */; }; - F6664C051E6459DA00E703C2 /* PPReviewHeaderCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6664C001E6459DA00E703C2 /* PPReviewHeaderCell.xib */; }; - F6664C131E645A4100E703C2 /* MWMPPReviewCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6664C101E645A4100E703C2 /* MWMPPReviewCell.mm */; }; - F6664C161E645A4100E703C2 /* MWMPPReviewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6664C111E645A4100E703C2 /* MWMPPReviewCell.xib */; }; + F6664BFA1E6459CB00E703C2 /* FacilityCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6664BF71E6459CB00E703C2 /* FacilityCell.swift */; }; + F6664BFD1E6459CB00E703C2 /* FacilityCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6664BF81E6459CB00E703C2 /* FacilityCell.xib */; }; F6791B141C43DF0B007A8A6E /* MWMStartButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F6791B121C43DEA7007A8A6E /* MWMStartButton.m */; }; - F682249B1E5B104600BC1C18 /* PPHotelDescriptionCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F68224991E5B104600BC1C18 /* PPHotelDescriptionCell.swift */; }; - F682249F1E5B105900BC1C18 /* PPHotelDescriptionCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F682249D1E5B105900BC1C18 /* PPHotelDescriptionCell.xib */; }; F68BDF061EEA9A830009BB81 /* MyTargetSDK.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = F68BDF041EEA9A830009BB81 /* MyTargetSDK.framework */; }; F69018BD1E9F7CB600B3C10B /* MWMAutoupdateController.xib in Resources */ = {isa = PBXBuildFile; fileRef = F69018BB1E9F7CB600B3C10B /* MWMAutoupdateController.xib */; }; F692F3831EA0FAF5001E82EB /* MWMAutoupdateController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F69018B71E9E601400B3C10B /* MWMAutoupdateController.mm */; }; F69739B21FD197DB00FDA07D /* MWMDiscoveryTableManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = F69739B01FD197DB00FDA07D /* MWMDiscoveryTableManager.mm */; }; - F69CE8D61E5C49B4002B5881 /* PPHotelCarouselCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F69CE8D41E5C49B4002B5881 /* PPHotelCarouselCell.swift */; }; - F69CE8DA1E5C5088002B5881 /* PPHotelCarouselCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F69CE8D81E5C5088002B5881 /* PPHotelCarouselCell.xib */; }; - F69CE8DE1E5C51AB002B5881 /* CarouselElement.xib in Resources */ = {isa = PBXBuildFile; fileRef = F69CE8DC1E5C51AB002B5881 /* CarouselElement.xib */; }; F6A2184A1CA3F26800BE2CC6 /* MWMEditorViralActivityItem.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6A218481CA3F26800BE2CC6 /* MWMEditorViralActivityItem.mm */; }; F6BD1D211CA412920047B8E8 /* MWMOsmAuthAlert.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6BD1D1F1CA412920047B8E8 /* MWMOsmAuthAlert.mm */; }; F6BD1D241CA412E40047B8E8 /* MWMOsmAuthAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6BD1D221CA412E30047B8E8 /* MWMOsmAuthAlert.xib */; }; @@ -732,8 +716,6 @@ F6C3A1B221AC22810060EEC8 /* Alert 5.m4a in Resources */ = {isa = PBXBuildFile; fileRef = F6C3A1B121AC22810060EEC8 /* Alert 5.m4a */; }; F6D67CDC2062B9C00032FD38 /* BCCreateCategoryAlert.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6D67CDB2062B9C00032FD38 /* BCCreateCategoryAlert.swift */; }; F6D67CDE2062BBA60032FD38 /* MWMBCCreateCategoryAlert.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6D67CDD2062BBA60032FD38 /* MWMBCCreateCategoryAlert.xib */; }; - F6D67CE9206929590032FD38 /* PPPSearchSimilarButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6D67CE8206929590032FD38 /* PPPSearchSimilarButton.swift */; }; - F6D67CEB2069318B0032FD38 /* PPPSearchSimilarButton.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6D67CEA2069318B0032FD38 /* PPPSearchSimilarButton.xib */; }; F6E2FD561E097BA00083EBEC /* MWMMapDownloaderButtonTableViewCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FC021E097B9F0083EBEC /* MWMMapDownloaderButtonTableViewCell.m */; }; F6E2FD591E097BA00083EBEC /* MWMMapDownloaderButtonTableViewCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FC031E097B9F0083EBEC /* MWMMapDownloaderButtonTableViewCell.xib */; }; F6E2FD5C1E097BA00083EBEC /* MWMMapDownloaderCellHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FC051E097B9F0083EBEC /* MWMMapDownloaderCellHeader.m */; }; @@ -785,42 +767,16 @@ F6E2FE311E097BA00083EBEC /* MWMStreetEditorViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FC871E097B9F0083EBEC /* MWMStreetEditorViewController.mm */; }; F6E2FE431E097BA00083EBEC /* MWMDirectionView.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FC951E097B9F0083EBEC /* MWMDirectionView.mm */; }; F6E2FE461E097BA00083EBEC /* MWMDirectionView.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FC961E097B9F0083EBEC /* MWMDirectionView.xib */; }; - F6E2FE491E097BA00083EBEC /* MWMPlacePageData.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FC981E097B9F0083EBEC /* MWMPlacePageData.mm */; }; F6E2FE4C1E097BA00083EBEC /* MWMPlacePageManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FC9A1E097B9F0083EBEC /* MWMPlacePageManager.mm */; }; F6E2FE4F1E097BA00083EBEC /* MWMActionBarButton.m in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FC9F1E097B9F0083EBEC /* MWMActionBarButton.m */; }; F6E2FE521E097BA00083EBEC /* MWMActionBarButton.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCA01E097B9F0083EBEC /* MWMActionBarButton.xib */; }; - F6E2FE551E097BA00083EBEC /* MWMPlacePageActionBar.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCA21E097B9F0083EBEC /* MWMPlacePageActionBar.mm */; }; - F6E2FE581E097BA00083EBEC /* MWMPlacePageActionBar.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCA31E097B9F0083EBEC /* MWMPlacePageActionBar.xib */; }; - F6E2FE611E097BA00083EBEC /* MWMBookmarkCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCAB1E097B9F0083EBEC /* MWMBookmarkCell.mm */; }; - F6E2FE641E097BA00083EBEC /* MWMBookmarkCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCAC1E097B9F0083EBEC /* MWMBookmarkCell.xib */; }; - F6E2FE671E097BA00083EBEC /* MWMPlacePageButtonCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCB11E097B9F0083EBEC /* MWMPlacePageButtonCell.mm */; }; - F6E2FE6A1E097BA00083EBEC /* MWMPlacePageButtonCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCB21E097B9F0083EBEC /* MWMPlacePageButtonCell.xib */; }; F6E2FE6D1E097BA00083EBEC /* _MWMOHHeaderCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCB41E097B9F0083EBEC /* _MWMOHHeaderCell.xib */; }; F6E2FE701E097BA00083EBEC /* _MWMOHSubCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCB51E097B9F0083EBEC /* _MWMOHSubCell.xib */; }; F6E2FE761E097BA00083EBEC /* MWMOpeningHoursCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCB81E097B9F0083EBEC /* MWMOpeningHoursCell.xib */; }; - F6E2FE791E097BA00083EBEC /* MWMOpeningHoursLayoutHelper.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCBA1E097B9F0083EBEC /* MWMOpeningHoursLayoutHelper.mm */; }; F6E2FE7C1E097BA00083EBEC /* MWMPlacePageOpeningHoursCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCBC1E097B9F0083EBEC /* MWMPlacePageOpeningHoursCell.mm */; }; F6E2FE7F1E097BA00083EBEC /* MWMPlacePageOpeningHoursCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCBD1E097B9F0083EBEC /* MWMPlacePageOpeningHoursCell.xib */; }; F6E2FE821E097BA00083EBEC /* MWMPlacePageOpeningHoursDayView.m in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCBF1E097B9F0083EBEC /* MWMPlacePageOpeningHoursDayView.m */; }; F6E2FE851E097BA00083EBEC /* MWMPlacePageOpeningHoursWeekDayView.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCC01E097B9F0083EBEC /* MWMPlacePageOpeningHoursWeekDayView.xib */; }; - F6E2FE881E097BA00083EBEC /* MWMPlacePageRegularCell.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCC31E097B9F0083EBEC /* MWMPlacePageRegularCell.mm */; }; - F6E2FE8B1E097BA00083EBEC /* MWMPlacePageInfoCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCC41E097B9F0083EBEC /* MWMPlacePageInfoCell.xib */; }; - F6E2FE8E1E097BA00083EBEC /* MWMPlacePageLinkCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCC51E097B9F0083EBEC /* MWMPlacePageLinkCell.xib */; }; - F6E2FE941E097BA00083EBEC /* PlacePageTaxiCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCC91E097B9F0083EBEC /* PlacePageTaxiCell.xib */; }; - F6E2FE971E097BA00083EBEC /* CopyLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCCB1E097B9F0083EBEC /* CopyLabel.m */; }; - F6E2FE9A1E097BA00083EBEC /* MWMiPadPlacePageLayoutImpl.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCCD1E097B9F0083EBEC /* MWMiPadPlacePageLayoutImpl.mm */; }; - F6E2FE9D1E097BA00083EBEC /* MWMiPhonePlacePageLayoutImpl.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCCF1E097B9F0083EBEC /* MWMiPhonePlacePageLayoutImpl.mm */; }; - F6E2FEA01E097BA00083EBEC /* MWMPlacePageLayout.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCD11E097B9F0083EBEC /* MWMPlacePageLayout.mm */; }; - F6E2FEA31E097BA00083EBEC /* MWMPPView.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCD51E097B9F0083EBEC /* MWMPPView.mm */; }; - F6E2FEA61E097BA00083EBEC /* MWMPPView.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCD61E097B9F0083EBEC /* MWMPPView.xib */; }; - F6E2FEA91E097BA00083EBEC /* _MWMPPPAddress.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCD81E097B9F0083EBEC /* _MWMPPPAddress.xib */; }; - F6E2FEAC1E097BA00083EBEC /* PPPReview.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCD91E097B9F0083EBEC /* PPPReview.xib */; }; - F6E2FEAF1E097BA00083EBEC /* _MWMPPPExternalTitle.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCDA1E097B9F0083EBEC /* _MWMPPPExternalTitle.xib */; }; - F6E2FEB21E097BA00083EBEC /* _MWMPPPSchedule.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCDB1E097B9F0083EBEC /* _MWMPPPSchedule.xib */; }; - F6E2FEB51E097BA00083EBEC /* _MWMPPPSpace.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCDC1E097B9F0083EBEC /* _MWMPPPSpace.xib */; }; - F6E2FEB81E097BA00083EBEC /* _MWMPPPSubtitle.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCDD1E097B9F0083EBEC /* _MWMPPPSubtitle.xib */; }; - F6E2FEBB1E097BA00083EBEC /* _MWMPPPTitle.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCDE1E097B9F0083EBEC /* _MWMPPPTitle.xib */; }; - F6E2FEBE1E097BA00083EBEC /* MWMPPPreviewLayoutHelper.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCE01E097B9F0083EBEC /* MWMPPPreviewLayoutHelper.mm */; }; F6E2FED01E097BA00083EBEC /* MWMSearchFilterViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCEE1E097B9F0083EBEC /* MWMSearchFilterViewController.mm */; }; F6E2FED31E097BA00083EBEC /* MWMSearchHotelsFilterViewController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCF11E097B9F0083EBEC /* MWMSearchHotelsFilterViewController.mm */; }; F6E2FED61E097BA00083EBEC /* MWMSearchChangeModeView.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCF31E097B9F0083EBEC /* MWMSearchChangeModeView.mm */; }; @@ -895,15 +851,12 @@ 1DFA2F6E20D3CA9200FB2C66 /* UIColorRoutines.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UIColorRoutines.h; sourceTree = ""; }; 28A0AB4B0D9B1048005BE974 /* Maps_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; lineEnding = 0; path = Maps_Prefix.pch; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objc; }; 29B97316FDCFA39411CA2CEA /* main.mm */ = {isa = PBXFileReference; explicitFileType = sourcecode.cpp.objcpp; fileEncoding = 4; path = main.mm; sourceTree = ""; }; - 33010DB221B7E14700925411 /* MWMPlaceDescriptionCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MWMPlaceDescriptionCell.xib; sourceTree = ""; }; 3304306C21D4EAFB00317CA3 /* SearchCategoryCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchCategoryCell.swift; sourceTree = ""; }; 33046831219C57180041F3A8 /* CategorySettingsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CategorySettingsViewController.swift; sourceTree = ""; }; 33046835219C5A4E0041F3A8 /* CategorySettings.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = CategorySettings.storyboard; sourceTree = ""; }; 330473E821F7440C00DC4AEA /* MWMHotelParams.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMHotelParams.h; sourceTree = ""; }; 330473E921F7440C00DC4AEA /* MWMHotelParams.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMHotelParams.mm; sourceTree = ""; }; 331630D02191D74B00BB91A9 /* TagSectionHeaderView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TagSectionHeaderView.swift; sourceTree = ""; }; - 331922AD21BAD29900D4AAC5 /* MWMPlaceDescriptionCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMPlaceDescriptionCell.h; sourceTree = ""; }; - 331922AE21BAD29900D4AAC5 /* MWMPlaceDescriptionCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MWMPlaceDescriptionCell.m; sourceTree = ""; }; 3358607D217632A2006D11F2 /* BookmarksSharingViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksSharingViewController.swift; sourceTree = ""; }; 33603C84219F0F6300B11FFE /* SharingPropertiesViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SharingPropertiesViewController.swift; sourceTree = ""; }; 337F98A021D37B5700C8AC27 /* SearchHistoryViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchHistoryViewController.xib; sourceTree = ""; }; @@ -1030,7 +983,6 @@ 344BEAF11F66BDC30045DC45 /* RatingSummaryViewSettings.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RatingSummaryViewSettings.swift; sourceTree = ""; }; 344D63161E795A2D006F17CB /* SystemConfiguration.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SystemConfiguration.framework; path = System/Library/Frameworks/SystemConfiguration.framework; sourceTree = SDKROOT; }; 345050211E028B8000A8DC59 /* Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "Bridging-Header.h"; sourceTree = ""; }; - 3451F4EC1F026DAF00A981F2 /* PlacePageTaxiCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlacePageTaxiCell.swift; sourceTree = ""; }; 3454D7991E07F045004AF2AD /* CALayer+RuntimeAttributes.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CALayer+RuntimeAttributes.h"; sourceTree = ""; }; 3454D79A1E07F045004AF2AD /* CALayer+RuntimeAttributes.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "CALayer+RuntimeAttributes.m"; sourceTree = ""; }; 3454D79B1E07F045004AF2AD /* CLLocation+Mercator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "CLLocation+Mercator.h"; sourceTree = ""; }; @@ -1238,7 +1190,6 @@ 34ABA62B1C2D57D500FE1BEC /* MWMInputPasswordValidator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMInputPasswordValidator.m; sourceTree = ""; }; 34ABA62E1C2D58F300FE1BEC /* MWMInputEmailValidator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMInputEmailValidator.h; sourceTree = ""; }; 34ABA62F1C2D58F300FE1BEC /* MWMInputEmailValidator.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMInputEmailValidator.m; sourceTree = ""; }; - 34AC7F901F06538B0050DE2B /* MWMPlacePageTaxiProvider.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMPlacePageTaxiProvider.h; sourceTree = ""; }; 34AC8FC71EFC01F500E7F910 /* MWMRoutePoint.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMRoutePoint.mm; sourceTree = ""; }; 34AC8FC81EFC01F500E7F910 /* MWMRoutePoint+CPP.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "MWMRoutePoint+CPP.h"; sourceTree = ""; }; 34AC8FD91EFC062400E7F910 /* UILabel+NumberOfVisibleLines.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "UILabel+NumberOfVisibleLines.swift"; sourceTree = ""; }; @@ -1309,8 +1260,6 @@ 34DFCD981F87ED5600AE2672 /* MWMReviewProtocol.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMReviewProtocol.h; sourceTree = ""; }; 34E50DD51F6FCAB1008EED49 /* UGCSummaryRatingCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UGCSummaryRatingCell.swift; sourceTree = ""; }; 34E50DD61F6FCAB1008EED49 /* UGCSummaryRatingCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UGCSummaryRatingCell.xib; sourceTree = ""; }; - 34E50DDD1F6FCBA1008EED49 /* UGCAddReviewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UGCAddReviewCell.swift; sourceTree = ""; }; - 34E50DDE1F6FCBA1008EED49 /* UGCAddReviewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UGCAddReviewCell.xib; sourceTree = ""; }; 34E50DED1F6FCC41008EED49 /* UGCYourReviewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UGCYourReviewCell.swift; sourceTree = ""; }; 34E50DEE1F6FCC41008EED49 /* UGCYourReviewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = UGCYourReviewCell.xib; sourceTree = ""; }; 34E50DF51F6FCC96008EED49 /* UGCReviewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = UGCReviewCell.swift; sourceTree = ""; }; @@ -1324,7 +1273,6 @@ 34E7761D1F14DB48003040B3 /* PlacePageArea.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PlacePageArea.swift; sourceTree = ""; }; 34E776301F15FAC2003040B3 /* MWMPlacePageManagerHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPlacePageManagerHelper.h; sourceTree = ""; }; 34E776311F15FAC2003040B3 /* MWMPlacePageManagerHelper.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMPlacePageManagerHelper.mm; sourceTree = ""; }; - 34F1ADD11F6BC09E001CE79D /* PPPReview.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PPPReview.swift; sourceTree = ""; }; 34F4071D1E9E1AFF00E57AC0 /* Banner.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Banner.swift; sourceTree = ""; }; 34F4071E1E9E1AFF00E57AC0 /* BannersCache.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BannersCache.swift; sourceTree = ""; }; 34F4071F1E9E1AFF00E57AC0 /* BannerType.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BannerType.swift; sourceTree = ""; }; @@ -1469,8 +1417,6 @@ 47289E582212DFFF002ABFC0 /* EditOnWebAlertViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EditOnWebAlertViewController.swift; sourceTree = ""; }; 47289E592212DFFF002ABFC0 /* EditOnWebAlertViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = EditOnWebAlertViewController.xib; sourceTree = ""; }; 4728F69222CF89A400E00028 /* GradientView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = GradientView.swift; path = CustomViews/GradientView.swift; sourceTree = ""; }; - 472C40E2232A7B9F009AA777 /* CatalogSingleItemCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CatalogSingleItemCell.swift; sourceTree = ""; }; - 472C40E3232A7B9F009AA777 /* CatalogSingleItemCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = CatalogSingleItemCell.xib; sourceTree = ""; }; 472E3F462146BCD30020E412 /* SubscriptionManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscriptionManager.swift; sourceTree = ""; }; 472E3F482146C4CD0020E412 /* MWMPurchaseManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMPurchaseManager.h; sourceTree = ""; }; 472E3F492146C4CD0020E412 /* MWMPurchaseManager.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMPurchaseManager.mm; sourceTree = ""; }; @@ -1554,6 +1500,8 @@ 47C8789822DF622400A772DA /* SubscriptionFailViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SubscriptionFailViewController.xib; sourceTree = ""; }; 47C8789B22DF662700A772DA /* SubscriptionExpiredViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SubscriptionExpiredViewController.swift; sourceTree = ""; }; 47C8789C22DF662700A772DA /* SubscriptionExpiredViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = SubscriptionExpiredViewController.xib; sourceTree = ""; }; + 47CF2E6023BA090400D11C30 /* FacilitiesController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FacilitiesController.swift; sourceTree = ""; }; + 47CF2E6223BA0DD500D11C30 /* CopyLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CopyLabel.swift; sourceTree = ""; }; 47D0026621999DA900F651A2 /* PendingTransactionsHandler.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PendingTransactionsHandler.swift; sourceTree = ""; }; 47DF72BA225356BF0004AB10 /* DrivingOptions.storyboard */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; path = DrivingOptions.storyboard; sourceTree = ""; }; 47E3C71F21108E9F008B3B27 /* BookmarksLoadedViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksLoadedViewController.swift; sourceTree = ""; }; @@ -1879,26 +1827,16 @@ F653CE151C71F60200A453F1 /* MWMAddPlaceNavigationBar.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; path = MWMAddPlaceNavigationBar.mm; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; F653CE171C71F62400A453F1 /* MWMAddPlaceNavigationBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMAddPlaceNavigationBar.xib; sourceTree = ""; }; F6550C1D1FD81B3800352D88 /* RatingSummaryView+DefaultConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "RatingSummaryView+DefaultConfig.swift"; sourceTree = ""; }; - F6558D9F1E642CC0002203AE /* MWMFacilitiesController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMFacilitiesController.h; sourceTree = ""; }; - F6558DA01E642CC0002203AE /* MWMFacilitiesController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMFacilitiesController.m; sourceTree = ""; }; F655C026207278300048A241 /* DiscoveryMoreCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiscoveryMoreCell.swift; sourceTree = ""; }; F655C02820727A630048A241 /* DiscoveryMoreCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = DiscoveryMoreCell.xib; sourceTree = ""; }; F6588E2A1B15C26700EE1E58 /* MWMTextView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMTextView.h; sourceTree = ""; }; F6588E2B1B15C26700EE1E58 /* MWMTextView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMTextView.m; sourceTree = ""; }; F65D1E1920E4F11600FE31DD /* ugc_migration */ = {isa = PBXFileReference; lastKnownFileType = folder; name = ugc_migration; path = ../../data/ugc_migration; sourceTree = ""; }; F660DEE31EAF4F59004DC056 /* MWMLocationManager+SpeedAndAltitude.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "MWMLocationManager+SpeedAndAltitude.swift"; sourceTree = ""; }; - F6664BF71E6459CB00E703C2 /* PPFacilityCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PPFacilityCell.swift; sourceTree = ""; }; - F6664BF81E6459CB00E703C2 /* PPFacilityCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PPFacilityCell.xib; sourceTree = ""; }; - F6664BFF1E6459DA00E703C2 /* PPReviewHeaderCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PPReviewHeaderCell.swift; sourceTree = ""; }; - F6664C001E6459DA00E703C2 /* PPReviewHeaderCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PPReviewHeaderCell.xib; sourceTree = ""; }; - F6664C0F1E645A4100E703C2 /* MWMPPReviewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPPReviewCell.h; sourceTree = ""; }; - F6664C101E645A4100E703C2 /* MWMPPReviewCell.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMPPReviewCell.mm; sourceTree = ""; }; - F6664C111E645A4100E703C2 /* MWMPPReviewCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMPPReviewCell.xib; sourceTree = ""; }; + F6664BF71E6459CB00E703C2 /* FacilityCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FacilityCell.swift; sourceTree = ""; }; + F6664BF81E6459CB00E703C2 /* FacilityCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = FacilityCell.xib; sourceTree = ""; }; F6791B111C43DEA7007A8A6E /* MWMStartButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMStartButton.h; sourceTree = ""; }; F6791B121C43DEA7007A8A6E /* MWMStartButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMStartButton.m; sourceTree = ""; }; - F68224991E5B104600BC1C18 /* PPHotelDescriptionCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PPHotelDescriptionCell.swift; sourceTree = ""; }; - F682249D1E5B105900BC1C18 /* PPHotelDescriptionCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PPHotelDescriptionCell.xib; sourceTree = ""; }; - F68224A11E5B1B1A00BC1C18 /* MWMPlacePageButtonsProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPlacePageButtonsProtocol.h; sourceTree = ""; }; F68BDF041EEA9A830009BB81 /* MyTargetSDK.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = MyTargetSDK.framework; sourceTree = ""; }; F69018B61E9E601400B3C10B /* MWMAutoupdateController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMAutoupdateController.h; sourceTree = ""; }; F69018B71E9E601400B3C10B /* MWMAutoupdateController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMAutoupdateController.mm; sourceTree = ""; }; @@ -1906,9 +1844,6 @@ F69739AF1FD197DB00FDA07D /* MWMDiscoveryTableManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMDiscoveryTableManager.h; sourceTree = ""; }; F69739B01FD197DB00FDA07D /* MWMDiscoveryTableManager.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMDiscoveryTableManager.mm; sourceTree = ""; }; F69739B51FD19D9900FDA07D /* MWMDiscoveryTapDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MWMDiscoveryTapDelegate.h; sourceTree = ""; }; - F69CE8D41E5C49B4002B5881 /* PPHotelCarouselCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PPHotelCarouselCell.swift; sourceTree = ""; }; - F69CE8D81E5C5088002B5881 /* PPHotelCarouselCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PPHotelCarouselCell.xib; sourceTree = ""; }; - F69CE8DC1E5C51AB002B5881 /* CarouselElement.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = CarouselElement.xib; sourceTree = ""; }; F6A218471CA3F26800BE2CC6 /* MWMEditorViralActivityItem.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMEditorViralActivityItem.h; sourceTree = ""; }; F6A218481CA3F26800BE2CC6 /* MWMEditorViralActivityItem.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMEditorViralActivityItem.mm; sourceTree = ""; }; F6BBF2C41B4FFB72000CF8E2 /* MWMLocationAlert.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMLocationAlert.h; sourceTree = ""; }; @@ -1920,8 +1855,6 @@ F6C3A1B121AC22810060EEC8 /* Alert 5.m4a */ = {isa = PBXFileReference; lastKnownFileType = file; path = "Alert 5.m4a"; sourceTree = ""; }; F6D67CDB2062B9C00032FD38 /* BCCreateCategoryAlert.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BCCreateCategoryAlert.swift; sourceTree = ""; }; F6D67CDD2062BBA60032FD38 /* MWMBCCreateCategoryAlert.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MWMBCCreateCategoryAlert.xib; sourceTree = ""; }; - F6D67CE8206929590032FD38 /* PPPSearchSimilarButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PPPSearchSimilarButton.swift; sourceTree = ""; }; - F6D67CEA2069318B0032FD38 /* PPPSearchSimilarButton.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = PPPSearchSimilarButton.xib; sourceTree = ""; }; F6DF5F321CD1136800A87154 /* LocaleTranslator.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = LocaleTranslator.h; sourceTree = ""; }; F6E2FC011E097B9F0083EBEC /* MWMMapDownloaderButtonTableViewCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMMapDownloaderButtonTableViewCell.h; sourceTree = ""; }; F6E2FC021E097B9F0083EBEC /* MWMMapDownloaderButtonTableViewCell.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMMapDownloaderButtonTableViewCell.m; sourceTree = ""; }; @@ -2009,62 +1942,21 @@ F6E2FC941E097B9F0083EBEC /* MWMDirectionView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMDirectionView.h; sourceTree = ""; }; F6E2FC951E097B9F0083EBEC /* MWMDirectionView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; path = MWMDirectionView.mm; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; F6E2FC961E097B9F0083EBEC /* MWMDirectionView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMDirectionView.xib; sourceTree = ""; }; - F6E2FC971E097B9F0083EBEC /* MWMPlacePageData.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPlacePageData.h; sourceTree = ""; }; - F6E2FC981E097B9F0083EBEC /* MWMPlacePageData.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMPlacePageData.mm; sourceTree = ""; }; F6E2FC991E097B9F0083EBEC /* MWMPlacePageManager.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPlacePageManager.h; sourceTree = ""; }; F6E2FC9A1E097B9F0083EBEC /* MWMPlacePageManager.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMPlacePageManager.mm; sourceTree = ""; }; F6E2FC9B1E097B9F0083EBEC /* MWMPlacePageProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPlacePageProtocol.h; sourceTree = ""; }; F6E2FC9E1E097B9F0083EBEC /* MWMActionBarButton.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMActionBarButton.h; sourceTree = ""; }; F6E2FC9F1E097B9F0083EBEC /* MWMActionBarButton.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMActionBarButton.m; sourceTree = ""; }; F6E2FCA01E097B9F0083EBEC /* MWMActionBarButton.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMActionBarButton.xib; sourceTree = ""; }; - F6E2FCA11E097B9F0083EBEC /* MWMPlacePageActionBar.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPlacePageActionBar.h; sourceTree = ""; }; - F6E2FCA21E097B9F0083EBEC /* MWMPlacePageActionBar.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; path = MWMPlacePageActionBar.mm; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; - F6E2FCA31E097B9F0083EBEC /* MWMPlacePageActionBar.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMPlacePageActionBar.xib; sourceTree = ""; }; - F6E2FCAA1E097B9F0083EBEC /* MWMBookmarkCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMBookmarkCell.h; sourceTree = ""; }; - F6E2FCAB1E097B9F0083EBEC /* MWMBookmarkCell.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMBookmarkCell.mm; sourceTree = ""; }; - F6E2FCAC1E097B9F0083EBEC /* MWMBookmarkCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMBookmarkCell.xib; sourceTree = ""; }; - F6E2FCAD1E097B9F0083EBEC /* MWMPlacePageBookmarkDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPlacePageBookmarkDelegate.h; sourceTree = ""; }; - F6E2FCAE1E097B9F0083EBEC /* MWMPlacePageCellUpdateProtocol.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPlacePageCellUpdateProtocol.h; sourceTree = ""; }; - F6E2FCB01E097B9F0083EBEC /* MWMPlacePageButtonCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPlacePageButtonCell.h; sourceTree = ""; }; - F6E2FCB11E097B9F0083EBEC /* MWMPlacePageButtonCell.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMPlacePageButtonCell.mm; sourceTree = ""; }; - F6E2FCB21E097B9F0083EBEC /* MWMPlacePageButtonCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMPlacePageButtonCell.xib; sourceTree = ""; }; F6E2FCB41E097B9F0083EBEC /* _MWMOHHeaderCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = _MWMOHHeaderCell.xib; sourceTree = ""; }; F6E2FCB51E097B9F0083EBEC /* _MWMOHSubCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = _MWMOHSubCell.xib; sourceTree = ""; }; F6E2FCB81E097B9F0083EBEC /* MWMOpeningHoursCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMOpeningHoursCell.xib; sourceTree = ""; }; - F6E2FCB91E097B9F0083EBEC /* MWMOpeningHoursLayoutHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMOpeningHoursLayoutHelper.h; sourceTree = ""; }; - F6E2FCBA1E097B9F0083EBEC /* MWMOpeningHoursLayoutHelper.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; path = MWMOpeningHoursLayoutHelper.mm; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; F6E2FCBB1E097B9F0083EBEC /* MWMPlacePageOpeningHoursCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPlacePageOpeningHoursCell.h; sourceTree = ""; }; F6E2FCBC1E097B9F0083EBEC /* MWMPlacePageOpeningHoursCell.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; path = MWMPlacePageOpeningHoursCell.mm; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; F6E2FCBD1E097B9F0083EBEC /* MWMPlacePageOpeningHoursCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMPlacePageOpeningHoursCell.xib; sourceTree = ""; }; F6E2FCBE1E097B9F0083EBEC /* MWMPlacePageOpeningHoursDayView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPlacePageOpeningHoursDayView.h; sourceTree = ""; }; F6E2FCBF1E097B9F0083EBEC /* MWMPlacePageOpeningHoursDayView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMPlacePageOpeningHoursDayView.m; sourceTree = ""; }; F6E2FCC01E097B9F0083EBEC /* MWMPlacePageOpeningHoursWeekDayView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMPlacePageOpeningHoursWeekDayView.xib; sourceTree = ""; }; - F6E2FCC21E097B9F0083EBEC /* MWMPlacePageRegularCell.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPlacePageRegularCell.h; sourceTree = ""; }; - F6E2FCC31E097B9F0083EBEC /* MWMPlacePageRegularCell.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMPlacePageRegularCell.mm; sourceTree = ""; }; - F6E2FCC41E097B9F0083EBEC /* MWMPlacePageInfoCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMPlacePageInfoCell.xib; sourceTree = ""; }; - F6E2FCC51E097B9F0083EBEC /* MWMPlacePageLinkCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMPlacePageLinkCell.xib; sourceTree = ""; }; - F6E2FCC91E097B9F0083EBEC /* PlacePageTaxiCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PlacePageTaxiCell.xib; sourceTree = ""; }; - F6E2FCCA1E097B9F0083EBEC /* CopyLabel.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CopyLabel.h; sourceTree = ""; }; - F6E2FCCB1E097B9F0083EBEC /* CopyLabel.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CopyLabel.m; sourceTree = ""; }; - F6E2FCCC1E097B9F0083EBEC /* MWMiPadPlacePageLayoutImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMiPadPlacePageLayoutImpl.h; sourceTree = ""; }; - F6E2FCCD1E097B9F0083EBEC /* MWMiPadPlacePageLayoutImpl.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMiPadPlacePageLayoutImpl.mm; sourceTree = ""; }; - F6E2FCCE1E097B9F0083EBEC /* MWMiPhonePlacePageLayoutImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMiPhonePlacePageLayoutImpl.h; sourceTree = ""; }; - F6E2FCCF1E097B9F0083EBEC /* MWMiPhonePlacePageLayoutImpl.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMiPhonePlacePageLayoutImpl.mm; sourceTree = ""; }; - F6E2FCD01E097B9F0083EBEC /* MWMPlacePageLayout.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPlacePageLayout.h; sourceTree = ""; }; - F6E2FCD11E097B9F0083EBEC /* MWMPlacePageLayout.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMPlacePageLayout.mm; sourceTree = ""; }; - F6E2FCD21E097B9F0083EBEC /* MWMPlacePageLayoutImpl.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPlacePageLayoutImpl.h; sourceTree = ""; }; - F6E2FCD41E097B9F0083EBEC /* MWMPPView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPPView.h; sourceTree = ""; }; - F6E2FCD51E097B9F0083EBEC /* MWMPPView.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMPPView.mm; sourceTree = ""; }; - F6E2FCD61E097B9F0083EBEC /* MWMPPView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMPPView.xib; sourceTree = ""; }; - F6E2FCD81E097B9F0083EBEC /* _MWMPPPAddress.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = _MWMPPPAddress.xib; sourceTree = ""; }; - F6E2FCD91E097B9F0083EBEC /* PPPReview.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = PPPReview.xib; sourceTree = ""; }; - F6E2FCDA1E097B9F0083EBEC /* _MWMPPPExternalTitle.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = _MWMPPPExternalTitle.xib; sourceTree = ""; }; - F6E2FCDB1E097B9F0083EBEC /* _MWMPPPSchedule.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = _MWMPPPSchedule.xib; sourceTree = ""; }; - F6E2FCDC1E097B9F0083EBEC /* _MWMPPPSpace.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = _MWMPPPSpace.xib; sourceTree = ""; }; - F6E2FCDD1E097B9F0083EBEC /* _MWMPPPSubtitle.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = _MWMPPPSubtitle.xib; sourceTree = ""; }; - F6E2FCDE1E097B9F0083EBEC /* _MWMPPPTitle.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = _MWMPPPTitle.xib; sourceTree = ""; }; - F6E2FCDF1E097B9F0083EBEC /* MWMPPPreviewLayoutHelper.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMPPPreviewLayoutHelper.h; sourceTree = ""; }; - F6E2FCE01E097B9F0083EBEC /* MWMPPPreviewLayoutHelper.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; lineEnding = 0; path = MWMPPPreviewLayoutHelper.mm; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; F6E2FCED1E097B9F0083EBEC /* MWMSearchFilterViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMSearchFilterViewController.h; sourceTree = ""; }; F6E2FCEE1E097B9F0083EBEC /* MWMSearchFilterViewController.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMSearchFilterViewController.mm; sourceTree = ""; }; F6E2FCEF1E097B9F0083EBEC /* MWMSearchFilterViewController_Protected.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMSearchFilterViewController_Protected.h; sourceTree = ""; }; @@ -2398,16 +2290,6 @@ name = Frameworks; sourceTree = ""; }; - 33010DB121B7E0E000925411 /* DescriptionCell */ = { - isa = PBXGroup; - children = ( - 33010DB221B7E14700925411 /* MWMPlaceDescriptionCell.xib */, - 331922AD21BAD29900D4AAC5 /* MWMPlaceDescriptionCell.h */, - 331922AE21BAD29900D4AAC5 /* MWMPlaceDescriptionCell.m */, - ); - path = DescriptionCell; - sourceTree = ""; - }; 33046837219C605E0041F3A8 /* Category settings */ = { isa = PBXGroup; children = ( @@ -3507,15 +3389,6 @@ path = TipsAndTricks; sourceTree = ""; }; - 472C40E1232A7B4F009AA777 /* CatalogPromo */ = { - isa = PBXGroup; - children = ( - 472C40E2232A7B9F009AA777 /* CatalogSingleItemCell.swift */, - 472C40E3232A7B9F009AA777 /* CatalogSingleItemCell.xib */, - ); - path = CatalogPromo; - sourceTree = ""; - }; 472E3F4221468AF40020E412 /* Subscriptions */ = { isa = PBXGroup; children = ( @@ -4145,8 +4018,7 @@ F6558D951E642C18002203AE /* Controllers */ = { isa = PBXGroup; children = ( - F6558D9F1E642CC0002203AE /* MWMFacilitiesController.h */, - F6558DA01E642CC0002203AE /* MWMFacilitiesController.m */, + 47CF2E6023BA090400D11C30 /* FacilitiesController.swift */, ); name = Controllers; path = ../Controllers; @@ -4165,18 +4037,8 @@ isa = PBXGroup; children = ( F6558D951E642C18002203AE /* Controllers */, - F6664BFF1E6459DA00E703C2 /* PPReviewHeaderCell.swift */, - F6664C001E6459DA00E703C2 /* PPReviewHeaderCell.xib */, - F6664BF71E6459CB00E703C2 /* PPFacilityCell.swift */, - F6664BF81E6459CB00E703C2 /* PPFacilityCell.xib */, - F68224991E5B104600BC1C18 /* PPHotelDescriptionCell.swift */, - F682249D1E5B105900BC1C18 /* PPHotelDescriptionCell.xib */, - F69CE8D41E5C49B4002B5881 /* PPHotelCarouselCell.swift */, - F69CE8D81E5C5088002B5881 /* PPHotelCarouselCell.xib */, - F69CE8DC1E5C51AB002B5881 /* CarouselElement.xib */, - F6664C0F1E645A4100E703C2 /* MWMPPReviewCell.h */, - F6664C101E645A4100E703C2 /* MWMPPReviewCell.mm */, - F6664C111E645A4100E703C2 /* MWMPPReviewCell.xib */, + F6664BF71E6459CB00E703C2 /* FacilityCell.swift */, + F6664BF81E6459CB00E703C2 /* FacilityCell.xib */, ); path = BookingCells; sourceTree = ""; @@ -4185,8 +4047,6 @@ isa = PBXGroup; children = ( 3445324A1F714FD70059FBCC /* UGCAddReview */, - 34E50DDD1F6FCBA1008EED49 /* UGCAddReviewCell.swift */, - 34E50DDE1F6FCBA1008EED49 /* UGCAddReviewCell.xib */, 344532361F6FFE6A0059FBCC /* UGCRating.swift */, 348F8A511F863B6100060C2A /* UGCReview.swift */, 34E50DF51F6FCC96008EED49 /* UGCReviewCell.swift */, @@ -4441,9 +4301,6 @@ children = ( 34F4B0641F6AC6890035F4F3 /* UGCViewModel */, F6E2FC931E097B9F0083EBEC /* DirectionView */, - F68224A11E5B1B1A00BC1C18 /* MWMPlacePageButtonsProtocol.h */, - F6E2FC971E097B9F0083EBEC /* MWMPlacePageData.h */, - F6E2FC981E097B9F0083EBEC /* MWMPlacePageData.mm */, F6E2FC991E097B9F0083EBEC /* MWMPlacePageManager.h */, F6E2FC9A1E097B9F0083EBEC /* MWMPlacePageManager.mm */, 34E776301F15FAC2003040B3 /* MWMPlacePageManagerHelper.h */, @@ -4493,17 +4350,7 @@ children = ( F6E2FC9D1E097B9F0083EBEC /* ActionBar */, F6E2FCA81E097B9F0083EBEC /* Content */, - F6E2FCCA1E097B9F0083EBEC /* CopyLabel.h */, - F6E2FCCB1E097B9F0083EBEC /* CopyLabel.m */, - F6E2FCCC1E097B9F0083EBEC /* MWMiPadPlacePageLayoutImpl.h */, - F6E2FCCD1E097B9F0083EBEC /* MWMiPadPlacePageLayoutImpl.mm */, - F6E2FCCE1E097B9F0083EBEC /* MWMiPhonePlacePageLayoutImpl.h */, - F6E2FCCF1E097B9F0083EBEC /* MWMiPhonePlacePageLayoutImpl.mm */, - F6E2FCD01E097B9F0083EBEC /* MWMPlacePageLayout.h */, - F6E2FCD11E097B9F0083EBEC /* MWMPlacePageLayout.mm */, - F6E2FCD21E097B9F0083EBEC /* MWMPlacePageLayoutImpl.h */, - F6E2FCD31E097B9F0083EBEC /* PlacePageView */, - F6E2FCD71E097B9F0083EBEC /* Preview */, + 47CF2E6223BA0DD500D11C30 /* CopyLabel.swift */, ); path = PlacePageLayout; sourceTree = ""; @@ -4514,9 +4361,6 @@ F6E2FC9E1E097B9F0083EBEC /* MWMActionBarButton.h */, F6E2FC9F1E097B9F0083EBEC /* MWMActionBarButton.m */, F6E2FCA01E097B9F0083EBEC /* MWMActionBarButton.xib */, - F6E2FCA11E097B9F0083EBEC /* MWMPlacePageActionBar.h */, - F6E2FCA21E097B9F0083EBEC /* MWMPlacePageActionBar.mm */, - F6E2FCA31E097B9F0083EBEC /* MWMPlacePageActionBar.xib */, ); path = ActionBar; sourceTree = ""; @@ -4524,50 +4368,20 @@ F6E2FCA81E097B9F0083EBEC /* Content */ = { isa = PBXGroup; children = ( - 472C40E1232A7B4F009AA777 /* CatalogPromo */, - 33010DB121B7E0E000925411 /* DescriptionCell */, F68224981E5B0FE100BC1C18 /* BookingCells */, - F6E2FCA91E097B9F0083EBEC /* BookmarkCell */, - F6E2FCAF1E097B9F0083EBEC /* ButtonCell */, 346DB81C1E5C4F6700E3123E /* Gallery */, F6E2FCB31E097B9F0083EBEC /* OpeningHoursCell */, - F6E2FCC11E097B9F0083EBEC /* RegularCell */, - F6E2FCC61E097B9F0083EBEC /* TaxiCell */, F68BDF181EF80DCC0009BB81 /* UGC */, ); path = Content; sourceTree = ""; }; - F6E2FCA91E097B9F0083EBEC /* BookmarkCell */ = { - isa = PBXGroup; - children = ( - F6E2FCAA1E097B9F0083EBEC /* MWMBookmarkCell.h */, - F6E2FCAB1E097B9F0083EBEC /* MWMBookmarkCell.mm */, - F6E2FCAC1E097B9F0083EBEC /* MWMBookmarkCell.xib */, - F6E2FCAD1E097B9F0083EBEC /* MWMPlacePageBookmarkDelegate.h */, - F6E2FCAE1E097B9F0083EBEC /* MWMPlacePageCellUpdateProtocol.h */, - ); - path = BookmarkCell; - sourceTree = ""; - }; - F6E2FCAF1E097B9F0083EBEC /* ButtonCell */ = { - isa = PBXGroup; - children = ( - F6E2FCB01E097B9F0083EBEC /* MWMPlacePageButtonCell.h */, - F6E2FCB11E097B9F0083EBEC /* MWMPlacePageButtonCell.mm */, - F6E2FCB21E097B9F0083EBEC /* MWMPlacePageButtonCell.xib */, - ); - path = ButtonCell; - sourceTree = ""; - }; F6E2FCB31E097B9F0083EBEC /* OpeningHoursCell */ = { isa = PBXGroup; children = ( F6E2FCB41E097B9F0083EBEC /* _MWMOHHeaderCell.xib */, F6E2FCB51E097B9F0083EBEC /* _MWMOHSubCell.xib */, F6E2FCB81E097B9F0083EBEC /* MWMOpeningHoursCell.xib */, - F6E2FCB91E097B9F0083EBEC /* MWMOpeningHoursLayoutHelper.h */, - F6E2FCBA1E097B9F0083EBEC /* MWMOpeningHoursLayoutHelper.mm */, F6E2FCBB1E097B9F0083EBEC /* MWMPlacePageOpeningHoursCell.h */, F6E2FCBC1E097B9F0083EBEC /* MWMPlacePageOpeningHoursCell.mm */, F6E2FCBD1E097B9F0083EBEC /* MWMPlacePageOpeningHoursCell.xib */, @@ -4578,56 +4392,6 @@ path = OpeningHoursCell; sourceTree = ""; }; - F6E2FCC11E097B9F0083EBEC /* RegularCell */ = { - isa = PBXGroup; - children = ( - F6E2FCC21E097B9F0083EBEC /* MWMPlacePageRegularCell.h */, - F6E2FCC31E097B9F0083EBEC /* MWMPlacePageRegularCell.mm */, - F6E2FCC41E097B9F0083EBEC /* MWMPlacePageInfoCell.xib */, - F6E2FCC51E097B9F0083EBEC /* MWMPlacePageLinkCell.xib */, - ); - path = RegularCell; - sourceTree = ""; - }; - F6E2FCC61E097B9F0083EBEC /* TaxiCell */ = { - isa = PBXGroup; - children = ( - F6E2FCC91E097B9F0083EBEC /* PlacePageTaxiCell.xib */, - 3451F4EC1F026DAF00A981F2 /* PlacePageTaxiCell.swift */, - 34AC7F901F06538B0050DE2B /* MWMPlacePageTaxiProvider.h */, - ); - path = TaxiCell; - sourceTree = ""; - }; - F6E2FCD31E097B9F0083EBEC /* PlacePageView */ = { - isa = PBXGroup; - children = ( - F6E2FCD41E097B9F0083EBEC /* MWMPPView.h */, - F6E2FCD51E097B9F0083EBEC /* MWMPPView.mm */, - F6E2FCD61E097B9F0083EBEC /* MWMPPView.xib */, - ); - path = PlacePageView; - sourceTree = ""; - }; - F6E2FCD71E097B9F0083EBEC /* Preview */ = { - isa = PBXGroup; - children = ( - F6E2FCD81E097B9F0083EBEC /* _MWMPPPAddress.xib */, - F6E2FCDA1E097B9F0083EBEC /* _MWMPPPExternalTitle.xib */, - F6E2FCDB1E097B9F0083EBEC /* _MWMPPPSchedule.xib */, - F6E2FCDC1E097B9F0083EBEC /* _MWMPPPSpace.xib */, - F6E2FCDD1E097B9F0083EBEC /* _MWMPPPSubtitle.xib */, - F6E2FCDE1E097B9F0083EBEC /* _MWMPPPTitle.xib */, - F6E2FCDF1E097B9F0083EBEC /* MWMPPPreviewLayoutHelper.h */, - F6E2FCE01E097B9F0083EBEC /* MWMPPPreviewLayoutHelper.mm */, - F6D67CE8206929590032FD38 /* PPPSearchSimilarButton.swift */, - F6D67CEA2069318B0032FD38 /* PPPSearchSimilarButton.xib */, - 34F1ADD11F6BC09E001CE79D /* PPPReview.swift */, - F6E2FCD91E097B9F0083EBEC /* PPPReview.xib */, - ); - path = Preview; - sourceTree = ""; - }; F6E2FCE11E097B9F0083EBEC /* Search */ = { isa = PBXGroup; children = ( @@ -5027,27 +4791,18 @@ 6741A9581BF340DE002C974C /* 04_padauk.ttf in Resources */, 6741A9591BF340DE002C974C /* 05_khmeros.ttf in Resources */, 34AB66801FC5AA330078E451 /* MWMiPhoneRoutePreview.xib in Resources */, - F6D67CEB2069318B0032FD38 /* PPPSearchSimilarButton.xib in Resources */, F61757F11FC731F5000AD0D0 /* DiscoveryOnlineTemplateCell.xib in Resources */, 6741A95B1BF340DE002C974C /* 06_code2000.ttf in Resources */, F603E05E1FDE9703006B84D6 /* DiscoverySearchCollectionHolderCell.xib in Resources */, 6741A99F1BF340DE002C974C /* 07_roboto_medium.ttf in Resources */, F6E2FE6D1E097BA00083EBEC /* _MWMOHHeaderCell.xib in Resources */, F6E2FE701E097BA00083EBEC /* _MWMOHSubCell.xib in Resources */, - 472C40E5232A7B9F009AA777 /* CatalogSingleItemCell.xib in Resources */, - F6E2FEA91E097BA00083EBEC /* _MWMPPPAddress.xib in Resources */, 4716EAC121A6E0570029B886 /* BookmarksVC.xib in Resources */, - F6E2FEAC1E097BA00083EBEC /* PPPReview.xib in Resources */, F60C8BEF1FCED15A00DCF5FB /* DiscoverySearchCell.xib in Resources */, CD4A1F1C230EB43B00F2A6B6 /* CatalogConnectionErrorView.xib in Resources */, F65D1E1A20E4F11600FE31DD /* ugc_migration in Resources */, - F6E2FEAF1E097BA00083EBEC /* _MWMPPPExternalTitle.xib in Resources */, - F6E2FEB21E097BA00083EBEC /* _MWMPPPSchedule.xib in Resources */, - F6E2FEB51E097BA00083EBEC /* _MWMPPPSpace.xib in Resources */, - F6E2FEB81E097BA00083EBEC /* _MWMPPPSubtitle.xib in Resources */, 4554B6EE1E55F0F30084017F /* drules_proto_vehicle_dark.bin in Resources */, 34AB66141FC5AA320078E451 /* MWMNavigationInfoView.xib in Resources */, - F6E2FEBB1E097BA00083EBEC /* _MWMPPPTitle.xib in Resources */, F61757E91FC72CDE000AD0D0 /* DiscoverySpinnerCell.xib in Resources */, 340E1EEC1E2F614400CE49BF /* Authorization.storyboard in Resources */, 6741A95C1BF340DE002C974C /* categories.txt in Resources */, @@ -5066,7 +4821,6 @@ 6741A9501BF340DE002C974C /* fonts_whitelist.txt in Resources */, 34F73FA31E08300E00AC1FD6 /* Images.xcassets in Resources */, 34F73F9C1E082FF800AC1FD6 /* InfoPlist.strings in Resources */, - F6664C161E645A4100E703C2 /* MWMPPReviewCell.xib in Resources */, 340E1EEF1E2F614400CE49BF /* LaunchScreen.storyboard in Resources */, 34F73F9F1E082FF800AC1FD6 /* Localizable.strings in Resources */, 340E1EF21E2F614400CE49BF /* Main.storyboard in Resources */, @@ -5074,7 +4828,6 @@ F6E2FE521E097BA00083EBEC /* MWMActionBarButton.xib in Resources */, F623DA6F1C9C2E62006A3436 /* MWMAddPlaceNavigationBar.xib in Resources */, 6741A9991BF340DE002C974C /* MWMAlertViewController.xib in Resources */, - F6E2FE641E097BA00083EBEC /* MWMBookmarkCell.xib in Resources */, B366130B20D5E2E000E7DC3E /* CatalogCategoryCell.xib in Resources */, F6E2FD951E097BA00083EBEC /* MWMBookmarkColorViewController.xib in Resources */, F6E2FD9B1E097BA00083EBEC /* MWMBookmarkTitleCell.xib in Resources */, @@ -5118,7 +4871,7 @@ F62607FF207B83C400176C5A /* MWMSpinnerAlert.xib in Resources */, F6EBB2731FD7E4FD00B69B6A /* DiscoveryNoResultsCell.xib in Resources */, F6E2FD621E097BA00083EBEC /* MWMMapDownloaderLargeCountryTableViewCell.xib in Resources */, - F6664BFD1E6459CB00E703C2 /* PPFacilityCell.xib in Resources */, + F6664BFD1E6459CB00E703C2 /* FacilityCell.xib in Resources */, 3404F48C202894EA0090E401 /* BMCViewController.xib in Resources */, F6E2FD681E097BA00083EBEC /* MWMMapDownloaderPlaceTableViewCell.xib in Resources */, F6E2FD6E1E097BA00083EBEC /* MWMMapDownloaderSubplaceTableViewCell.xib in Resources */, @@ -5131,7 +4884,6 @@ 995738DB235484410019AEE7 /* AllPassSubscriptionViewController.xib in Resources */, F6E2FDEF1E097BA00083EBEC /* MWMOpeningHoursAddClosedTableViewCell.xib in Resources */, F655C02920727A630048A241 /* DiscoveryMoreCell.xib in Resources */, - 34E50DE31F6FCBA1008EED49 /* UGCAddReviewCell.xib in Resources */, 34B6FD602015E6BF00C18E97 /* DiscoveryBookingCell.xib in Resources */, 4788739020EE30B300F6826B /* LayersViewController.xib in Resources */, F6E2FDF51E097BA00083EBEC /* MWMOpeningHoursAddScheduleTableViewCell.xib in Resources */, @@ -5154,11 +4906,7 @@ F6C16A671F9626B2000FE296 /* ReviewsViewController.xib in Resources */, F6BD1D241CA412E40047B8E8 /* MWMOsmAuthAlert.xib in Resources */, F6FE3C3C1CC5106500A73196 /* MWMPlaceDoesntExistAlert.xib in Resources */, - F6E2FE581E097BA00083EBEC /* MWMPlacePageActionBar.xib in Resources */, F6E407D41FC4722F001F7821 /* MWMDiscoveryController.xib in Resources */, - F6E2FE6A1E097BA00083EBEC /* MWMPlacePageButtonCell.xib in Resources */, - F6E2FE8B1E097BA00083EBEC /* MWMPlacePageInfoCell.xib in Resources */, - F6E2FE8E1E097BA00083EBEC /* MWMPlacePageLinkCell.xib in Resources */, F6E2FE7F1E097BA00083EBEC /* MWMPlacePageOpeningHoursCell.xib in Resources */, 34AB66711FC5AA330078E451 /* TransportTransitTrain.xib in Resources */, 33046836219C5A4E0041F3A8 /* CategorySettings.storyboard in Resources */, @@ -5166,9 +4914,7 @@ 47C8789A22DF622400A772DA /* SubscriptionFailViewController.xib in Resources */, 47DF72BB225356BF0004AB10 /* DrivingOptions.storyboard in Resources */, F6E2FE851E097BA00083EBEC /* MWMPlacePageOpeningHoursWeekDayView.xib in Resources */, - F6E2FE941E097BA00083EBEC /* PlacePageTaxiCell.xib in Resources */, 47289E5B2212DFFF002ABFC0 /* EditOnWebAlertViewController.xib in Resources */, - F6E2FEA61E097BA00083EBEC /* MWMPPView.xib in Resources */, 47E3C72221108E9F008B3B27 /* BookmarksLoadedViewController.xib in Resources */, 6741A9811BF340DE002C974C /* MWMRateAlert.xib in Resources */, 6741A9601BF340DE002C974C /* MWMRoutingDisclaimerAlert.xib in Resources */, @@ -5186,14 +4932,12 @@ 408645FC21495EB1000A4A1D /* categories_cuisines.txt in Resources */, F6E2FF391E097BA00083EBEC /* MWMSearchSuggestionCell.xib in Resources */, 34AB66231FC5AA330078E451 /* MWMiPadRoutePreview.xib in Resources */, - F6664C051E6459DA00E703C2 /* PPReviewHeaderCell.xib in Resources */, BB25B1A71FB32767007276FA /* transit_colors.txt in Resources */, 3404F4962028A1B80090E401 /* BMCPermissionsCell.xib in Resources */, F6E2FF421E097BA00083EBEC /* MWMSearchTableViewController.xib in Resources */, 34AB66681FC5AA330078E451 /* TransportTransitPedestrian.xib in Resources */, F6E2FEEE1E097BA00083EBEC /* MWMSearchView.xib in Resources */, 470A89FF2134517600D72FBF /* BookmarksTutorialBlur.xib in Resources */, - 33010DB321B7E14700925411 /* MWMPlaceDescriptionCell.xib in Resources */, 4501B1952077C35A001B9173 /* resources-xxxhdpi_dark in Resources */, F6D67CDE2062BBA60032FD38 /* MWMBCCreateCategoryAlert.xib in Resources */, 4738A8E9239FC526007C0F43 /* AdBannerView.xib in Resources */, @@ -5214,8 +4958,6 @@ 677A2DE21C0DD50900635A00 /* resources-default in Resources */, F607C1881C032A8800B53A87 /* resources-hdpi_clear in Resources */, F607C18A1C032A8800B53A87 /* resources-hdpi_dark in Resources */, - F69CE8DA1E5C5088002B5881 /* PPHotelCarouselCell.xib in Resources */, - F69CE8DE1E5C51AB002B5881 /* CarouselElement.xib in Resources */, 6741A97F1BF340DE002C974C /* resources-mdpi_clear in Resources */, 6741A9901BF340DE002C974C /* resources-mdpi_dark in Resources */, 6741A9981BF340DE002C974C /* resources-xhdpi_clear in Resources */, @@ -5225,7 +4967,6 @@ 6741A9551BF340DE002C974C /* resources-xxhdpi_dark in Resources */, 340E1EF51E2F614400CE49BF /* SearchFilters.storyboard in Resources */, B32FE74120D2844600EF7446 /* DownloadedBookmarksViewController.xib in Resources */, - F682249F1E5B105900BC1C18 /* PPHotelDescriptionCell.xib in Resources */, B33D21AD20DA515800BAD749 /* MWMCategoryInfoCell.xib in Resources */, 340E1EF81E2F614400CE49BF /* Settings.storyboard in Resources */, 6741A9421BF340DE002C974C /* sound-strings in Resources */, @@ -5357,7 +5098,7 @@ F6E2FF5D1E097BA00083EBEC /* MWMRecentTrackSettingsController.mm in Sources */, 34AB66651FC5AA330078E451 /* TransportTransitTrain.swift in Sources */, 343064411E9FDC7300DC7665 /* SearchIndex.swift in Sources */, - F6664BFA1E6459CB00E703C2 /* PPFacilityCell.swift in Sources */, + F6664BFA1E6459CB00E703C2 /* FacilityCell.swift in Sources */, 475EFDBD239002D700A24B4C /* CatalogGalleryViewController.swift in Sources */, CDCA273F2238087700167D87 /* MWMCarPlaySearchService.mm in Sources */, 348B926D1FF3B5E100379009 /* UIView+Animation.swift in Sources */, @@ -5394,11 +5135,9 @@ 340475811E081B3300C92850 /* iosOGLContextFactory.mm in Sources */, 34AB66561FC5AA330078E451 /* TransportTransitPedestrian.swift in Sources */, BB8123D62130427E00ADE512 /* MetalContextFactory.mm in Sources */, - F6D67CE9206929590032FD38 /* PPPSearchSimilarButton.swift in Sources */, 3467CEB2202C6EEE00D3C670 /* BMCNotificationsHeader.swift in Sources */, 34F4072F1E9E1AFF00E57AC0 /* BannersCache.swift in Sources */, 34D3B0211E389D05004100F9 /* MWMEditorAddAdditionalNameTableViewCell.m in Sources */, - F6E2FE491E097BA00083EBEC /* MWMPlacePageData.mm in Sources */, 99D363192358685300941BF4 /* SubscriptionGroupItem.swift in Sources */, 348F8A531F863B6100060C2A /* UGCReview.swift in Sources */, 340475501E081A4600C92850 /* fabric_logging_ios.mm in Sources */, @@ -5422,9 +5161,7 @@ 34AB66471FC5AA330078E451 /* RouteManagerTableView.swift in Sources */, 47E98C102382C80600C800E0 /* PlacePageInfoViewController.swift in Sources */, 47DF72B922520CE20004AB10 /* MWMRoutingOptions.mm in Sources */, - F6E2FE611E097BA00083EBEC /* MWMBookmarkCell.mm in Sources */, 99B6A74E2362F5CD002C94CB /* PromoCoordinator.swift in Sources */, - F6E2FEA31E097BA00083EBEC /* MWMPPView.mm in Sources */, 3D15ACEE2155117000F725D5 /* MWMObjectsCategorySelectorDataSource.mm in Sources */, F69739B21FD197DB00FDA07D /* MWMDiscoveryTableManager.mm in Sources */, 3454D7D11E07F045004AF2AD /* UIImage+RGBAData.m in Sources */, @@ -5488,7 +5225,6 @@ 4767CDA620AB1F6200BD8166 /* LeftAlignedIconButton.swift in Sources */, 3454D7D41E07F045004AF2AD /* UIImageView+Coloring.m in Sources */, 3463BA671DE81DB90082417F /* MWMTrafficButtonViewController.mm in Sources */, - F6E2FE551E097BA00083EBEC /* MWMPlacePageActionBar.mm in Sources */, 34AB66051FC5AA320078E451 /* MWMNavigationDashboardManager+Entity.mm in Sources */, 34ABA6171C2D185C00FE1BEC /* MWMAuthorizationOSMLoginViewController.mm in Sources */, 991CE2DD2373145C009EB02A /* PromoAfterBookingCampaign.swift in Sources */, @@ -5515,7 +5251,6 @@ 47B9065421C7FA400079C85E /* UIImageView+WebImage.m in Sources */, F6E2FF481E097BA00083EBEC /* SettingsTableViewSelectableCell.swift in Sources */, 34BBD6581F826F810070CA50 /* AuthorizationTransitioningManager.swift in Sources */, - F6558DA21E642CC0002203AE /* MWMFacilitiesController.m in Sources */, 33F7668F21A57CDF00A88B16 /* EditOnWebViewController.swift in Sources */, 34AB664A1FC5AA330078E451 /* RouteManageriPadPresentationController.swift in Sources */, B366130A20D5E2E000E7DC3E /* CatalogCategoryCell.swift in Sources */, @@ -5553,7 +5288,6 @@ 479D306822C66C8F00D18278 /* MWMBookmarksBannerViewController.m in Sources */, CDCA2748223FD24600167D87 /* MWMCarPlaySearchResultObject.mm in Sources */, 349D1AD81E2E325C004A2006 /* MWMBottomMenuLayout.m in Sources */, - F6E2FEBE1E097BA00083EBEC /* MWMPPPreviewLayoutHelper.mm in Sources */, 3454D7E01E07F045004AF2AD /* UITextField+RuntimeAttributes.m in Sources */, 1DFA2F6A20D3B57400FB2C66 /* UIColor+PartnerColor.m in Sources */, 347BFA901F27909200E5531F /* MenuArea.swift in Sources */, @@ -5565,7 +5299,6 @@ 475EFDC123907DAA00A24B4C /* OpeningHoursViewController.swift in Sources */, 47A0416D238DBB6200D84E95 /* HotelPhotosViewController.swift in Sources */, 34AB66081FC5AA320078E451 /* MWMNavigationDashboardManager.mm in Sources */, - F6664C131E645A4100E703C2 /* MWMPPReviewCell.mm in Sources */, 47A0416F238DD0FD00D84E95 /* HotelDescriptionViewController.swift in Sources */, 991CE2BF2371D349009EB02A /* PromoCampaignManager.swift in Sources */, F6E2FE431E097BA00083EBEC /* MWMDirectionView.mm in Sources */, @@ -5575,6 +5308,7 @@ F6E2FD561E097BA00083EBEC /* MWMMapDownloaderButtonTableViewCell.m in Sources */, CDB4D5002231412900104869 /* MapTemplateBuilder.swift in Sources */, 47C8789022DF525A00A772DA /* SubscriptionSuccessViewController.swift in Sources */, + 47CF2E6123BA090400D11C30 /* FacilitiesController.swift in Sources */, 3462258F1DDC5DBA001E8752 /* MWMSearchNoResultsAlert.mm in Sources */, 470F5A7D2189BB2F00754295 /* PaidRoutePurchase.swift in Sources */, 34AB66171FC5AA320078E451 /* MWMiPhoneRoutePreview.m in Sources */, @@ -5607,7 +5341,6 @@ 4719A643219CB61D009F9AA7 /* BillingPendingTransaction.swift in Sources */, 4735008A23A83CF700661A95 /* DownloadedMapsDataSource.swift in Sources */, CD9AD96F2281DF3600EC174A /* CategoryInfo.swift in Sources */, - F6E2FE881E097BA00083EBEC /* MWMPlacePageRegularCell.mm in Sources */, 3DEE1AEB21F72CD300054A91 /* MWMPowerManagmentViewController.mm in Sources */, 34AB66771FC5AA330078E451 /* TransportRoutePreviewStatus.swift in Sources */, 34BBD6641F8270AC0070CA50 /* AuthorizationTransitioning.swift in Sources */, @@ -5619,7 +5352,6 @@ 34BBD65C1F826FD30070CA50 /* AuthorizationiPhonePresentationController.swift in Sources */, 56C74C391C74A3BC00B71B9F /* MWMInputEmailValidator.m in Sources */, 6741A9F51BF340DE002C974C /* BookmarksVC.mm in Sources */, - 472C40E4232A7B9F009AA777 /* CatalogSingleItemCell.swift in Sources */, B33D21B820E130D000BAD749 /* BookmarksTabViewController.swift in Sources */, 3358607E217632A2006D11F2 /* BookmarksSharingViewController.swift in Sources */, 99CB34C5236B00FD001D28AD /* WelcomeStorage.swift in Sources */, @@ -5639,7 +5371,6 @@ 47F4F21523A6F06F0022FD56 /* AvailableMapsDataSource.swift in Sources */, 995739062355CAC40019AEE7 /* ImageViewCrossDisolve.swift in Sources */, 47B9065221C7FA400079C85E /* MWMWebImage.m in Sources */, - F6664C021E6459DA00E703C2 /* PPReviewHeaderCell.swift in Sources */, F6E2FE7C1E097BA00083EBEC /* MWMPlacePageOpeningHoursCell.mm in Sources */, 340E1EFB1E2F614400CE49BF /* Storyboard.swift in Sources */, 34E776331F15FAC2003040B3 /* MWMPlacePageManagerHelper.mm in Sources */, @@ -5659,13 +5390,11 @@ F6381BF61CD12045004CA943 /* LocaleTranslator.mm in Sources */, 9917D17F2397B1D600A7E06E /* IPadModalPresentationController.swift in Sources */, 3444DFCD1F1760B900E73099 /* WidgetsArea.swift in Sources */, - F6E2FE9A1E097BA00083EBEC /* MWMiPadPlacePageLayoutImpl.mm in Sources */, 34D3B03C1E389D05004100F9 /* MWMEditorSwitchTableViewCell.m in Sources */, 344532381F6FFE6A0059FBCC /* UGCRating.swift in Sources */, 47A6F3C5235F47B90053FBA4 /* BookmarksSubscriptionButton.swift in Sources */, 34AB66411FC5AA330078E451 /* RouteManagerTransitioningManager.swift in Sources */, 3454D7CE1E07F045004AF2AD /* UIFont+MapsMeFonts.m in Sources */, - F682249B1E5B104600BC1C18 /* PPHotelDescriptionCell.swift in Sources */, 3454D7DD1E07F045004AF2AD /* UISwitch+RuntimeAttributes.m in Sources */, CD4A1F1A230EADC100F2A6B6 /* CatalogConnectionErrorView.swift in Sources */, 991CE2C22371D349009EB02A /* PromoDiscoveryCampaign.swift in Sources */, @@ -5689,7 +5418,6 @@ F6E2FF691E097BA00083EBEC /* MWMUnitsController.mm in Sources */, 6741AA031BF340DE002C974C /* MWMActivityViewController.mm in Sources */, 472849012388098300176158 /* MyReviewViewController.swift in Sources */, - F6E2FE9D1E097BA00083EBEC /* MWMiPhonePlacePageLayoutImpl.mm in Sources */, CDCA27382237F1BD00167D87 /* BookmarkInfo.swift in Sources */, 993F5509237C622700545511 /* DeepLinkHandlerStrategy.swift in Sources */, 34AB668C1FC5AA330078E451 /* NavigationStreetNameView.swift in Sources */, @@ -5699,7 +5427,6 @@ 3488B0131E9D0AEC0068AFD8 /* AdBanner.swift in Sources */, 3404755F1E081A4600C92850 /* MWMLocationPredictor.mm in Sources */, F6E2FE041E097BA00083EBEC /* MWMOpeningHoursDaysSelectorTableViewCell.mm in Sources */, - F6E2FE671E097BA00083EBEC /* MWMPlacePageButtonCell.mm in Sources */, 472E3F472146BCD30020E412 /* SubscriptionManager.swift in Sources */, F6E2FE131E097BA00083EBEC /* MWMOpeningHoursTimeSelectorTableViewCell.mm in Sources */, 344532311F6FE5880059FBCC /* UGCSummaryRatingStarsCell.swift in Sources */, @@ -5725,12 +5452,11 @@ 6741AA0B1BF340DE002C974C /* MWMMapViewControlsManager.mm in Sources */, F6E2FED91E097BA00083EBEC /* MWMSearchContentView.m in Sources */, F6BD1D211CA412920047B8E8 /* MWMOsmAuthAlert.mm in Sources */, + 47CF2E6323BA0DD500D11C30 /* CopyLabel.swift in Sources */, 472848F92384CEC900176158 /* TaxiViewController.swift in Sources */, 34AB66321FC5AA330078E451 /* RouteManagerHeaderView.swift in Sources */, 347040301EA6470700038379 /* BorderedButton.swift in Sources */, - 34F1ADD31F6BC09E001CE79D /* PPPReview.swift in Sources */, F6E2FF4B1E097BA00083EBEC /* SettingsTableViewSwitchCell.swift in Sources */, - F6E2FE791E097BA00083EBEC /* MWMOpeningHoursLayoutHelper.mm in Sources */, 47A04173238E989200D84E95 /* HotelReviewsViewController.swift in Sources */, 472E3F4A2146C4CD0020E412 /* MWMPurchaseManager.mm in Sources */, 34ABA6211C2D517500FE1BEC /* MWMInputValidator.m in Sources */, @@ -5744,7 +5470,6 @@ CD4A1F132305872700F2A6B6 /* PromoBookingPresentationController.swift in Sources */, 3472B5D3200F501500DC6CD5 /* BackgroundFetchTaskFrameworkType.swift in Sources */, F6E2FF301E097BA00083EBEC /* MWMSearchCommonCell.mm in Sources */, - F6E2FEA01E097BA00083EBEC /* MWMPlacePageLayout.mm in Sources */, F655C027207278300048A241 /* DiscoveryMoreCell.swift in Sources */, 337F98B821D3D67E00C8AC27 /* SearchHistoryQueryCell.swift in Sources */, 99536111235DABB1008B218F /* BaseSubscriptionViewController.swift in Sources */, @@ -5799,7 +5524,6 @@ 9917D17D2396793A00A7E06E /* PaidRoutesSubscriptionCampaign.swift in Sources */, 3404165C1E7C29AE00E2B6D6 /* PhotosInteractionAnimator.swift in Sources */, 993F550E237C622700545511 /* DeepLinkCataloguePathStrategy.swift in Sources */, - 34E50DE01F6FCBA1008EED49 /* UGCAddReviewCell.swift in Sources */, 3404756E1E081A4600C92850 /* MWMSearch.mm in Sources */, 6741AA191BF340DE002C974C /* MWMDownloaderDialogCell.m in Sources */, 3DE1762422D614B8000214FF /* PromoAfterBookingViewController.swift in Sources */, @@ -5811,13 +5535,11 @@ 34D3B0481E389D05004100F9 /* MWMNoteCell.m in Sources */, CD9AD967228067F500EC174A /* MapInfo.swift in Sources */, 47F6E51221F61908004580CA /* CoreNotificationWrapper.mm in Sources */, - F6E2FE971E097BA00083EBEC /* CopyLabel.m in Sources */, 344532561F7155540059FBCC /* UGCReviewModel.swift in Sources */, 6741AA1D1BF340DE002C974C /* MWMDownloadTransitMapAlert.mm in Sources */, 346B42AC1DD5E3D20094EBEE /* MWMLocationNotFoundAlert.mm in Sources */, 340475091E08199E00C92850 /* MWMMyTarget.mm in Sources */, 340416501E7C086000E2B6D6 /* PhotoViewController.swift in Sources */, - 331922AF21BAD29900D4AAC5 /* MWMPlaceDescriptionCell.m in Sources */, 674A7E301C0DB10B003D48E1 /* MWMMapWidgets.mm in Sources */, 34AB66291FC5AA330078E451 /* RouteManagerViewController.swift in Sources */, 33B19C65218B46C100B323A7 /* SharingTagsViewController.swift in Sources */, @@ -5834,7 +5556,6 @@ 34AB66891FC5AA330078E451 /* NavigationControlView.swift in Sources */, 479EE94A2292FB03009DEBA6 /* ActivityIndicator.swift in Sources */, 34AB661D1FC5AA330078E451 /* MWMTaxiPreviewDataSource.mm in Sources */, - F69CE8D61E5C49B4002B5881 /* PPHotelCarouselCell.swift in Sources */, 47B9065321C7FA400079C85E /* MWMImageCache.m in Sources */, 993F550A237C622700545511 /* DeepLinkGeoStrategy.swift in Sources */, F6FEA82E1C58F108007223CC /* MWMButton.m in Sources */, @@ -5869,7 +5590,6 @@ 4788739220EE326500F6826B /* VerticallyAlignedButton.swift in Sources */, 3444DFDE1F18A5AF00E73099 /* SideButtonsArea.swift in Sources */, CDCA278622451F5000167D87 /* RouteInfo.swift in Sources */, - 3451F4EE1F026DAF00A981F2 /* PlacePageTaxiCell.swift in Sources */, 3467CEB6202C6FA900D3C670 /* BMCNotificationsCell.swift in Sources */, 34B846A32029DFEB0081ECCD /* BMCPermissionsHeader.swift in Sources */, 993F550D237C622700545511 /* DeepLinkLeadStrategy.swift in Sources */, diff --git a/iphone/Maps/UI/EditBookmark/MWMEditBookmarkController.mm b/iphone/Maps/UI/EditBookmark/MWMEditBookmarkController.mm index c332dcc574..409fd2fc2d 100644 --- a/iphone/Maps/UI/EditBookmark/MWMEditBookmarkController.mm +++ b/iphone/Maps/UI/EditBookmark/MWMEditBookmarkController.mm @@ -3,7 +3,6 @@ #import "MWMBookmarkTitleCell.h" #import "MWMButtonCell.h" #import "MWMNoteCell.h" -#import "MWMPlacePageData.h" #import "SelectSetVC.h" #import "SwiftBridge.h" diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageButtonsProtocol.h b/iphone/Maps/UI/PlacePage/MWMPlacePageButtonsProtocol.h deleted file mode 100644 index e3055869d1..0000000000 --- a/iphone/Maps/UI/PlacePage/MWMPlacePageButtonsProtocol.h +++ /dev/null @@ -1,37 +0,0 @@ -#import "MWMPlacePageTaxiProvider.h" -#import "MWMUGCReviewSource.h" -#import -#import - -typedef UIView * _Nullable (^MWMPlacePageButtonsDismissBlock)(NSInteger); - -@protocol MWMReviewsViewModelProtocol; - -@protocol MWMPlacePageButtonsProtocol - -- (void)editPlace; -- (void)addPlace; -- (void)addBusiness; -- (void)book; -- (void)openDescriptionUrl; -- (void)openMoreUrl; -- (void)openReviewUrl; -- (void)editBookmark; -- (void)showAllFacilities; -- (void)showPhotoAtIndex:(NSInteger)index - referenceView:(UIView * _Nullable)referenceView - referenceViewWhenDismissingHandler: - (nonnull MWMPlacePageButtonsDismissBlock)referenceViewWhenDismissingHandler; -- (void)showGallery; -- (void)showUGCAddReview:(UgcSummaryRatingType)value fromSource:(MWMUGCReviewSource)source; -- (void)searchSimilar; - -- (void)openLocalAdsURL; - -- (void)openReviews:(id _Nonnull)reviewsViewModel; - -- (void)showPlaceDescription:(NSString * _Nonnull)htmlString; - -- (void)openCatalogForURL:(NSURL * _Nullable)url; - -@end diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageData.h b/iphone/Maps/UI/PlacePage/MWMPlacePageData.h deleted file mode 100644 index a613618d4a..0000000000 --- a/iphone/Maps/UI/PlacePage/MWMPlacePageData.h +++ /dev/null @@ -1,298 +0,0 @@ -#import "MWMPlacePageActionBar.h" - -#include "partners_api/taxi_provider.hpp" - -#include "storage/storage_defines.hpp" - -#include "map/place_page_info.hpp" -#include "map/routing_mark.hpp" - -#include "platform/network_policy.hpp" - -#include -#import - -#include - -@class MWMPlacePageData; -@class MWMUGCReviewVM; - -struct FeatureID; - -namespace ugc -{ -struct Review; -} // ugc - -namespace local_ads -{ -enum class EventType; -} // local_ads - -namespace booking -{ -struct HotelReview; -struct HotelFacility; -} // namespace booking - -namespace place_page -{ -class Info; - -enum class Sections -{ - Preview, - PromoCatalog, - Bookmark, - Description, - HotelPhotos, - HotelDescription, - HotelFacilities, - HotelReviews, - Metainfo, - Ad, - Buttons, - UGCRating, - UGCAddReview, - UGCReviews -}; - -enum class PreviewRows -{ - Title, - ExternalTitle, - Subtitle, - Schedule, - Review, - SearchSimilar, - Address, - Space, - Banner -}; - -enum class HotelDescriptionRow -{ - Regular, - ShowMore -}; - -enum class HotelPhotosRow -{ - Regular -}; - -enum class HotelFacilitiesRow -{ - Regular, - ShowMore -}; - -enum class HotelReviewsRow -{ - Header, - Regular, - ShowMore -}; - -enum class MetainfoRows -{ - OpeningHours, - ExtendedOpeningHours, - Phone, - Address, - Website, - Email, - Cuisine, - Operator, - Internet, - Coordinate, - LocalAdsCandidate, - LocalAdsCustomer -}; - -enum class AdRows -{ - Taxi -}; - -enum class ButtonsRows -{ - AddBusiness, - EditPlace, - AddPlace, - HotelDescription, - Other -}; - -enum class OpeningHours -{ - AllDay, - Open, - Closed, - Unknown -}; - -enum class PromoCatalogRow -{ - Guides, - GuidesNoInternetError, - GuidesRequestError -}; - -using NewSectionsAreReady = void (^)(NSRange const & range, MWMPlacePageData * data, BOOL isSection); -} // namespace place_page - -typedef void (^RefreshPromoCallbackBlock)(NSIndexSet *insertedSections); - -@class MWMGalleryItemModel; -@class MWMUGCViewModel; -@class MWMUGCReviewModel; -@class MWMUGCRatingValueType; -@class MWMDiscoveryCityGalleryObjects; -@class CatalogPromoItem; -@protocol MWMBanner; - -/// ViewModel for place page. -@interface MWMPlacePageData : NSObject - -@property(copy, nonatomic) MWMVoidBlock refreshPreviewCallback; -@property(copy, nonatomic) place_page::NewSectionsAreReady sectionsAreReadyCallback; -@property(copy, nonatomic) MWMVoidBlock bannerIsReadyCallback; -@property(copy, nonatomic) MWMVoidBlock bookingDataUpdatedCallback; -@property(copy, nonatomic) RefreshPromoCallbackBlock refreshPromoCallback; -@property(nonatomic, readonly) MWMUGCViewModel * ugc; -@property(nonatomic, readonly) MWMDiscoveryCityGalleryObjects *promoGallery; -@property(nonatomic, readonly) NSInteger bookingDiscount; -@property(nonatomic, readonly) BOOL isSmartDeal; -@property(nonatomic, readonly) BOOL isPopular; - -- (place_page::Info const &)getRawData; - -- (void)fillSections; - -- (void)updateBookmarkStatus:(BOOL)isBookmark; - -/// Country id for changing place page's fields which depend on application state. -- (storage::CountryId const &)countryId; -- (FeatureID const &)featureId; - -// Regular -- (NSString *)title; -- (NSString *)subtitle; -- (NSString *)placeDescription; -- (place_page::OpeningHours)schedule; -- (NSString *)address; - -- (float)ratingRawValue; - -// Booking -- (void)fillOnlineBookingSections; -- (MWMUGCRatingValueType *)bookingRating; -- (NSString *)bookingPricing; -- (NSURL *)sponsoredURL; -- (NSURL *)deepLink; -- (NSURL *)sponsoredDescriptionURL; -- (NSURL *)sponsoredMoreURL; -- (NSURL *)sponsoredReviewURL; -- (NSURL *)bookingSearchURL; -- (NSString *)sponsoredId; -- (NSString *)hotelDescription; -- (std::vector const &)facilities; -- (std::vector const &)hotelReviews; -- (NSUInteger)numberOfHotelReviews; -- (NSURL *)URLToAllReviews; -- (NSArray *)photos; - -- (std::optional)hotelRawApproximatePricing; -- (std::optional)hotelType; - -// Partners -- (NSString *)partnerName; -- (int)partnerIndex; - -// UGC -- (ftraits::UGCRatingCategories)ugcRatingCategories; -- (void)setUGCUpdateFrom:(MWMUGCReviewModel *)reviewModel - language:(NSString *)language - resultHandler:(void (^)(BOOL))resultHandler; -// Route points -- (RouteMarkType)routeMarkType; -- (size_t)intermediateIndex; - -// Taxi -- (std::vector const &)taxiProviders; - -// Banner -- (id)nativeAd; - -// API -- (NSString *)apiURL; - -// Bookmark -- (NSString *)externalTitle; -- (kml::PredefinedColor)bookmarkColor; -- (NSString *)bookmarkDescription; -- (NSString *)bookmarkCategory; -- (kml::MarkId)bookmarkId; -- (kml::MarkGroupId)bookmarkCategoryId; -- (BOOL)isBookmarkEditable; - -// Local Ads -- (NSString *)localAdsURL; -- (void)logLocalAdsEvent:(local_ads::EventType)type; - -// Promo Catalog -- (void)fillPromoCatalogSection; -- (CatalogPromoItem *)guideAtIndex:(NSUInteger)index; - -// Table view's data -- (std::vector const &)sections; -- (std::vector const &)previewRows; -- (std::vector const &)photosRows; -- (std::vector const &)descriptionRows; -- (std::vector const &)hotelFacilitiesRows; -- (std::vector const &)hotelReviewsRows; -- (std::vector const &)metainfoRows; -- (std::vector const &)adRows; -- (std::vector const &)buttonsRows; -- (std::vector const &)promoCatalogRows; - -// Table view metainfo rows -- (NSString *)stringForRow:(place_page::MetainfoRows)row; - -// Helpers -- (NSString *)phoneNumber; -- (BOOL)isBookmark; -- (BOOL)isApi; -- (BOOL)isBooking; -- (BOOL)isOpentable; -- (BOOL)isPartner; -- (BOOL)isHolidayObject; -- (BOOL)isPromoCatalog; -- (BOOL)isLargeToponym; -- (BOOL)isSightseeing; -- (BOOL)isOutdoor; -- (BOOL)isBookingSearch; -- (BOOL)isHTMLDescription; -- (BOOL)isMyPosition; -- (BOOL)isRoutePoint; -- (RoadWarningMarkType)roadType; -- (BOOL)isPreviewPlus; -- (BOOL)isPartnerAppInstalled; -- (nonnull NSString*)statPlacement; - -+ (UgcSummaryRatingType)ratingValueType:(place_page::rating::Impress)impress; - -// Coordinates -- (m2::PointD const &)mercator; -- (ms::LatLon)latLon; - -- (NSString *)statisticsTags; - -// TODO(Vlad): Use MWMSettings to store coordinate format. -+ (void)toggleCoordinateSystem; - -- (void)reguestPromoCatalog; -- (NSInteger)bookmarkSectionPosition; - -@end diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm b/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm deleted file mode 100644 index 40eba8f601..0000000000 --- a/iphone/Maps/UI/PlacePage/MWMPlacePageData.mm +++ /dev/null @@ -1,1000 +0,0 @@ -#import "MWMPlacePageData.h" -#import "MWMDiscoveryCityGalleryObjects.h" -#import "MWMBannerHelpers.h" -#import "MWMUGCViewModel.h" -#import "SwiftBridge.h" - -#import - -#include "map/utils.hpp" - -#include "3party/opening_hours/opening_hours.hpp" - -#import -#import - -using namespace place_page; - -namespace -{ -NSString * const kUserDefaultsLatLonAsDMSKey = @"UserDefaultsLatLonAsDMS"; -} // namespace - -@interface MWMPlacePageData () - -@property(copy, nonatomic) NSString * cachedMinPrice; -@property(nonatomic) id nativeAd; -@property(copy, nonatomic) NSArray * photos; -@property(nonatomic) NSNumberFormatter * currencyFormatter; -@property(nonatomic, readwrite) MWMUGCViewModel * ugc; -@property(nonatomic, readwrite) MWMDiscoveryCityGalleryObjects *promoGallery; -@property(nonatomic) NSInteger bookingDiscount; -@property(nonatomic) BOOL isSmartDeal; - - -@property(nonatomic, strong) PlacePageData *pd; - -@end - -@implementation MWMPlacePageData -{ - std::vector m_sections; - std::vector m_previewRows; - std::vector m_metainfoRows; - std::vector m_adRows; - std::vector m_buttonsRows; - std::vector m_hotelPhotosRows; - std::vector m_hotelDescriptionRows; - std::vector m_hotelFacilitiesRows; - std::vector m_hotelReviewsRows; - std::vector m_promoCatalogRows; - - booking::HotelInfo m_hotelInfo; -} - -- (place_page::Info const &)getRawData { return GetFramework().GetCurrentPlacePageInfo(); } - -#pragma mark - Filling sections - -- (void)fillSections -{ - self.pd = [[PlacePageData alloc] init]; - __weak __typeof(self) ws = self; - [self.pd loadOnlineDataWithCompletion:^{ - NSLog(@"%@", ws); - }]; - - m_sections.clear(); - m_previewRows.clear(); - m_metainfoRows.clear(); - m_adRows.clear(); - m_buttonsRows.clear(); - m_hotelPhotosRows.clear(); - m_hotelDescriptionRows.clear(); - m_hotelReviewsRows.clear(); - m_hotelFacilitiesRows.clear(); - - m_sections.push_back(Sections::Preview); - [self fillPreviewSection]; - - if ([[self placeDescription] length] && ![[self bookmarkDescription] length] && !self.isPromoCatalog) { - m_sections.push_back(Sections::Description); - } - - place_page::Info const & info = [self getRawData]; - - // It's bookmark. - if (info.IsBookmark()) - m_sections.push_back(Sections::Bookmark); - - // There is always at least coordinate meta field. - m_sections.push_back(Sections::Metainfo); - [self fillMetaInfoSection]; - - if ([self roadType] != RoadWarningMarkType::Count) { return; } - - auto const & taxiProviders = [self taxiProviders]; - if (!taxiProviders.empty()) - { - m_sections.push_back(Sections::Ad); - m_adRows.push_back(AdRows::Taxi); - - NSString * provider = nil; - switch (taxiProviders.front()) - { - case taxi::Provider::Uber: provider = kStatUber; break; - case taxi::Provider::Yandex: provider = kStatYandex; break; - case taxi::Provider::Maxim: provider = kStatMaxim; break; - case taxi::Provider::Rutaxi: provider = kStatVezet; break; - case taxi::Provider::Count: LOG(LERROR, ("Incorrect taxi provider")); break; - } - [Statistics logEvent:kStatPlacepageTaxiShow withParameters:@{ @"provider" : provider }]; - } - - if (info.ShouldShowAddPlace() || info.ShouldShowEditPlace() || - info.ShouldShowAddBusiness() || info.IsSponsored()) - { - m_sections.push_back(Sections::Buttons); - [self fillButtonsSection]; - } - - if (info.ShouldShowUGC()) - [self addUGCSections]; -} - -- (void)addUGCSections -{ - place_page::Info const & info = [self getRawData]; - NSAssert(info.ShouldShowUGC(), @""); - - __weak auto wself = self; - GetFramework().GetUGC( - info.GetID(), [wself](ugc::UGC const & ugc, ugc::UGCUpdate const & update) { - __strong auto self = wself; - self.ugc = [[MWMUGCViewModel alloc] initWithUGC:ugc update:update]; - - { - auto & previewRows = self->m_previewRows; - auto it = find(previewRows.begin(), previewRows.end(), PreviewRows::Address); - if (it == previewRows.end()) - it = find(previewRows.begin(), previewRows.end(), PreviewRows::Space); - - previewRows.insert(it, PreviewRows::Review); - self.refreshPreviewCallback(); - } - - auto & sections = self->m_sections; - auto const begin = sections.begin(); - auto const end = sections.end(); - - auto it = find(begin, end, Sections::Buttons); - NSUInteger const position = std::distance(begin, it); - NSUInteger length = 0; - - if (!self.ugc.isUGCEmpty) - { - length = 1; - if (!self.ugc.isAggregatedRatingEmpty) - { - it = sections.insert(it, Sections::UGCRating) + 1; - length++; - } - if (self.ugc.isUGCUpdateEmpty) - { - it = sections.insert(it, Sections::UGCAddReview) + 1; - length++; - } - - it = sections.insert(it, Sections::UGCReviews) + 1; - } - else if (self.ugc.isUGCUpdateEmpty) - { - it = sections.insert(it, Sections::UGCAddReview); - length = 1; - } - else - { - it = sections.insert(it, Sections::UGCReviews); - length = 1; - } - - self.sectionsAreReadyCallback({position, length}, self, YES /* It's a section */); - }); -} - -- (void)requestBookingData -{ - auto const api = GetFramework().GetBookingApi(platform::GetCurrentNetworkPolicy()); - if (!api) - return; - - std::string const currency = self.currencyFormatter.currencyCode.UTF8String; - - auto const func = [self, currency](std::string const & hotelId, - booking::Blocks const & blocks) { - if (currency != blocks.m_currency) - return; - - NSNumberFormatter * decimalFormatter = [[NSNumberFormatter alloc] init]; - decimalFormatter.numberStyle = NSNumberFormatterDecimalStyle; - - auto const price = blocks.m_totalMinPrice == booking::BlockInfo::kIncorrectPrice - ? "" - : std::to_string(blocks.m_totalMinPrice); - - NSNumber * currencyNumber = [decimalFormatter - numberFromString:[@(price.c_str()) - stringByReplacingOccurrencesOfString:@"." - withString:decimalFormatter - .decimalSeparator]]; - NSString * currencyString = [self.currencyFormatter stringFromNumber:currencyNumber]; - - self.cachedMinPrice = [NSString stringWithCoreFormat:L(@"place_page_starting_from") - arguments:@[currencyString]]; - self.bookingDiscount = blocks.m_maxDiscount; - self.isSmartDeal = blocks.m_hasSmartDeal; - if (self.bookingDataUpdatedCallback) - self.bookingDataUpdatedCallback(); - }; - - auto params = booking::BlockParams::MakeDefault(); - params.m_hotelId = self.sponsoredId.UTF8String; - params.m_currency = currency; - api->GetBlockAvailability(std::move(params), func); -} - -- (void)fillPreviewSection -{ - if (self.title.length) m_previewRows.push_back(PreviewRows::Title); - if (self.externalTitle.length) m_previewRows.push_back(PreviewRows::ExternalTitle); - if (self.subtitle.length || self.isMyPosition) m_previewRows.push_back(PreviewRows::Subtitle); - if (self.schedule != OpeningHours::Unknown) m_previewRows.push_back(PreviewRows::Schedule); - if (self.isBooking) - { - m_previewRows.push_back(PreviewRows::Review); - [self requestBookingData]; - } - - if (self.address.length) m_previewRows.push_back(PreviewRows::Address); - if (self.hotelType) - { - m_previewRows.push_back(PreviewRows::Space); - m_previewRows.push_back(PreviewRows::SearchSimilar); - } - - m_previewRows.push_back(PreviewRows::Space); - NSAssert(!m_previewRows.empty(), @"Preview row's can't be empty!"); - - place_page::Info const & info = [self getRawData]; - if ([MWMNetworkPolicy sharedPolicy].canUseNetwork && info.HasBanner()) - { - __weak auto wSelf = self; - [[MWMBannersCache cache] - getWithCoreBanners:banner_helpers::MatchPriorityBanners(info.GetBanners()) - cacheOnly:NO - loadNew:YES - completion:^(id ad, BOOL isAsync) { - __strong auto self = wSelf; - if (!self) - return; - - self.nativeAd = ad; - self->m_previewRows.push_back(PreviewRows::Banner); - if (isAsync) - self.bannerIsReadyCallback(); - }]; - } -} - -- (void)fillMetaInfoSection -{ - using namespace osm; - auto const availableProperties = [self getRawData].AvailableProperties(); - // We can't match each metadata property to its UI field and thats why we need to use our own - // enum. - for (auto const p : availableProperties) - { - switch (p) - { - case Props::OpeningHours: m_metainfoRows.push_back(MetainfoRows::OpeningHours); break; - case Props::Phone: m_metainfoRows.push_back(MetainfoRows::Phone); break; - case Props::Website: - if (!self.isBooking) - m_metainfoRows.push_back(MetainfoRows::Website); - break; - case Props::Email: m_metainfoRows.push_back(MetainfoRows::Email); break; - case Props::Cuisine: m_metainfoRows.push_back(MetainfoRows::Cuisine); break; - case Props::Operator: m_metainfoRows.push_back(MetainfoRows::Operator); break; - case Props::Internet: m_metainfoRows.push_back(MetainfoRows::Internet); break; - - case Props::Wikipedia: - case Props::Elevation: - case Props::Stars: - case Props::Flats: - case Props::BuildingLevels: - case Props::Level: - case Props::Fax: break; - } - } - - place_page::Info const & info = [self getRawData]; - auto const address = info.GetAddress(); - if (!address.empty()) - m_metainfoRows.push_back(MetainfoRows::Address); - - m_metainfoRows.push_back(MetainfoRows::Coordinate); - - switch (info.GetLocalAdsStatus()) - { - case place_page::LocalAdsStatus::NotAvailable: break; - case place_page::LocalAdsStatus::Candidate: - m_metainfoRows.push_back(MetainfoRows::LocalAdsCandidate); - break; - case place_page::LocalAdsStatus::Customer: - m_metainfoRows.push_back(MetainfoRows::LocalAdsCustomer); - [self logLocalAdsEvent:local_ads::EventType::OpenInfo]; - break; - case place_page::LocalAdsStatus::Hidden: - [self logLocalAdsEvent:local_ads::EventType::OpenInfo]; - break; - } -} - -- (void)fillButtonsSection -{ - // We don't have to show edit, add place or business if it's booking object. - if (self.isBooking) - { - m_buttonsRows.push_back(ButtonsRows::HotelDescription); - return; - } - - place_page::Info const & info = [self getRawData]; - - if (info.ShouldShowAddPlace()) - m_buttonsRows.push_back(ButtonsRows::AddPlace); - - if (info.ShouldShowEditPlace()) - m_buttonsRows.push_back(ButtonsRows::EditPlace); - - if (info.ShouldShowAddBusiness()) - m_buttonsRows.push_back(ButtonsRows::AddBusiness); -} - -- (float)ratingRawValue -{ - place_page::Info const & info = [self getRawData]; - return info.GetRatingRawValue(); -} - -- (void)fillOnlineBookingSections -{ - if (!self.isBooking) - return; - - auto api = GetFramework().GetBookingApi(platform::GetCurrentNetworkPolicy()); - if (!api) - return; - - std::string const hotelId = self.sponsoredId.UTF8String; - __weak auto wSelf = self; - api->GetHotelInfo( - hotelId, [[AppInfo sharedInfo] twoLetterLanguageId].UTF8String, - [wSelf, hotelId](booking::HotelInfo const & hotelInfo) { - __strong auto self = wSelf; - if (!self || hotelId != hotelInfo.m_hotelId) - return; - - dispatch_async(dispatch_get_main_queue(), [self, hotelInfo] { - m_hotelInfo = hotelInfo; - - auto & sections = self->m_sections; - auto const begin = sections.begin(); - auto const end = sections.end(); - - NSUInteger const position = find(begin, end, Sections::Bookmark) != end ? 2 : 1; - NSUInteger length = 0; - auto it = m_sections.begin() + position; - - if (!hotelInfo.m_photos.empty()) - { - it = sections.insert(it, Sections::HotelPhotos) + 1; - m_hotelPhotosRows.emplace_back(HotelPhotosRow::Regular); - length++; - } - - if (!hotelInfo.m_description.empty()) - { - it = sections.insert(it, Sections::HotelDescription) + 1; - m_hotelDescriptionRows.emplace_back(HotelDescriptionRow::Regular); - m_hotelDescriptionRows.emplace_back(HotelDescriptionRow::ShowMore); - length++; - } - - auto const & facilities = hotelInfo.m_facilities; - if (!facilities.empty()) - { - it = sections.insert(it, Sections::HotelFacilities) + 1; - auto & facilitiesRows = self->m_hotelFacilitiesRows; - auto const size = facilities.size(); - auto constexpr maxNumberOfHotelCellsInPlacePage = 3UL; - - if (size > maxNumberOfHotelCellsInPlacePage) - { - facilitiesRows.insert(facilitiesRows.begin(), maxNumberOfHotelCellsInPlacePage, - HotelFacilitiesRow::Regular); - facilitiesRows.emplace_back(HotelFacilitiesRow::ShowMore); - } - else - { - facilitiesRows.insert(facilitiesRows.begin(), size, HotelFacilitiesRow::Regular); - } - - length++; - } - - auto const & reviews = hotelInfo.m_reviews; - if (!reviews.empty()) - { - sections.insert(it, Sections::HotelReviews); - auto const size = reviews.size(); - auto & reviewsRows = self->m_hotelReviewsRows; - - reviewsRows.emplace_back(HotelReviewsRow::Header); - reviewsRows.insert(reviewsRows.end(), size, HotelReviewsRow::Regular); - reviewsRows.emplace_back(HotelReviewsRow::ShowMore); - length++; - } - - self.sectionsAreReadyCallback({position, length}, self, YES /* It's a section */); - }); - }); -} - -- (NSInteger)bookmarkSectionPosition { - if (self.promoGallery != nil) { - return 2; - } else { - return 1; - } -} - -#pragma mark - Update bookmark status - -- (void)updateBookmarkStatus:(BOOL)isBookmark -{ - auto & f = GetFramework(); - auto & bmManager = f.GetBookmarkManager(); - place_page::Info const & info = [self getRawData]; - if (isBookmark) - { - auto const categoryId = f.LastEditedBMCategory(); - kml::BookmarkData bmData; - bmData.m_name = info.FormatNewBookmarkName(); - bmData.m_color.m_predefinedColor = f.LastEditedBMColor(); - bmData.m_point = self.mercator; - if (info.IsFeature()) - SaveFeatureTypes(info.GetTypes(), bmData); - auto editSession = bmManager.GetEditSession(); - auto const * bookmark = editSession.CreateBookmark(std::move(bmData), categoryId); - - auto buildInfo = info.GetBuildInfo(); - buildInfo.m_match = place_page::BuildInfo::Match::Everything; - buildInfo.m_userMarkId = bookmark->GetId(); - f.UpdatePlacePageInfoForCurrentSelection(buildInfo); - - m_sections.insert(m_sections.begin() + [self bookmarkSectionPosition], Sections::Bookmark); - } - else - { - auto const bookmarkId = info.GetBookmarkId(); - [[MWMBookmarksManager sharedManager] deleteBookmark:bookmarkId]; - - auto buildInfo = info.GetBuildInfo(); - buildInfo.m_match = place_page::BuildInfo::Match::FeatureOnly; - buildInfo.m_userMarkId = kml::kInvalidMarkId; - f.UpdatePlacePageInfoForCurrentSelection(buildInfo); - - m_sections.erase(remove(m_sections.begin(), m_sections.end(), Sections::Bookmark)); - } -} - -#pragma mark - Dealloc - -- (void)dealloc -{ -// TODO: Submit ugc. -// [self.reviewViewModel submit]; - auto nativeAd = self.nativeAd; - if (nativeAd) - [[MWMBannersCache cache] bannerIsOutOfScreenWithCoreBanner:nativeAd]; -} - -#pragma mark - Getters - -- (BOOL)isPopular { return [self getRawData].GetPopularity() > 0; } -- (storage::CountryId const &)countryId { return [self getRawData].GetCountryId(); } -- (FeatureID const &)featureId { return [self getRawData].GetID(); } -- (NSString *)title { return @([self getRawData].GetTitle().c_str()); } -- (NSString *)subtitle { return @([self getRawData].GetSubtitle().c_str()); } -- (NSString *)placeDescription -{ - NSString * descr = @([self getRawData].GetDescription().c_str()); - if (descr.length > 0) - descr = [NSString stringWithFormat:@"%@", descr]; - - return descr; -} - -- (place_page::OpeningHours)schedule; -{ - using type = place_page::OpeningHours; - auto const raw = [self getRawData].GetOpeningHours(); - if (raw.empty()) - return type::Unknown; - - auto const t = time(nullptr); - osmoh::OpeningHours oh(raw); - if (!oh.IsValid()) - return type::Unknown; - if (oh.IsTwentyFourHours()) - return type::AllDay; - if (oh.IsOpen(t)) - return type::Open; - if (oh.IsClosed(t)) - return type::Closed; - - return type::Unknown; -} - -#pragma mark - Sponsored - -- (MWMUGCRatingValueType *)bookingRating -{ - if (!self.isBooking) - return nil; - auto const ratingRaw = [self getRawData].GetRatingRawValue(); - return [[MWMUGCRatingValueType alloc] - initWithValue:@(rating::GetRatingFormatted(ratingRaw).c_str()) - type:[MWMPlacePageData ratingValueType:rating::GetImpress(ratingRaw)]]; -} - -- (NSString *)bookingPricing -{ - ASSERT(self.isBooking, ("Only for booking.com hotels")); - return self.cachedMinPrice.length ? self.cachedMinPrice : @([self getRawData].GetApproximatePricing().c_str()); -} - -- (NSURL *)sponsoredURL -{ - place_page::Info const & info = [self getRawData]; - // There are sponsors without URL. For such psrtners we do not show special button. - if (info.IsSponsored() && !info.GetSponsoredUrl().empty()) - { - auto urlString = [@(info.GetSponsoredUrl().c_str()) - stringByAddingPercentEncodingWithAllowedCharacters:NSCharacterSet - .URLQueryAllowedCharacterSet]; - auto url = [NSURL URLWithString:urlString]; - return url; - } - return nil; -} - -- (NSURL *)deepLink -{ - place_page::Info const & info = [self getRawData]; - auto const & link = info.GetSponsoredDeepLink(); - if (info.IsSponsored() && !link.empty()) - return [NSURL URLWithString:@(link.c_str())]; - - return nil; -} - -- (NSURL *)sponsoredDescriptionURL -{ - place_page::Info const & info = [self getRawData]; - return info.IsSponsored() - ? [NSURL URLWithString:@(info.GetSponsoredDescriptionUrl().c_str())] - : nil; -} - -- (NSURL *)sponsoredMoreURL -{ - place_page::Info const & info = [self getRawData]; - return info.IsSponsored() - ? [NSURL URLWithString:@(info.GetSponsoredMoreUrl().c_str())] - : nil; -} - -- (NSURL *)sponsoredReviewURL -{ - place_page::Info const & info = [self getRawData]; - return info.IsSponsored() - ? [NSURL URLWithString:@(info.GetSponsoredReviewUrl().c_str())] - : nil; -} - -- (NSURL *)bookingSearchURL -{ - auto const & url = [self getRawData].GetBookingSearchUrl(); - return url.empty() ? nil : [NSURL URLWithString:@(url.c_str())]; -} - -- (NSString *)sponsoredId -{ - place_page::Info const & info = [self getRawData]; - return info.IsSponsored() - ? @(info.GetMetadata().Get(feature::Metadata::FMD_SPONSORED_ID).c_str()) - : nil; -} - -- (NSNumberFormatter *)currencyFormatter -{ - if (!_currencyFormatter) - { - _currencyFormatter = [[NSNumberFormatter alloc] init]; - if (_currencyFormatter.currencyCode.length != 3) - _currencyFormatter.locale = [[NSLocale alloc] initWithLocaleIdentifier:@"en_US"]; - - _currencyFormatter.numberStyle = NSNumberFormatterCurrencyStyle; - _currencyFormatter.maximumFractionDigits = 0; - } - return _currencyFormatter; -} - -- (NSString *)hotelDescription { return @(m_hotelInfo.m_description.c_str()); } -- (std::vector const &)facilities { return m_hotelInfo.m_facilities; } -- (std::vector const &)hotelReviews { return m_hotelInfo.m_reviews; } -- (NSUInteger)numberOfHotelReviews { return m_hotelInfo.m_scoreCount; } - -- (NSURL *)URLToAllReviews { return [NSURL URLWithString:@([self getRawData].GetSponsoredReviewUrl().c_str())]; } -- (NSArray *)photos -{ - if (_photos) - return _photos; - - NSMutableArray * res = [@[] mutableCopy]; - for (auto const & p : m_hotelInfo.m_photos) - { - auto big = [NSURL URLWithString:@(p.m_original.c_str())]; - auto preview = [NSURL URLWithString:@(p.m_small.c_str())]; - if (!big || !preview) - continue; - - auto photo = [[MWMGalleryItemModel alloc] initWithImageURL:big previewURL:preview]; - [res addObject:photo]; - } - - self.photos = res; - return _photos; -} - -- (std::optional)hotelRawApproximatePricing { - return [self getRawData].GetRawApproximatePricing(); -} - -- (std::optional)hotelType { - return [self getRawData].GetHotelType(); -} - -#pragma mark - Partners - -- (NSString *)partnerName -{ - return self.isPartner ? @([self getRawData].GetPartnerName().c_str()) : nil; -} - -- (int)partnerIndex -{ - return self.isPartner ? [self getRawData].GetPartnerIndex() : -1; -} - -#pragma mark - UGC - -- (ftraits::UGCRatingCategories)ugcRatingCategories { return [self getRawData].GetRatingCategories(); } - -- (void)setUGCUpdateFrom:(MWMUGCReviewModel *)reviewModel - language:(NSString *)language - resultHandler:(void (^)(BOOL))resultHandler { - using namespace ugc; - auto appInfo = AppInfo.sharedInfo; - auto const locale = - static_cast(StringUtf8Multilang::GetLangIndex(appInfo.twoLetterLanguageId.UTF8String)); - std::vector keyboardLanguages; - // TODO: Set the list of used keyboard languages (not only the recent one). - auto twoLetterInputLanguage = languages::Normalize(language.UTF8String); - keyboardLanguages.emplace_back(StringUtf8Multilang::GetLangIndex(twoLetterInputLanguage)); - - KeyboardText t{reviewModel.text.UTF8String, locale, keyboardLanguages}; - Ratings r; - for (MWMUGCRatingStars * star in reviewModel.ratings) - r.emplace_back(star.title.UTF8String, star.value); - - UGCUpdate update{r, t, std::chrono::system_clock::now()}; - - place_page::Info const & info = [self getRawData]; - GetFramework().GetUGCApi()->SetUGCUpdate(info.GetID(), update, - [resultHandler, info](Storage::SettingResult const result) - { - if (result != Storage::SettingResult::Success) - { - resultHandler(NO); - return; - } - - resultHandler(YES); - GetFramework().UpdatePlacePageInfoForCurrentSelection(); - - utils::RegisterEyeEventIfPossible(eye::MapObject::Event::Type::UgcSaved, - GetFramework().GetCurrentPosition(), info); - }); -} - -#pragma mark - Bookmark - -- (NSString *)externalTitle -{ - place_page::Info const & info = [self getRawData]; - return info.GetSecondaryTitle().empty() ? nil : @(info.GetSecondaryTitle().c_str()); -} - -- (kml::PredefinedColor)bookmarkColor -{ - place_page::Info const & info = [self getRawData]; - return info.IsBookmark() ? info.GetBookmarkData().m_color.m_predefinedColor : kml::PredefinedColor::None; -} - -- (NSString *)bookmarkDescription -{ - place_page::Info const & info = [self getRawData]; - return info.IsBookmark() ? @(GetPreferredBookmarkStr(info.GetBookmarkData().m_description).c_str()) : nil; -} - -- (NSString *)bookmarkCategory -{ - place_page::Info const & info = [self getRawData]; - return info.IsBookmark() ? @(info.GetBookmarkCategoryName().c_str()) : nil; -} - -- (kml::MarkId)bookmarkId -{ - place_page::Info const & info = [self getRawData]; - return info.GetBookmarkId(); -} - -- (kml::MarkGroupId)bookmarkCategoryId -{ - place_page::Info const & info = [self getRawData]; - return info.GetBookmarkCategoryId(); -} - -- (BOOL)isBookmarkEditable -{ - return self.isBookmark && [[MWMBookmarksManager sharedManager] isCategoryEditable:self.bookmarkCategoryId]; -} - -#pragma mark - Local Ads -- (NSString *)localAdsURL { return @([self getRawData].GetLocalAdsUrl().c_str()); } -- (void)logLocalAdsEvent:(local_ads::EventType)type -{ - place_page::Info const & info = [self getRawData]; - auto const status = info.GetLocalAdsStatus(); - if (status != place_page::LocalAdsStatus::Customer && status != place_page::LocalAdsStatus::Hidden) - return; - auto const featureID = info.GetID(); - auto const & mwmInfo = featureID.m_mwmId.GetInfo(); - if (!mwmInfo) - return; - auto & f = GetFramework(); - auto location = [MWMLocationManager lastLocation]; - auto event = local_ads::Event(type, mwmInfo->GetVersion(), mwmInfo->GetCountryName(), - featureID.m_index, f.GetDrawScale(), - local_ads::Clock::now(), location.coordinate.latitude, - location.coordinate.longitude, location.horizontalAccuracy); - f.GetLocalAdsManager().GetStatistics().RegisterEvent(std::move(event)); -} - -#pragma mark - Taxi -- (std::vector const &)taxiProviders -{ - return [self getRawData].ReachableByTaxiProviders(); -} - -#pragma mark - Getters - -- (RouteMarkType)routeMarkType { return [self getRawData].GetRouteMarkType(); } -- (size_t)intermediateIndex { return [self getRawData].GetIntermediateIndex(); } -- (NSString *)address { return @([self getRawData].GetAddress().c_str()); } -- (NSString *)apiURL { return @([self getRawData].GetApiUrl().c_str()); } -- (std::vector const &)sections { return m_sections; } -- (std::vector const &)previewRows { return m_previewRows; } -- (std::vector const &)metainfoRows { return m_metainfoRows; } -- (std::vector &)mutableMetainfoRows { return m_metainfoRows; } -- (std::vector const &)adRows { return m_adRows; } -- (std::vector const &)buttonsRows { return m_buttonsRows; } -- (std::vector const &)photosRows { return m_hotelPhotosRows; } -- (std::vector const &)descriptionRows { return m_hotelDescriptionRows; } -- (std::vector const &)hotelFacilitiesRows { return m_hotelFacilitiesRows; } -- (std::vector const &)hotelReviewsRows { return m_hotelReviewsRows; } -- (NSString *)stringForRow:(MetainfoRows)row -{ - place_page::Info const & info = [self getRawData]; - switch (row) - { - case MetainfoRows::ExtendedOpeningHours: return nil; - case MetainfoRows::OpeningHours: return @(info.GetOpeningHours().c_str()); - case MetainfoRows::Phone: return @(info.GetPhone().c_str()); - case MetainfoRows::Address: return @(info.GetAddress().c_str()); - case MetainfoRows::Website: return @(info.GetWebsite().c_str()); - case MetainfoRows::Email: return @(info.GetEmail().c_str()); - case MetainfoRows::Cuisine: - return @(strings::JoinStrings(info.GetLocalizedCuisines(), Info::kSubtitleSeparator).c_str()); - case MetainfoRows::Operator: return @(info.GetOperator().c_str()); - case MetainfoRows::Internet: return L(@"WiFi_available"); - case MetainfoRows::LocalAdsCandidate: return L(@"create_campaign_button"); - case MetainfoRows::LocalAdsCustomer: return L(@"view_campaign_button"); - case MetainfoRows::Coordinate: - return @(info.GetFormattedCoordinate( - [NSUserDefaults.standardUserDefaults boolForKey:kUserDefaultsLatLonAsDMSKey]) - .c_str()); - } -} -- (std::vector const &)promoCatalogRows { return m_promoCatalogRows; } - -#pragma mark - Helpers - -- (NSString *)phoneNumber { return @([self getRawData].GetPhone().c_str()); } -- (BOOL)isBookmark { return [self getRawData].IsBookmark(); } -- (BOOL)isApi { return [self getRawData].HasApiUrl(); } -- (BOOL)isBooking { return [self getRawData].GetSponsoredType() == SponsoredType::Booking; } -- (BOOL)isOpentable { return [self getRawData].GetSponsoredType() == SponsoredType::Opentable; } -- (BOOL)isPartner { return [self getRawData].GetSponsoredType() == SponsoredType::Partner; } -- (BOOL)isHolidayObject { return [self getRawData].GetSponsoredType() == SponsoredType::Holiday; } -- (BOOL)isPromoCatalog { return self.isLargeToponym || self.isSightseeing || self.isOutdoor; } -- (BOOL)isLargeToponym { return [self getRawData].GetSponsoredType() == SponsoredType::PromoCatalogCity; } -- (BOOL)isSightseeing { return [self getRawData].GetSponsoredType() == SponsoredType::PromoCatalogSightseeings; } -- (BOOL)isOutdoor { return [self getRawData].GetSponsoredType() == SponsoredType::PromoCatalogOutdoor; } -- (BOOL)isBookingSearch { return ![self getRawData].GetBookingSearchUrl().empty(); } -- (BOOL)isMyPosition { return [self getRawData].IsMyPosition(); } -- (BOOL)isHTMLDescription { return strings::IsHTML(GetPreferredBookmarkStr([self getRawData].GetBookmarkData().m_description)); } -- (BOOL)isRoutePoint { return [self getRawData].IsRoutePoint(); } -- (RoadWarningMarkType)roadType { return [self getRawData].GetRoadType(); } -- (BOOL)isPreviewPlus { return [self getRawData].GetOpeningMode() == place_page::OpeningMode::PreviewPlus; } -- (BOOL)isPartnerAppInstalled -{ - // TODO(): Load list of registered schemas from plist. - return [UIApplication.sharedApplication canOpenURL:self.deepLink]; -} - -- (nonnull NSString*)statPlacement -{ - switch ([self getRawData].GetSponsoredType()) - { - case SponsoredType::PromoCatalogCity: - return kStatPlacePageToponims; - case SponsoredType::PromoCatalogSightseeings: - return kStatPlacePageSightSeeing; - case SponsoredType:: PromoCatalogOutdoor: - return kStatPlacePageOutdoor; - default: - return kStatUnknownError; - } -} - -+ (UgcSummaryRatingType)ratingValueType:(rating::Impress)impress -{ - switch (impress) - { - case rating::Impress::None: return UgcSummaryRatingTypeNone; - case rating::Impress::Horrible: return UgcSummaryRatingTypeHorrible; - case rating::Impress::Bad: return UgcSummaryRatingTypeBad; - case rating::Impress::Normal: return UgcSummaryRatingTypeNormal; - case rating::Impress::Good: return UgcSummaryRatingTypeGood; - case rating::Impress::Excellent: return UgcSummaryRatingTypeExcellent; - } -} -#pragma mark - Coordinates - -- (m2::PointD const &)mercator { return [self getRawData].GetMercator(); } -- (ms::LatLon)latLon { return [self getRawData].GetLatLon(); } -+ (void)toggleCoordinateSystem -{ - // TODO: Move changing latlon's mode to the settings. - NSUserDefaults * ud = NSUserDefaults.standardUserDefaults; - [ud setBool:![ud boolForKey:kUserDefaultsLatLonAsDMSKey] forKey:kUserDefaultsLatLonAsDMSKey]; - [ud synchronize]; -} - -#pragma mark - Stats - -- (NSString *)statisticsTags -{ - NSMutableArray * result = [@[] mutableCopy]; - for (auto const & s : [self getRawData].GetRawTypes()) - [result addObject:@(s.c_str())]; - return [result componentsJoinedByString:@", "]; -} - -#pragma mark - Promo Gallery - -- (void)fillPromoCatalogSection { - if (!self.isPromoCatalog || self.isBookmark || [self bookmarkDescription].length > 0) { - return; - } - - [self reguestPromoCatalog]; -} - -- (void)reguestPromoCatalog { - auto const canUseNetwork = platform::GetCurrentNetworkPolicy(); - auto const api = GetFramework().GetPromoApi(canUseNetwork); - m_promoCatalogRows.clear(); - - auto const row = canUseNetwork.CanUse() ? PromoCatalogRow::GuidesRequestError : PromoCatalogRow::GuidesNoInternetError; - if (!api) { - m_promoCatalogRows.push_back(row); - if ([[self placeDescription] length] && ![[self bookmarkDescription] length]) { - m_sections.insert(m_sections.begin() + 1, Sections::Description); - if (self.refreshPromoCallback) { - self.refreshPromoCallback([NSIndexSet indexSetWithIndex:1]); - } - } - [Statistics logEvent:kStatPlacepageSponsoredError - withParameters:@{ - kStatProvider: kStatMapsmeGuides, - kStatPlacement: kStatPlacePage, - kStatError: kStatNoInternet - }]; - } else { - __weak __typeof(self) weakSelf = self; - auto const resultHandler = [weakSelf](promo::CityGallery const & cityGallery) { - __strong __typeof(self) self = weakSelf; - if (self == nil) { - return; - } - - if (cityGallery.IsEmpty()) { - if ([[self placeDescription] length] && ![[self bookmarkDescription] length]) { - m_sections.insert(m_sections.begin() + 1, Sections::Description); - if (self.refreshPromoCallback) { - self.refreshPromoCallback([NSIndexSet indexSetWithIndex:1]); - } - } - } else { - self.promoGallery = [[MWMDiscoveryCityGalleryObjects alloc] initWithGalleryResults:cityGallery]; - m_sections.insert(m_sections.begin() + 1, Sections::PromoCatalog); - m_promoCatalogRows.push_back(PromoCatalogRow::Guides); - [Statistics logEvent:kStatPlacepageSponsoredShow - withParameters:@{ - kStatProvider: kStatMapsmeGuides, - kStatPlacement: [self statPlacement], - kStatState: kStatOnline, - kStatCount: @(cityGallery.m_items.size()) - }]; - NSMutableIndexSet *insertedSections = [NSMutableIndexSet indexSetWithIndex:1]; - if (self.promoGallery.count > 1 && [[self placeDescription] length] && ![[self bookmarkDescription] length]) { - NSInteger infoIndex = self.isBookmark ? 3 : 2; - m_sections.insert(m_sections.begin() + infoIndex, Sections::Description); - [insertedSections addIndex:infoIndex]; - } - if (self.refreshPromoCallback) { - self.refreshPromoCallback([insertedSections copy]); - } - } - }; - - auto const errorHandler = [weakSelf]() { - __strong __typeof(self) self = weakSelf; - if (self == nil) { - return; - } - - if ([[self placeDescription] length] && ![[self bookmarkDescription] length]) { - m_sections.insert(m_sections.begin() + 1, Sections::Description); - if (self.refreshPromoCallback) { - self.refreshPromoCallback([NSIndexSet indexSetWithIndex:1]); - } - } - }; - - auto appInfo = AppInfo.sharedInfo; - auto locale = appInfo.twoLetterLanguageId.UTF8String; - if (self.isLargeToponym) { - api->GetCityGallery(self.mercator, locale, UTM::LargeToponymsPlacepageGallery, resultHandler, errorHandler); - } else { - api->GetPoiGallery(self.mercator, locale, - [self getRawData].GetRawTypes(), - [MWMFrameworkHelper isWiFiConnected], - self.isOutdoor ? UTM::OutdoorPlacepageGallery : UTM::SightseeingsPlacepageGallery, - resultHandler, - errorHandler); - } - } -} - -- (CatalogPromoItem *)guideAtIndex:(NSUInteger)index { - promo::CityGallery::Item const &item = [self.promoGallery galleryItemAtIndex:index]; - return [[CatalogPromoItem alloc] initWithCoreItem:item]; -} - -@end diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm b/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm index e3158af24c..ede16cb334 100644 --- a/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm +++ b/iphone/Maps/UI/PlacePage/MWMPlacePageManager.mm @@ -1,13 +1,9 @@ #import "MWMPlacePageManager.h" #import "CLLocation+Mercator.h" #import "MWMActivityViewController.h" -#import "MWMFacilitiesController.h" -#import "MWMFrameworkListener.h" #import "MWMFrameworkStorageObserver.h" #import "MWMLocationHelpers.h" #import "MWMLocationObserver.h" -#import "MWMPlacePageData.h" -#import "MWMPlacePageLayout.h" #import "MWMRoutePoint+CPP.h" #import "MWMSearchManager+Filter.h" #import "MWMStorage+UI.h" @@ -53,39 +49,6 @@ void logSponsoredEvent(PlacePageData *data, NSString *eventName) [Statistics logEvent:eventName withParameters:stat atLocation:[MWMLocationManager lastLocation]]; } -void logSponsoredEvent(MWMPlacePageData * data, NSString * eventName) -{ - auto const & latLon = data.latLon; - - NSMutableDictionary * stat = [@{} mutableCopy]; - if (data.isBooking) - { - stat[kStatProvider] = kStatBooking; - stat[kStatHotel] = data.sponsoredId; - stat[kStatHotelLocation] = makeLocationEventValue(latLon.m_lat, latLon.m_lon); - } - else if (data.isOpentable) - { - stat[kStatProvider] = kStatOpentable; - stat[kStatRestaurant] = data.sponsoredId; - stat[kStatRestaurantLocation] = makeLocationEventValue(latLon.m_lat, latLon.m_lon); - } - else if (data.isPartner) - { - stat[kStatProvider] = data.partnerName; - stat[kStatCategory] = @(data.ratingRawValue); - stat[kStatObjectLat] = @(latLon.m_lat); - stat[kStatObjectLon] = @(latLon.m_lon); - } - else - { - stat[kStatProvider] = kStatPlacePageHotelSearch; - stat[kStatHotelLocation] = makeLocationEventValue(latLon.m_lat, latLon.m_lon); - } - - [Statistics logEvent:eventName withParameters:stat atLocation:[MWMLocationManager lastLocation]]; -} - void RegisterEventIfPossible(eye::MapObject::Event::Type const type) { auto const userPos = GetFramework().GetCurrentPosition(); @@ -94,12 +57,7 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type) } } // namespace -@interface MWMPlacePageManager () - -@property(nonatomic) MWMPlacePageLayout * layout; -@property(nonatomic) MWMPlacePageData * data; +@interface MWMPlacePageManager () @property(nonatomic) storage::NodeStatus currentDownloaderStatus; @@ -110,255 +68,16 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type) @implementation MWMPlacePageManager - (void)showReview { - [self show]; - [self showUGCAddReview:UgcSummaryRatingTypeNone - fromSource:MWMUGCReviewSourceNotification]; -} - -- (void)show { - self.isSponsoredOpenLogged = NO; - self.currentDownloaderStatus = storage::NodeStatus::Undefined; - [MWMFrameworkListener addObserver:self]; - - self.data = [[MWMPlacePageData alloc] init]; - [self.data fillSections]; - - if (!self.layout) - { - self.layout = [[MWMPlacePageLayout alloc] initWithOwnerView:self.ownerViewController.view - delegate:self - dataSource:self]; - } - - [MWMLocationManager addObserver:self]; - [[MWMBookmarksManager sharedManager] addObserver:self]; - - [self setupSpeedAndDistance]; - - [self.layout showWithData:self.data]; - - // Call for the first time to produce changes - [self processCountryEvent:@([self.data countryId].c_str())]; -} - -- (void)update { - if (!self.isPPShown) - return; - - self.data = [[MWMPlacePageData alloc] init]; - [self.data fillSections]; - [self setupSpeedAndDistance]; - [self.layout updateWithData:self.data]; +// [self show]; +// [self showUGCAddReview:UgcSummaryRatingTypeNone +// fromSource:MWMUGCReviewSourceNotification]; } - (BOOL)isPPShown { - return self.data != nil; + return GetFramework().HasPlacePageInfo(); } -- (void)dismiss -{ - [self.layout close]; - self.data = nil; - [[MWMBookmarksManager sharedManager] removeObserver:self]; - [MWMLocationManager removeObserver:self]; - [MWMFrameworkListener removeObserver:self]; -} - -#pragma mark - MWMBookmarksObserver - -- (void)onBookmarkDeleted:(MWMMarkID)bookmarkId -{ - auto data = self.data; - NSAssert(data && self.layout, @"It must be openned place page!"); - if (!data.isBookmark || data.bookmarkId != bookmarkId) - return; - - [self closePlacePage]; -} - -- (void)onBookmarksCategoryDeleted:(MWMMarkGroupID)groupId -{ - auto data = self.data; - NSAssert(data && self.layout, @"It must be openned place page!"); - if (!data.isBookmark || data.bookmarkCategoryId != groupId) - return; - - [self closePlacePage]; -} - -#pragma mark - MWMPlacePageLayoutDataSource - -- (void)downloadSelectedArea -{ - auto data = self.data; - if (!data) - return; - auto const & countryId = [data countryId]; - NodeAttrs nodeAttrs; - GetFramework().GetStorage().GetNodeAttrs(countryId, nodeAttrs); - switch (nodeAttrs.m_status) - { - case NodeStatus::NotDownloaded: - case NodeStatus::Partly: [MWMStorage downloadNode:@(countryId.c_str())]; break; - case NodeStatus::Undefined: - case NodeStatus::Error: [MWMStorage retryDownloadNode:@(countryId.c_str())]; break; - case NodeStatus::OnDiskOutOfDate: [MWMStorage updateNode:@(countryId.c_str())]; break; - case NodeStatus::Downloading: - case NodeStatus::Applying: - case NodeStatus::InQueue: [MWMStorage cancelDownloadNode:@(countryId.c_str())]; break; - case NodeStatus::OnDisk: break; - } -} - -- (NSString *)distanceToObject -{ - CLLocation * lastLocation = [MWMLocationManager lastLocation]; - auto data = self.data; - if (!lastLocation || !data) - return @""; - std::string distance; - CLLocationCoordinate2D const & coord = lastLocation.coordinate; - ms::LatLon const & target = data.latLon; - double meters = ms::DistanceOnEarth(coord.latitude, coord.longitude, target.m_lat, target.m_lon); - if (meters < 0.) - return nil; - - auto units = measurement_utils::Units::Metric; - settings::TryGet(settings::kMeasurementUnits, units); - - std::string s; - switch (units) { - case measurement_utils::Units::Imperial: - measurement_utils::FormatDistanceWithLocalization(meters, - distance, - [[@" " stringByAppendingString:L(@"mile")] UTF8String], - [[@" " stringByAppendingString:L(@"foot")] UTF8String]); - case measurement_utils::Units::Metric: - measurement_utils::FormatDistanceWithLocalization(meters, - distance, - [[@" " stringByAppendingString:L(@"kilometer")] UTF8String], - [[@" " stringByAppendingString:L(@"meter")] UTF8String]); - } - return @(distance.c_str()); -} - -#pragma mark - MWMFrameworkStorageObserver - -- (void)processCountryEvent:(NSString *)countryId -{ - auto data = self.data; - if (!data || [data countryId] != countryId.UTF8String) - return; - - if ([data countryId] == kInvalidCountryId) - { - [self.layout processDownloaderEventWithStatus:storage::NodeStatus::Undefined progress:0]; - return; - } - - NodeStatuses statuses; - GetFramework().GetStorage().GetNodeStatuses([data countryId], statuses); - - auto const status = statuses.m_status; - if (status == self.currentDownloaderStatus) - return; - - self.currentDownloaderStatus = status; - [self.layout processDownloaderEventWithStatus:status progress:0]; -} - -- (void)processCountry:(NSString *)countryId - downloadedBytes:(uint64_t)downloadedBytes - totalBytes:(uint64_t)totalBytes -{ - auto data = self.data; - if (!data || countryId.UTF8String == kInvalidCountryId || [data countryId] != countryId.UTF8String) - return; - - [self.layout - processDownloaderEventWithStatus:storage::NodeStatus::Downloading - progress:static_cast(downloadedBytes) / totalBytes]; -} - -#pragma mark - MWMPlacePageLayoutDelegate - -- (void)onPlacePageTopBoundChanged:(CGFloat)bound -{ - [self.ownerViewController setPlacePageTopBound:bound]; - [self.layout checkCellsVisible]; -} - -- (void)destroyLayout { self.layout = nil; } - (void)closePlacePage { GetFramework().DeactivateMapSelection(true); } -- (BOOL)isPreviewPlus { return self.data.isPreviewPlus; } -- (void)onExpanded -{ - if (self.isSponsoredOpenLogged) - return; - self.isSponsoredOpenLogged = YES; - auto data = self.data; - if (!data) - return; - NSMutableDictionary * parameters = [@{} mutableCopy]; - if (data.isBooking) - parameters[kStatProvider] = kStatBooking; - else if (data.isPartner) - parameters[kStatProvider] = data.partnerName; - else if (data.isHolidayObject) - parameters[kStatProvider] = kStatHoliday; - else if (data.isPromoCatalog) - parameters[kStatProvider] = kStatMapsmeGuides; - - parameters[kStatConnection] = [Statistics connectionTypeString]; - parameters[kStatTags] = data.statisticsTags; - [Statistics logEvent:kStatPlacepageSponsoredOpen withParameters:parameters]; -} - -- (void)logStateChangeEventWithValue:(NSNumber *)value { - MWMPlacePageData * data = self.data; - if (data == nil) return; - - NSString *types = data.statisticsTags; - NSNumber *lat = [NSNumber numberWithFloat:data.latLon.m_lat]; - NSNumber *lon = [NSNumber numberWithFloat:data.latLon.m_lon]; - [Statistics logEvent:kStatPlacePageChangeState withParameters:@{kStatTypes: types, - kStatLat: lat, - kStatLon: lon, - kStatValue: value}]; -} - -#pragma mark - MWMLocationObserver - -- (void)onHeadingUpdate:(CLHeading *)heading -{ - auto lastLocation = [MWMLocationManager lastLocation]; - auto data = self.data; - if (!lastLocation || !data) - return; - - auto const locationMercator = lastLocation.mercator; - auto const dataMercator = data.mercator; - if (base::AlmostEqualAbs(locationMercator, dataMercator, 1e-10)) - return; - - auto const info = location_util::compassInfoFromHeading(heading); - auto const angle = ang::AngleTo(locationMercator, dataMercator) + info.m_bearing; - [self.layout rotateDirectionArrowToAngle:angle]; -} - -- (void)setupSpeedAndDistance -{ - [self.layout setDistanceToObject:self.distanceToObject]; - if (self.data.isMyPosition) - [self.layout setSpeedAndAltitude:location_helpers::formattedSpeedAndAltitude(MWMLocationManager.lastLocation)]; -} - -- (void)onLocationUpdate:(CLLocation *)location -{ - [self setupSpeedAndDistance]; -} - -- (void)mwm_refreshUI { [self.layout mwm_refreshUI]; } - (void)routeFrom:(PlacePageData *)data { [Statistics logEvent:kStatEventName(kStatPlacePage, kStatBuildRoute) @@ -369,16 +88,6 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type) [self closePlacePage]; } -- (void)routeFrom -{ - [Statistics logEvent:kStatEventName(kStatPlacePage, kStatBuildRoute) - withParameters:@{kStatValue : kStatSource}]; - - MWMRoutePoint * point = [self routePointWithType:MWMRoutePointTypeStart intermediateIndex:0]; - [MWMRouter buildFromPoint:point bestRouter:YES]; - [self closePlacePage]; -} - - (void)routeTo:(PlacePageData *)data { [Statistics logEvent:kStatEventName(kStatPlacePage, kStatBuildRoute) withParameters:@{kStatValue : kStatDestination}]; @@ -396,36 +105,12 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type) [self closePlacePage]; } -- (void)routeTo -{ - [Statistics logEvent:kStatEventName(kStatPlacePage, kStatBuildRoute) - withParameters:@{kStatValue : kStatDestination}]; - - if ([MWMRouter isOnRoute]) - [MWMRouter stopRouting]; - - if ([MWMTrafficManager transitEnabled]) - [MWMRouter setType:MWMRouterTypePublicTransport]; - - MWMRoutePoint * point = [self routePointWithType:MWMRoutePointTypeFinish intermediateIndex:0]; - [MWMRouter buildToPoint:point bestRouter:YES]; - [self closePlacePage]; -} - - (void)routeAddStop:(PlacePageData *)data { MWMRoutePoint *point = [self routePoint:data withType:MWMRoutePointTypeIntermediate intermediateIndex:0]; [MWMRouter addPointAndRebuild:point]; [self closePlacePage]; } -- (void)routeAddStop -{ - MWMRoutePoint * point = - [self routePointWithType:MWMRoutePointTypeIntermediate intermediateIndex:0]; - [MWMRouter addPointAndRebuild:point]; - [self closePlacePage]; -} - - (void)routeRemoveStop:(PlacePageData *)data { MWMRoutePoint *point = nil; auto const intermediateIndex = GetFramework().GetCurrentPlacePageInfo().GetIntermediateIndex(); @@ -444,29 +129,6 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type) [self closePlacePage]; } -- (void)routeRemoveStop -{ - MWMRoutePoint * point = nil; - auto const intermediateIndex = GetFramework().GetCurrentPlacePageInfo().GetIntermediateIndex(); - switch (GetFramework().GetCurrentPlacePageInfo().GetRouteMarkType()) - { - case RouteMarkType::Start: - point = - [self routePointWithType:MWMRoutePointTypeStart intermediateIndex:intermediateIndex]; - break; - case RouteMarkType::Finish: - point = - [self routePointWithType:MWMRoutePointTypeFinish intermediateIndex:intermediateIndex]; - break; - case RouteMarkType::Intermediate: - point = [self routePointWithType:MWMRoutePointTypeIntermediate - intermediateIndex:intermediateIndex]; - break; - } - [MWMRouter removePointAndRebuild:point]; - [self closePlacePage]; -} - - (void)orderTaxi:(PlacePageData *)data { NSString * providerString = nil; @@ -554,57 +216,10 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type) intermediateIndex:intermediateIndex]; } -- (MWMRoutePoint *)routePointWithType:(MWMRoutePointType)type - intermediateIndex:(size_t)intermediateIndex -{ - auto data = self.data; - if (!data) - return nil; - - if (data.isMyPosition) - return [[MWMRoutePoint alloc] initWithLastLocationAndType:type - intermediateIndex:intermediateIndex]; - - NSString * title = nil; - if (data.title.length > 0) - title = data.title; - else if (data.address.length > 0) - title = data.address; - else if (data.subtitle.length > 0) - title = data.subtitle; - else if (data.isBookmark) - title = data.externalTitle; - else - title = L(@"core_placepage_unknown_place"); - - NSString * subtitle = nil; - if (data.subtitle.length > 0 && ![title isEqualToString:data.subtitle]) - subtitle = data.subtitle; - - return [[MWMRoutePoint alloc] initWithPoint:data.mercator - title:title - subtitle:subtitle - type:type - intermediateIndex:intermediateIndex]; -} - - - (void)share:(PlacePageData *)data { [Statistics logEvent:kStatEventName(kStatPlacePage, kStatShare)]; MWMActivityViewController * shareVC = [MWMActivityViewController shareControllerForPlacePage:data]; - [shareVC presentInParentViewController:self.ownerViewController anchorView:self.layout.shareAnchor]; -} - -- (void)share -{ - auto data = self.data; - if (!data) - return; - [Statistics logEvent:kStatEventName(kStatPlacePage, kStatShare)]; - MWMActivityViewController * shareVC = [MWMActivityViewController - shareControllerForPlacePageObject:static_cast>(data)]; - [shareVC presentInParentViewController:self.ownerViewController - anchorView:self.layout.shareAnchor]; + [shareVC presentInParentViewController:self.ownerViewController anchorView:nil]; // TODO: add anchor for iPad } - (void)editPlace @@ -620,16 +235,6 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type) [[MWMMapViewControlsManager manager] addPlace:YES hasPoint:NO point:m2::PointD()]; } -- (void)addPlace -{ - auto data = self.data; - if (!data) - return; - [Statistics logEvent:kStatEditorAddClick - withParameters:@{kStatValue : kStatPlacePageNonBuilding}]; - [[MWMMapViewControlsManager manager] addPlace:NO hasPoint:YES point:data.mercator]; -} - - (void)addPlace:(CLLocationCoordinate2D)coordinate { [Statistics logEvent:kStatEditorAddClick @@ -661,17 +266,6 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type) f.UpdatePlacePageInfoForCurrentSelection(buildInfo); } -- (void)addBookmark -{ - auto data = self.data; - if (!data) - return; - RegisterEventIfPossible(eye::MapObject::Event::Type::AddToBookmark); - [Statistics logEvent:kStatBookmarkCreated]; - [data updateBookmarkStatus:YES]; - [self.layout reloadBookmarkSection:YES]; -} - - (void)removeBookmark:(PlacePageData *)data { [Statistics logEvent:kStatEventName(kStatPlacePage, kStatBookmarks) @@ -686,37 +280,12 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type) f.UpdatePlacePageInfoForCurrentSelection(buildInfo); } -- (void)removeBookmark -{ - auto data = self.data; - if (!data) - return; - [Statistics logEvent:kStatEventName(kStatPlacePage, kStatBookmarks) - withParameters:@{kStatValue : kStatRemove}]; - [data updateBookmarkStatus:NO]; - [self.layout reloadBookmarkSection:NO]; -} - - (void)call:(PlacePageData *)data { if (data.infoData.phoneUrl && [UIApplication.sharedApplication canOpenURL:data.infoData.phoneUrl]) { [UIApplication.sharedApplication openURL:data.infoData.phoneUrl options:@{} completionHandler:nil]; } } -- (void)call -{ - MWMPlacePageData *data = self.data; - if (!data) return; - NSString *filteredDigits = [[data.phoneNumber componentsSeparatedByCharactersInSet: - [[NSCharacterSet decimalDigitCharacterSet] invertedSet]] - componentsJoinedByString:@""]; - NSString *resultNumber = [data.phoneNumber hasPrefix:@"+"] ? [NSString stringWithFormat:@"+%@", filteredDigits] : filteredDigits; - NSURL *phoneURL = [NSURL URLWithString:[NSString stringWithFormat:@"tel://%@", resultNumber]]; - if ([UIApplication.sharedApplication canOpenURL:phoneURL]) { - [UIApplication.sharedApplication openURL:phoneURL options:@{} completionHandler:nil]; - } -} - - (void)editBookmark { [self.ownerViewController openBookmarkEditor]; } @@ -746,66 +315,16 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type) } } -- (void)openPartnerWithStatisticLog:(NSString *)eventName proposedUrl:(NSURL *)proposedUrl -{ - auto data = self.data; - if (!data) - return; - - logSponsoredEvent(data, eventName); - - NSURL * url = data.isPartnerAppInstalled ? data.deepLink : proposedUrl; - NSAssert(url, @"Sponsored url can't be nil!"); - - [UIApplication.sharedApplication openURL:url options:@{} completionHandler:nil]; - - if (data.isBooking) - [MWMEye transitionToBookingWithPos:CGPointMake(data.mercator.x, data.mercator.y)]; -} - - (void)book:(PlacePageData *)data { NSURL *url = [NSURL URLWithString:data.sponsoredURL]; [self openPartner:data withStatisticLog:kStatPlacePageHotelBook proposedUrl:url]; } -- (void)book -{ - auto data = self.data; - if (!data) - return; - NSString * eventName = nil; - if (data.isBooking) - { - eventName = kStatPlacePageHotelBook; - } - else if (data.isOpentable) - { - eventName = kStatPlacePageRestaurantBook; - } - else - { - NSAssert(false, @"Invalid book case!"); - return; - } - - [self openPartnerWithStatisticLog:eventName proposedUrl:data.sponsoredURL]; -} - - (void)openDescriptionUrl:(PlacePageData *)data { NSURL *url = [NSURL URLWithString:data.sponsoredDescriptionURL]; [self openPartner:data withStatisticLog:kStatPlacePageHotelDetails proposedUrl:url]; } -- (void)openDescriptionUrl -{ - auto data = self.data; - if (!data) - return; - - [self openPartnerWithStatisticLog:kStatPlacePageHotelDetails - proposedUrl:data.sponsoredDescriptionURL]; -} - - (void)openMoreUrl:(PlacePageData *)data { NSURL *url = [NSURL URLWithString:data.sponsoredMoreURL]; if (!url) { return; } @@ -815,45 +334,11 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type) [MWMEye transitionToBookingWithPos:CGPointMake(mercator.x, mercator.y)]; } -- (void)openMoreUrl -{ - auto data = self.data; - if (!data) - return; - - logSponsoredEvent(data, kStatPlacePageHotelMore); - [UIApplication.sharedApplication openURL:data.sponsoredMoreURL - options:@{} completionHandler:nil]; - [MWMEye transitionToBookingWithPos:CGPointMake(data.mercator.x, data.mercator.y)]; -} - - (void)openReviewUrl:(PlacePageData *)data { NSURL *url = [NSURL URLWithString:data.sponsoredReviewURL]; [self openPartner:data withStatisticLog:kStatPlacePageHotelReviews proposedUrl:url]; } -- (void)openReviewUrl -{ - auto data = self.data; - if (!data) - return; - - [self openPartnerWithStatisticLog:kStatPlacePageHotelReviews - proposedUrl:data.sponsoredReviewURL]; -} - -- (void)searchBookingHotels -{ - auto data = self.data; - if (!data) - return; - - logSponsoredEvent(data, kStatPlacePageHotelBook); - NSURL * url = data.bookingSearchURL; - NSAssert(url, @"Search url can't be nil!"); - [UIApplication.sharedApplication openURL:url options:@{} completionHandler:nil]; -} - - (void)openPartner:(PlacePageData *)data { logSponsoredEvent(data, kStatPlacePageSponsoredActionButtonClick); @@ -862,17 +347,6 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type) [UIApplication.sharedApplication openURL:url options:@{} completionHandler:nil]; } -- (void)openPartner -{ - auto data = self.data; - if (!data) - return; - logSponsoredEvent(data, kStatPlacePageSponsoredActionButtonClick); - NSURL * url = data.sponsoredURL; - NSAssert(url, @"Partner url can't be nil!"); - [UIApplication.sharedApplication openURL:url options:@{} completionHandler:nil]; -} - - (void)avoidDirty { [Statistics logEvent:kStatPlacepageDrivingOptionsAction withParameters:@{kStatType : [kStatUnpaved capitalizedString]}]; @@ -896,39 +370,6 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type) [self closePlacePage]; } - -- (void)showPhotoAtIndex:(NSInteger)index - referenceView:(UIView *)referenceView - referenceViewWhenDismissingHandler: - (MWMPlacePageButtonsDismissBlock)referenceViewWhenDismissingHandler -{ - auto data = self.data; - if (!data) - return; - logSponsoredEvent(self.data, kStatPlacePageHotelGallery); - auto galleryModel = [[MWMGalleryModel alloc] initWithTitle:self.hotelName items:data.photos]; - auto initialPhoto = galleryModel.items[index]; - auto photoVC = [[MWMPhotosViewController alloc] initWithPhotos:galleryModel - initialPhoto:initialPhoto - referenceView:referenceView]; - photoVC.referenceViewForPhotoWhenDismissingHandler = ^UIView *(MWMGalleryItemModel * photo) { - return referenceViewWhenDismissingHandler([galleryModel.items indexOfObject:photo]); - }; - - [[MapViewController sharedController] presentViewController:photoVC animated:YES completion:nil]; -} - -- (void)showGallery -{ - auto data = self.data; - if (!data) - return; - logSponsoredEvent(self.data, kStatPlacePageHotelGallery); - auto galleryModel = [[MWMGalleryModel alloc] initWithTitle:self.hotelName items:data.photos]; - auto galleryVc = [MWMGalleryViewController instanceWithModel:galleryModel]; - [[MapViewController sharedController].navigationController pushViewController:galleryVc animated:YES]; -} - - (void)showUGCAddReview:(PlacePageData *)data rating:(UgcSummaryRatingType)value fromSource:(MWMUGCReviewSource)source { NSMutableArray *ratings = [NSMutableArray array]; @@ -964,50 +405,10 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type) [[MapViewController sharedController].navigationController pushViewController:ugcVC animated:YES]; } -- (void)showUGCAddReview:(UgcSummaryRatingType)value fromSource:(MWMUGCReviewSource)source -{ - auto data = self.data; - if (!data) - return; - - NSMutableArray * ratings = [@[] mutableCopy]; - for (auto & cat : data.ugcRatingCategories) - [ratings addObject:[[MWMUGCRatingStars alloc] initWithTitle:@(cat.c_str()) - value:value - maxValue:5.0f]]; - auto title = data.title; - - RegisterEventIfPossible(eye::MapObject::Event::Type::UgcEditorOpened); - NSString * sourceString; - switch (source) { - case MWMUGCReviewSourcePlacePage: - sourceString = kStatPlacePage; - break; - case MWMUGCReviewSourcePlacePagePreview: - sourceString = kStatPlacePagePreview; - break; - case MWMUGCReviewSourceNotification: - sourceString = kStatNotification; - break; - } - [Statistics logEvent:kStatUGCReviewStart - withParameters:@{ - kStatIsAuthenticated: @([MWMUser isAuthenticated]), - kStatIsOnline: - @(GetPlatform().ConnectionStatus() != Platform::EConnectionType::CONNECTION_NONE), - kStatMode: kStatAdd, - kStatFrom: sourceString - }]; - auto ugcReviewModel = - [[MWMUGCReviewModel alloc] initWithReviewValue:value ratings:ratings title:title text:@""]; - auto ugcVC = [MWMUGCAddReviewController instanceWithModel:ugcReviewModel saver: self]; - [[MapViewController sharedController].navigationController pushViewController:ugcVC animated:YES]; -} - - (void)searchSimilar { - [Statistics logEvent:@"Placepage_Hotel_search_similar" - withParameters:@{kStatProvider : self.data.isBooking ? kStatBooking : kStatOSM}]; +// [Statistics logEvent:@"Placepage_Hotel_search_similar" +// withParameters:@{kStatProvider : self.data.isBooking ? kStatBooking : kStatOSM}]; MWMHotelParams * params = [[MWMHotelParams alloc] init]; [[MWMSearchManager manager] showHotelFilterWithParams:params @@ -1025,11 +426,6 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type) [[MapViewController sharedController].navigationController pushViewController:vc animated:YES]; } -- (void)showAllFacilities -{ - NSAssert(false, @"deprecated"); -} - - (void)openLocalAdsURL:(PlacePageData *)data { NSURL *url = [NSURL URLWithString:data.infoData.localAdsUrl]; @@ -1048,33 +444,6 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type) [self.ownerViewController openUrl:url]; } -- (void)openLocalAdsURL -{ - auto data = self.data; - if (!data) - return; - auto url = [NSURL URLWithString:data.localAdsURL]; - if (!url) - return; - - auto const & feature = [data featureId]; - [Statistics logEvent:kStatPlacePageOwnershipButtonClick - withParameters:@{ - @"mwm_name" : @(feature.GetMwmName().c_str()), - @"mwm_version" : @(feature.GetMwmVersion()), - @"feature_id" : @(feature.m_index) - } - atLocation:[MWMLocationManager lastLocation]]; - - [self.ownerViewController openUrl:url]; -} - -//- (void)openSponsoredURL:(nullable NSURL *)url -//{ -// if (auto u = url ?: self.data.sponsoredURL) -// [self.ownerViewController openUrl:u]; -//} - - (void)openReviews:(id _Nonnull)reviewsViewModel { auto reviewsVC = [[MWMReviewsViewController alloc] initWithViewModel:reviewsViewModel]; @@ -1119,18 +488,14 @@ void RegisterEventIfPossible(eye::MapObject::Event::Type const type) - (void)updateAvailableArea:(CGRect)frame { - auto data = self.data; - if (data) - [self.layout updateAvailableArea:frame]; +// auto data = self.data; +// if (data) +// [self.layout updateAvailableArea:frame]; } #pragma mark - MWMFeatureHolder - (FeatureID const &)featureId { return GetFramework().GetCurrentPlacePageInfo().GetID(); } -#pragma mark - MWMBookingInfoHolder - -- (std::vector const &)hotelFacilities { return self.data.facilities; } -- (NSString *)hotelName { return self.data.title; } #pragma mark - Ownerfacilities diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageManagerHelper.h b/iphone/Maps/UI/PlacePage/MWMPlacePageManagerHelper.h index b9c7392cbb..4c79fa25d2 100644 --- a/iphone/Maps/UI/PlacePage/MWMPlacePageManagerHelper.h +++ b/iphone/Maps/UI/PlacePage/MWMPlacePageManagerHelper.h @@ -6,7 +6,6 @@ @interface MWMPlacePageManagerHelper : NSObject + (void)updateAvailableArea:(CGRect)frame; -+ (void)showUGCAddReview:(UgcSummaryRatingType)value fromSource:(MWMUGCReviewSource)source; + (void)showUGCAddReview:(PlacePageData *)data rating:(UgcSummaryRatingType)value fromSource:(MWMUGCReviewSource)source; diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageManagerHelper.mm b/iphone/Maps/UI/PlacePage/MWMPlacePageManagerHelper.mm index 823ce1048d..6eb5e205e7 100644 --- a/iphone/Maps/UI/PlacePage/MWMPlacePageManagerHelper.mm +++ b/iphone/Maps/UI/PlacePage/MWMPlacePageManagerHelper.mm @@ -11,7 +11,6 @@ @interface MWMPlacePageManager () - (void)updateAvailableArea:(CGRect)frame; -- (void)showUGCAddReview:(UgcSummaryRatingType)value fromPreview:(BOOL)fromPreview; - (void)showUGCAddReview:(PlacePageData *)data rating:(UgcSummaryRatingType)value fromSource:(MWMUGCReviewSource)source; - (void)searchSimilar; - (void)editPlace; @@ -52,12 +51,6 @@ [[MWMMapViewControlsManager manager].placePageManager updateAvailableArea:frame]; } -+ (void)showUGCAddReview:(UgcSummaryRatingType)value fromSource:(MWMUGCReviewSource)source -{ - [[MWMMapViewControlsManager manager].placePageManager showUGCAddReview:value - fromSource:source]; -} - + (void)showUGCAddReview:(PlacePageData *)data rating:(UgcSummaryRatingType)value fromSource:(MWMUGCReviewSource)source { [[MWMMapViewControlsManager manager].placePageManager showUGCAddReview:data rating:value fromSource:source]; } diff --git a/iphone/Maps/UI/PlacePage/MWMPlacePageProtocol.h b/iphone/Maps/UI/PlacePage/MWMPlacePageProtocol.h index 6db9de1dc6..4a30308722 100644 --- a/iphone/Maps/UI/PlacePage/MWMPlacePageProtocol.h +++ b/iphone/Maps/UI/PlacePage/MWMPlacePageProtocol.h @@ -1,31 +1,4 @@ #import "MWMMapViewControlsManager.h" -#import "MWMPlacePageButtonsProtocol.h" - -@class MWMViewController; - -@protocol MWMActionBarProtocol - -- (void)routeFrom; -- (void)routeTo; -- (void)routeAddStop; -- (void)routeRemoveStop; - -- (void)share; - -- (void)addBookmark; -- (void)removeBookmark; - -- (void)call; -- (void)book; -- (void)searchBookingHotels; - -- (void)openPartner; -- (void)downloadSelectedArea; -- (void)avoidToll; -- (void)avoidDirty; -- (void)avoidFerry; - -@end struct FeatureID; @@ -35,24 +8,9 @@ struct FeatureID; @end -namespace booking -{ -struct HotelFacility; -} +@protocol MWMPlacePageProtocol -@protocol MWMBookingInfoHolder - -- (NSString *)hotelName; - -@end - -@protocol MWMPlacePageProtocol - -- (void)show; -- (void)update; - (void)showReview; - (BOOL)isPPShown; -- (void)dismiss; -- (void)mwm_refreshUI; @end diff --git a/iphone/Maps/UI/PlacePage/PlacePage.storyboard b/iphone/Maps/UI/PlacePage/PlacePage.storyboard index 8f07a1f51e..bcd43a162a 100644 --- a/iphone/Maps/UI/PlacePage/PlacePage.storyboard +++ b/iphone/Maps/UI/PlacePage/PlacePage.storyboard @@ -2083,7 +2083,7 @@ -