diff --git a/iphone/CoreApi/CoreApi/DeepLink/DeepLinkParser.h b/iphone/CoreApi/CoreApi/DeepLink/DeepLinkParser.h index d62b92104d..c40a6f321b 100644 --- a/iphone/CoreApi/CoreApi/DeepLink/DeepLinkParser.h +++ b/iphone/CoreApi/CoreApi/DeepLink/DeepLinkParser.h @@ -8,7 +8,9 @@ typedef NS_ENUM(NSUInteger, DeeplinkUrlType) { DeeplinkUrlTypeRoute, DeeplinkUrlTypeSearch, DeeplinkUrlTypeCrosshair, - DeeplinkUrlTypeOAuth2 + DeeplinkUrlTypeOAuth2, + DeeplinkUrlTypeMenu, + DeeplinkUrlTypeSettings }; @interface DeepLinkParser : NSObject diff --git a/iphone/CoreApi/CoreApi/DeepLink/DeepLinkParser.mm b/iphone/CoreApi/CoreApi/DeepLink/DeepLinkParser.mm index f50f0a2b0a..a830373133 100644 --- a/iphone/CoreApi/CoreApi/DeepLink/DeepLinkParser.mm +++ b/iphone/CoreApi/CoreApi/DeepLink/DeepLinkParser.mm @@ -6,15 +6,18 @@ static inline DeeplinkUrlType deeplinkUrlType(url_scheme::ParsedMapApi::UrlType type) { + using namespace url_scheme; switch (type) - { - case url_scheme::ParsedMapApi::UrlType::Incorrect: return DeeplinkUrlTypeIncorrect; - case url_scheme::ParsedMapApi::UrlType::Map: return DeeplinkUrlTypeMap; - case url_scheme::ParsedMapApi::UrlType::Route: return DeeplinkUrlTypeRoute; - case url_scheme::ParsedMapApi::UrlType::Search: return DeeplinkUrlTypeSearch; - case url_scheme::ParsedMapApi::UrlType::Crosshair: return DeeplinkUrlTypeCrosshair; - case url_scheme::ParsedMapApi::UrlType::OAuth2: return DeeplinkUrlTypeOAuth2; - } + { + case ParsedMapApi::UrlType::Incorrect: return DeeplinkUrlTypeIncorrect; + case ParsedMapApi::UrlType::Map: return DeeplinkUrlTypeMap; + case ParsedMapApi::UrlType::Route: return DeeplinkUrlTypeRoute; + case ParsedMapApi::UrlType::Search: return DeeplinkUrlTypeSearch; + case ParsedMapApi::UrlType::Crosshair: return DeeplinkUrlTypeCrosshair; + case ParsedMapApi::UrlType::OAuth2: return DeeplinkUrlTypeOAuth2; + case ParsedMapApi::UrlType::Menu: return DeeplinkUrlTypeMenu; + case ParsedMapApi::UrlType::Settings: return DeeplinkUrlTypeSettings; + } } @implementation DeepLinkParser diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm index 7ad7002306..42551ba1dc 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/MWMNavigationDashboardManager.mm @@ -232,7 +232,7 @@ NSString *const kNavigationControlViewXibName = @"NavigationControlView"; } - (IBAction)settingsButtonAction { - [[MapViewController sharedController] performSegueWithIdentifier:@"Map2Settings" sender:nil]; + [[MapViewController sharedController] openSettings]; } - (IBAction)stopRoutingButtonAction { diff --git a/iphone/Maps/Classes/MapViewController.h b/iphone/Maps/Classes/MapViewController.h index 3657a6e340..f47edd744d 100644 --- a/iphone/Maps/Classes/MapViewController.h +++ b/iphone/Maps/Classes/MapViewController.h @@ -24,6 +24,8 @@ - (void)performAction:(NSString *_Nonnull)action; +- (void)openMenu; +- (void)openSettings; - (void)openMapsDownloader:(MWMMapDownloaderMode)mode; - (void)openEditor; - (void)openBookmarkEditor; diff --git a/iphone/Maps/Classes/MapViewController.mm b/iphone/Maps/Classes/MapViewController.mm index bf16fa37f3..874ddb951a 100644 --- a/iphone/Maps/Classes/MapViewController.mm +++ b/iphone/Maps/Classes/MapViewController.mm @@ -37,6 +37,7 @@ NSString *const kDownloaderSegue = @"Map2MapDownloaderSegue"; NSString *const kEditorSegue = @"Map2EditorSegue"; NSString *const kUDViralAlertWasShown = @"ViralAlertWasShown"; NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; +NSString *const kSettingsSegue = @"Map2Settings"; } // namespace @interface NSValueWrapper : NSObject @@ -481,6 +482,13 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; } #pragma mark - Open controllers +- (void)openMenu { + [self.controlsManager.tabBarController onMenuButtonPressed:self]; +} + +- (void)openSettings { + [self performSegueWithIdentifier:kSettingsSegue sender:nil]; +} - (void)openMapsDownloader:(MWMMapDownloaderMode)mode { [self performSegueWithIdentifier:kDownloaderSegue sender:@(mode)]; diff --git a/iphone/Maps/Core/DeepLink/DeepLinkHandler.swift b/iphone/Maps/Core/DeepLink/DeepLinkHandler.swift index 04e6e23a2c..8fee778df1 100644 --- a/iphone/Maps/Core/DeepLink/DeepLinkHandler.swift +++ b/iphone/Maps/Core/DeepLink/DeepLinkHandler.swift @@ -78,6 +78,7 @@ // TODO(AB): Rewrite API so iOS and Android will call only one C++ method to clear/set API state. // This call is also required for DeepLinkParser.showMap, and it also clears old API points... let urlType = DeepLinkParser.parseAndSetApiURL(url) + LOG(.info, "URL type: \(urlType)") switch urlType { case .route: if let adapter = DeepLinkRouteStrategyAdapter(url) { @@ -86,12 +87,10 @@ return true } return false; - case .map: DeepLinkParser.executeMapApiRequest() MapsAppDelegate.theApp().showMap() return true - case .search: let sd = DeepLinkSearchData(); let kSearchInViewportZoom: Int32 = 16; @@ -111,18 +110,24 @@ MWMMapViewControlsManager.manager()?.searchText(sd.query, forInputLocale: sd.locale) } return true - + case .menu: + MapsAppDelegate.theApp().mapViewController.openMenu() + return true + case .settings: + MapsAppDelegate.theApp().mapViewController.openSettings() + return true case .crosshair: // Not supported on iOS. return false; - case .oAuth2: // TODO: support OAuth2 return false; - case .incorrect: // Invalid URL or API parameters. return false; + @unknown default: + LOG(.critical, "Unknown URL type: \(urlType)") + return false; } } } diff --git a/iphone/Maps/UI/BottomMenu/Menu/BottomMenuInteractor.swift b/iphone/Maps/UI/BottomMenu/Menu/BottomMenuInteractor.swift index b9098ff7a7..8457445c3c 100644 --- a/iphone/Maps/UI/BottomMenu/Menu/BottomMenuInteractor.swift +++ b/iphone/Maps/UI/BottomMenu/Menu/BottomMenuInteractor.swift @@ -62,7 +62,7 @@ extension BottomMenuInteractor: BottomMenuInteractorProtocol { func openSettings() { close() - mapViewController?.performSegue(withIdentifier: "Map2Settings", sender: nil) + mapViewController?.openSettings() } func shareLocation(cell: BottomMenuItemCell) {