diff --git a/data/strings/strings.txt b/data/strings/strings.txt index 7e21145870..af643309e8 100644 --- a/data/strings/strings.txt +++ b/data/strings/strings.txt @@ -3253,7 +3253,7 @@ zh-Hant = 分享 [email] - comment = Share by email button text, also used in editor. + comment = Share by email button text, also used in editor and About. tags = android,ios en = Email ar = البريد الالكتروني diff --git a/iphone/Maps/Bridging-Header.h b/iphone/Maps/Bridging-Header.h index 13d7f4a3cd..33e7b3034d 100644 --- a/iphone/Maps/Bridging-Header.h +++ b/iphone/Maps/Bridging-Header.h @@ -30,6 +30,7 @@ #import "MWMKeyboard.h" #import "MWMLocationManager.h" #import "MWMLocationModeListener.h" +#import "MWMMailViewController.h" #import "MWMMapDownloaderButtonTableViewCell.h" #import "MWMMapDownloaderCellHeader.h" #import "MWMMapDownloaderLargeCountryTableViewCell.h" diff --git a/iphone/Maps/Categories/UIKitCategories.h b/iphone/Maps/Categories/UIKitCategories.h index 25c89b596f..76ad6db92a 100644 --- a/iphone/Maps/Categories/UIKitCategories.h +++ b/iphone/Maps/Categories/UIKitCategories.h @@ -64,7 +64,13 @@ static inline CGFloat LengthCGPoint(CGPoint point) @interface UIViewController (Safari) -- (void)openUrl:(NSURL *)url; +// Opens http(s) urls in SFSafariViewController. +// Does nothing and returns NO (false) if the url is invalid. +- (BOOL)openUrl:(NSString *)urlString; + +// Pass safari = YES (true) to open url externally, and NO (false) to open +// in SFSafariViewController (see the method above). +- (BOOL)openUrl:(NSString *)urlString inSafari:(BOOL)safari; @end diff --git a/iphone/Maps/Categories/UIKitCategories.m b/iphone/Maps/Categories/UIKitCategories.m index ec87bb6829..a8371bd459 100644 --- a/iphone/Maps/Categories/UIKitCategories.m +++ b/iphone/Maps/Categories/UIKitCategories.m @@ -169,23 +169,37 @@ @implementation UIViewController (Safari) -- (void)openUrl:(NSURL *)url +- (BOOL)openUrl:(NSString * _Nonnull)urlString { + return [self openUrl:urlString inSafari:NO]; +} + +- (BOOL)openUrl:(NSString *)urlString inSafari:(BOOL)safari +{ + NSURL * url = [[NSURL alloc] initWithString:urlString]; if (!url) { - NSAssert(false, @"URL is nil!"); - return; + NSAssert(false, @"Invalid URL %@", urlString); + return NO; } NSString * scheme = url.scheme; - if (!([scheme isEqualToString:@"http"] || [scheme isEqualToString:@"https"])) + if (!([scheme isEqualToString:@"https"] || [scheme isEqualToString:@"http"])) { - NSAssert(false, @"Incorrect url's scheme!"); - return; + NSAssert(false, @"Incorrect url scheme %@", scheme); + return NO; } - SFSafariViewController * svc = [[SFSafariViewController alloc] initWithURL:url]; - svc.delegate = self; - [self.navigationController presentViewController:svc animated:YES completion:nil]; + if (safari) + { + [UIApplication.sharedApplication openURL:url options:@{} completionHandler:nil]; + } + else + { + SFSafariViewController * svc = [[SFSafariViewController alloc] initWithURL:url]; + svc.delegate = self; + [self.navigationController presentViewController:svc animated:YES completion:nil]; + } + return YES; } @end diff --git a/iphone/Maps/Classes/Components/CopyableLabel.swift b/iphone/Maps/Classes/Components/CopyableLabel.swift new file mode 100644 index 0000000000..18d311f755 --- /dev/null +++ b/iphone/Maps/Classes/Components/CopyableLabel.swift @@ -0,0 +1,53 @@ +// Label shows copy popup menu on tap or long tap. +class CopyableLabel: UILabel { + + override init(frame: CGRect) { + super.init(frame: frame) + self.sharedInit() + } + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + self.sharedInit() + } + + private func sharedInit() { + self.isUserInteractionEnabled = true + self.gestureRecognizers = [ + UILongPressGestureRecognizer(target: self, action: #selector(self.showMenu)), + UITapGestureRecognizer(target: self, action: #selector(self.showMenu)) + ] + } + + @objc func showMenu(_ recognizer: UILongPressGestureRecognizer) { + self.becomeFirstResponder() + + let menu = UIMenuController.shared + let locationOfTouchInLabel = recognizer.location(in: self) + + if !menu.isMenuVisible { + var rect = bounds + rect.origin = locationOfTouchInLabel + rect.size = CGSize(width: 1, height: 1) + if #available(iOS 13, *) { + menu.showMenu(from: self, rect: rect) + } else { + menu.setTargetRect(rect, in: self) + menu.setMenuVisible(true, animated: false) + } + } + } + + override func copy(_ sender: Any?) { + UIPasteboard.general.string = text + UIMenuController.shared.setMenuVisible(false, animated: true) + } + + override var canBecomeFirstResponder: Bool { + return true + } + + override func canPerformAction(_ action: Selector, withSender sender: Any?) -> Bool { + return action == #selector(UIResponderStandardEditActions.copy) + } +} diff --git a/iphone/Maps/Classes/CustomAlert/MWMOsmAuthAlert.mm b/iphone/Maps/Classes/CustomAlert/MWMOsmAuthAlert.mm index 47d4add475..6823948b85 100644 --- a/iphone/Maps/Classes/CustomAlert/MWMOsmAuthAlert.mm +++ b/iphone/Maps/Classes/CustomAlert/MWMOsmAuthAlert.mm @@ -44,8 +44,7 @@ extern NSString * const kMap2GoogleLoginSegue; - (IBAction)signUpTap { [self close:^{ - NSURL * url = [NSURL URLWithString:@(osm::OsmOAuth::ServerAuth().GetRegistrationURL().c_str())]; - [self.alertController.ownerViewController openUrl:url]; + [self.alertController.ownerViewController openUrl:@(osm::OsmOAuth::ServerAuth().GetRegistrationURL().c_str())]; }]; } diff --git a/iphone/Maps/Classes/CustomViews/Login/MWMAuthorizationLoginViewController.mm b/iphone/Maps/Classes/CustomViews/Login/MWMAuthorizationLoginViewController.mm index 66a5f65f17..096d6153e3 100644 --- a/iphone/Maps/Classes/CustomViews/Login/MWMAuthorizationLoginViewController.mm +++ b/iphone/Maps/Classes/CustomViews/Login/MWMAuthorizationLoginViewController.mm @@ -95,24 +95,24 @@ using namespace osm_auth_ios; { [self performOnlineAction:^ { - [self openUrl:[NSURL URLWithString:@(OsmOAuth::ServerAuth().GetRegistrationURL().c_str())]]; + [self openUrl:@(OsmOAuth::ServerAuth().GetRegistrationURL().c_str())]; }]; } - (IBAction)osmTap { - [self openUrl:[NSURL URLWithString:@"https://wiki.openstreetmap.org/wiki/Main_Page"]]; + [self openUrl:@"https://wiki.openstreetmap.org/wiki/Main_Page"]; } - (IBAction)historyTap { - [self openUrl:[NSURL URLWithString:[NSString stringWithFormat: + [self openUrl:[NSString stringWithFormat: #ifdef DEBUG - @"https://master.apis.dev.openstreetmap.org/user/%@/history" + @"https://master.apis.dev.openstreetmap.org/user/%@/history" #else - @"https://www.openstreetmap.org/user/%@/history" + @"https://www.openstreetmap.org/user/%@/history" #endif - , OSMUserName()]]]; + , OSMUserName()]]; } - (void)logout diff --git a/iphone/Maps/Classes/CustomViews/Login/MWMAuthorizationOSMLoginViewController.mm b/iphone/Maps/Classes/CustomViews/Login/MWMAuthorizationOSMLoginViewController.mm index 101e7165da..fa45b1b660 100644 --- a/iphone/Maps/Classes/CustomViews/Login/MWMAuthorizationOSMLoginViewController.mm +++ b/iphone/Maps/Classes/CustomViews/Login/MWMAuthorizationOSMLoginViewController.mm @@ -173,7 +173,7 @@ using namespace osm; - (IBAction)cancel { [self.navigationController popViewControllerAnimated:YES]; } - (IBAction)forgotPassword { - [self openUrl:[NSURL URLWithString:@(OsmOAuth::ServerAuth().GetResetPasswordURL().c_str())]]; + [self openUrl:@(OsmOAuth::ServerAuth().GetResetPasswordURL().c_str())]; } #pragma mark - Properties diff --git a/iphone/Maps/Images.xcassets/Bottom Menu/ic_menu_question.imageset/Contents.json b/iphone/Maps/Images.xcassets/Bottom Menu/ic_menu_question.imageset/Contents.json new file mode 100644 index 0000000000..ebbba13e12 --- /dev/null +++ b/iphone/Maps/Images.xcassets/Bottom Menu/ic_menu_question.imageset/Contents.json @@ -0,0 +1,29 @@ +{ + "images" : [ + { + "filename" : "outline_question_mark_white_29pt@1x.png", + "idiom" : "universal", + "language-direction" : "left-to-right", + "scale" : "1x" + }, + { + "filename" : "outline_question_mark_white_29pt@2x.png", + "idiom" : "universal", + "language-direction" : "left-to-right", + "scale" : "2x" + }, + { + "filename" : "outline_question_mark_white_29pt@3x.png", + "idiom" : "universal", + "language-direction" : "left-to-right", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + }, + "properties" : { + "template-rendering-intent" : "template" + } +} diff --git a/iphone/Maps/Images.xcassets/Bottom Menu/ic_menu_question.imageset/outline_question_mark_white_29pt@1x.png b/iphone/Maps/Images.xcassets/Bottom Menu/ic_menu_question.imageset/outline_question_mark_white_29pt@1x.png new file mode 100644 index 0000000000..1fb9d09bc0 Binary files /dev/null and b/iphone/Maps/Images.xcassets/Bottom Menu/ic_menu_question.imageset/outline_question_mark_white_29pt@1x.png differ diff --git a/iphone/Maps/Images.xcassets/Bottom Menu/ic_menu_question.imageset/outline_question_mark_white_29pt@2x.png b/iphone/Maps/Images.xcassets/Bottom Menu/ic_menu_question.imageset/outline_question_mark_white_29pt@2x.png new file mode 100644 index 0000000000..e625cb4361 Binary files /dev/null and b/iphone/Maps/Images.xcassets/Bottom Menu/ic_menu_question.imageset/outline_question_mark_white_29pt@2x.png differ diff --git a/iphone/Maps/Images.xcassets/Bottom Menu/ic_menu_question.imageset/outline_question_mark_white_29pt@3x.png b/iphone/Maps/Images.xcassets/Bottom Menu/ic_menu_question.imageset/outline_question_mark_white_29pt@3x.png new file mode 100644 index 0000000000..669b170e35 Binary files /dev/null and b/iphone/Maps/Images.xcassets/Bottom Menu/ic_menu_question.imageset/outline_question_mark_white_29pt@3x.png differ diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj index 5ec036c4b6..83da31707e 100644 --- a/iphone/Maps/Maps.xcodeproj/project.pbxproj +++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj @@ -572,9 +572,6 @@ F6E2FF451E097BA00083EBEC /* SettingsTableViewLinkCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD381E097BA00083EBEC /* SettingsTableViewLinkCell.swift */; }; F6E2FF481E097BA00083EBEC /* SettingsTableViewSelectableCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD391E097BA00083EBEC /* SettingsTableViewSelectableCell.swift */; }; F6E2FF4B1E097BA00083EBEC /* SettingsTableViewSwitchCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD3A1E097BA00083EBEC /* SettingsTableViewSwitchCell.swift */; }; - F6E2FF4E1E097BA00083EBEC /* MWMAboutController.m in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD3C1E097BA00083EBEC /* MWMAboutController.m */; }; - F6E2FF511E097BA00083EBEC /* MWMAboutControllerHeader.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FD3D1E097BA00083EBEC /* MWMAboutControllerHeader.xib */; }; - F6E2FF541E097BA00083EBEC /* MWMHelpController.m in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD3F1E097BA00083EBEC /* MWMHelpController.m */; }; F6E2FF571E097BA00083EBEC /* MWMMobileInternetViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD411E097BA00083EBEC /* MWMMobileInternetViewController.m */; }; F6E2FF5A1E097BA00083EBEC /* MWMNightModeController.m in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD431E097BA00083EBEC /* MWMNightModeController.m */; }; F6E2FF5D1E097BA00083EBEC /* MWMRecentTrackSettingsController.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD451E097BA00083EBEC /* MWMRecentTrackSettingsController.mm */; }; @@ -629,6 +626,9 @@ FA853BED26BC5B9E0026D455 /* libmwm_diff.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FA853BEC26BC5B9E0026D455 /* libmwm_diff.a */; }; FA853BEF26BC5BA40026D455 /* libdescriptions.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FA853BEE26BC5BA40026D455 /* libdescriptions.a */; }; FA853BF326BC5DE50026D455 /* libshaders.a in Frameworks */ = {isa = PBXBuildFile; fileRef = FA853BF226BC5DE50026D455 /* libshaders.a */; }; + FA85D43D27958BF500B858E9 /* FaqController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA85D43C27958BF500B858E9 /* FaqController.swift */; }; + FA85D43F2795969700B858E9 /* AboutController.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA85D43E2795969700B858E9 /* AboutController.swift */; }; + FA85D44E279B738F00B858E9 /* CopyableLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = FA85D44D279B738F00B858E9 /* CopyableLabel.swift */; }; FA8E808925F412E2002A1434 /* FirstSession.mm in Sources */ = {isa = PBXBuildFile; fileRef = FA8E808825F412E2002A1434 /* FirstSession.mm */; }; /* End PBXBuildFile section */ @@ -1541,11 +1541,6 @@ F6E2FD381E097BA00083EBEC /* SettingsTableViewLinkCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsTableViewLinkCell.swift; sourceTree = ""; }; F6E2FD391E097BA00083EBEC /* SettingsTableViewSelectableCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsTableViewSelectableCell.swift; sourceTree = ""; }; F6E2FD3A1E097BA00083EBEC /* SettingsTableViewSwitchCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SettingsTableViewSwitchCell.swift; sourceTree = ""; }; - F6E2FD3B1E097BA00083EBEC /* MWMAboutController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMAboutController.h; sourceTree = ""; }; - F6E2FD3C1E097BA00083EBEC /* MWMAboutController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMAboutController.m; sourceTree = ""; }; - F6E2FD3D1E097BA00083EBEC /* MWMAboutControllerHeader.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMAboutControllerHeader.xib; sourceTree = ""; }; - F6E2FD3E1E097BA00083EBEC /* MWMHelpController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMHelpController.h; sourceTree = ""; }; - F6E2FD3F1E097BA00083EBEC /* MWMHelpController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMHelpController.m; sourceTree = ""; }; F6E2FD401E097BA00083EBEC /* MWMMobileInternetViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMMobileInternetViewController.h; sourceTree = ""; }; F6E2FD411E097BA00083EBEC /* MWMMobileInternetViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MWMMobileInternetViewController.m; sourceTree = ""; }; F6E2FD421E097BA00083EBEC /* MWMNightModeController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMNightModeController.h; sourceTree = ""; }; @@ -1613,6 +1608,9 @@ FA853BEE26BC5BA40026D455 /* libdescriptions.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libdescriptions.a; sourceTree = BUILT_PRODUCTS_DIR; }; FA853BF026BC5C120026D455 /* libshaders.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libshaders.a; sourceTree = BUILT_PRODUCTS_DIR; }; FA853BF226BC5DE50026D455 /* libshaders.a */ = {isa = PBXFileReference; explicitFileType = archive.ar; path = libshaders.a; sourceTree = BUILT_PRODUCTS_DIR; }; + FA85D43C27958BF500B858E9 /* FaqController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FaqController.swift; sourceTree = ""; }; + FA85D43E2795969700B858E9 /* AboutController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutController.swift; sourceTree = ""; }; + FA85D44D279B738F00B858E9 /* CopyableLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CopyableLabel.swift; sourceTree = ""; }; FA85F632145DDDC20090E1A0 /* packed_polygons.bin */ = {isa = PBXFileReference; lastKnownFileType = archive.macbinary; name = packed_polygons.bin; path = ../../data/packed_polygons.bin; sourceTree = SOURCE_ROOT; }; FA8E808825F412E2002A1434 /* FirstSession.mm */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.cpp.objcpp; path = FirstSession.mm; sourceTree = ""; }; FA8E808A25F41337002A1434 /* FirstSession.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = FirstSession.h; sourceTree = ""; }; @@ -2167,6 +2165,7 @@ 4767CDA520AB1F6200BD8166 /* LeftAlignedIconButton.swift */, 4767CDA720AB401000BD8166 /* LinkTextView.swift */, 4788739120EE326400F6826B /* VerticallyAlignedButton.swift */, + FA85D44D279B738F00B858E9 /* CopyableLabel.swift */, ); path = Components; sourceTree = ""; @@ -3136,13 +3135,14 @@ F6E2FBFB1E097B9F0083EBEC /* UI */ = { isa = PBXGroup; children = ( - CDB4D4DA222D24EE00104869 /* CarPlay */, F69018B51E9E5FEB00B3C10B /* Autoupdate */, 34E7760D1F14B165003040B3 /* AvailableArea */, 349D1AC21E2E325B004A2006 /* BottomMenu */, + CDB4D4DA222D24EE00104869 /* CarPlay */, F6E2FBFC1E097B9F0083EBEC /* Downloader */, F6E2FC291E097B9F0083EBEC /* EditBookmark */, F6E2FC321E097B9F0083EBEC /* Editor */, + FA85D4372795895500B858E9 /* Help */, F6E2FC8F1E097B9F0083EBEC /* PlacePage */, F6E2FCE11E097B9F0083EBEC /* Search */, F6E2FD361E097BA00083EBEC /* Settings */, @@ -3491,11 +3491,6 @@ isa = PBXGroup; children = ( F6E2FD371E097BA00083EBEC /* Cells */, - F6E2FD3B1E097BA00083EBEC /* MWMAboutController.h */, - F6E2FD3C1E097BA00083EBEC /* MWMAboutController.m */, - F6E2FD3D1E097BA00083EBEC /* MWMAboutControllerHeader.xib */, - F6E2FD3E1E097BA00083EBEC /* MWMHelpController.h */, - F6E2FD3F1E097BA00083EBEC /* MWMHelpController.m */, F6E2FD401E097BA00083EBEC /* MWMMobileInternetViewController.h */, F6E2FD411E097BA00083EBEC /* MWMMobileInternetViewController.m */, F6E2FD421E097BA00083EBEC /* MWMNightModeController.h */, @@ -3614,6 +3609,15 @@ name = Products; sourceTree = ""; }; + FA85D4372795895500B858E9 /* Help */ = { + isa = PBXGroup; + children = ( + FA85D43C27958BF500B858E9 /* FaqController.swift */, + FA85D43E2795969700B858E9 /* AboutController.swift */, + ); + path = Help; + sourceTree = ""; + }; /* End PBXGroup section */ /* Begin PBXNativeTarget section */ @@ -3784,7 +3788,6 @@ 340E1EEF1E2F614400CE49BF /* LaunchScreen.storyboard in Resources */, 34F73F9F1E082FF800AC1FD6 /* Localizable.strings in Resources */, 340E1EF21E2F614400CE49BF /* Main.storyboard in Resources */, - F6E2FF511E097BA00083EBEC /* MWMAboutControllerHeader.xib in Resources */, F6E2FE521E097BA00083EBEC /* MWMActionBarButton.xib in Resources */, 993DF0CA23F6BD0600AC231A /* ElevationDetailsViewController.xib in Resources */, F623DA6F1C9C2E62006A3436 /* MWMAddPlaceNavigationBar.xib in Resources */, @@ -3938,7 +3941,6 @@ 6741A9A31BF340DE002C974C /* main.mm in Sources */, 34D3B04F1E38A20C004100F9 /* Bundle+Init.swift in Sources */, 34AB666E1FC5AA330078E451 /* TransportTransitStepsCollectionView.swift in Sources */, - F6E2FF541E097BA00083EBEC /* MWMHelpController.m in Sources */, 993DF11E23F6BDB100AC231A /* UITextViewRenderer.swift in Sources */, F6E2FF5A1E097BA00083EBEC /* MWMNightModeController.m in Sources */, 471A7BB8247FE3C300A0D4C1 /* URL+Query.swift in Sources */, @@ -3948,6 +3950,7 @@ 994F790723E85C5900660E75 /* DifficultyView.swift in Sources */, F6E2FF5D1E097BA00083EBEC /* MWMRecentTrackSettingsController.mm in Sources */, 34AB66651FC5AA330078E451 /* TransportTransitTrain.swift in Sources */, + FA85D44E279B738F00B858E9 /* CopyableLabel.swift in Sources */, 993DF11C23F6BDB100AC231A /* UITableViewHeaderFooterViewRenderer.swift in Sources */, 99A906E623F6F7030005872B /* OpeningHoursViewController.swift in Sources */, 343064411E9FDC7300DC7665 /* SearchIndex.swift in Sources */, @@ -4138,6 +4141,7 @@ CDB4D5002231412900104869 /* MapTemplateBuilder.swift in Sources */, 34AB66171FC5AA320078E451 /* MWMiPhoneRoutePreview.m in Sources */, 99A906EA23F6F7030005872B /* PlacePageInfoViewController.swift in Sources */, + FA85D43F2795969700B858E9 /* AboutController.swift in Sources */, 993DF11723F6BDB100AC231A /* UINavigationBarRenderer.swift in Sources */, 6741A9E71BF340DE002C974C /* MWMCircularProgressView.m in Sources */, 34AC8FDB1EFC07FE00E7F910 /* UILabel+NumberOfVisibleLines.swift in Sources */, @@ -4168,6 +4172,7 @@ B33D21B820E130D000BAD749 /* BookmarksTabViewController.swift in Sources */, 34AB662F1FC5AA330078E451 /* RouteManagerPresentationController.swift in Sources */, 993F5508237C622700545511 /* DeepLinkRouteStrategyAdapter.mm in Sources */, + FA85D43D27958BF500B858E9 /* FaqController.swift in Sources */, 99A906ED23F6F7030005872B /* PlacePagePreviewViewController.swift in Sources */, 993DF10223F6BDB100AC231A /* Colors.swift in Sources */, 34AB66201FC5AA330078E451 /* RouteStartButton.swift in Sources */, @@ -4236,7 +4241,6 @@ 3404755C1E081A4600C92850 /* MWMLocationManager.mm in Sources */, 3454D7BC1E07F045004AF2AD /* CLLocation+Mercator.mm in Sources */, 47E3C7272111E5A8008B3B27 /* AlertPresentationController.swift in Sources */, - F6E2FF4E1E097BA00083EBEC /* MWMAboutController.m in Sources */, CDCA27812243F59800167D87 /* CarPlayRouter.swift in Sources */, 34F5E0D41E3F254800B1C415 /* UIView+Hierarchy.swift in Sources */, 6741AA0B1BF340DE002C974C /* MWMMapViewControlsManager.mm in Sources */, diff --git a/iphone/Maps/OMaps.plist b/iphone/Maps/OMaps.plist index 1b7dc88141..ff87d6a101 100644 --- a/iphone/Maps/OMaps.plist +++ b/iphone/Maps/OMaps.plist @@ -77,6 +77,11 @@ $(CURRENT_PROJECT_VERSION) ITSAppUsesNonExemptEncryption + LSApplicationQueriesSchemes + + ms-outlook + googlegmail + LSRequiresIPhoneOS LSSupportsOpeningDocumentsInPlace diff --git a/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarInteractor.swift b/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarInteractor.swift index 2ee7230b05..f5ad80ae16 100644 --- a/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarInteractor.swift +++ b/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarInteractor.swift @@ -1,7 +1,7 @@ protocol BottomTabBarInteractorProtocol: AnyObject { func openSearch() func openPoint2Point() - func openDiscovery() + func openHelp() func openBookmarks() func openMenu() } @@ -41,11 +41,8 @@ extension BottomTabBarInteractor: BottomTabBarInteractorProtocol { } } - func openDiscovery() { -// NetworkPolicy.shared().callOnlineApi { (canUseNetwork) in -// let vc = MWMDiscoveryController.instance(withConnection: canUseNetwork) -// MapViewController.shared()?.navigationController?.pushViewController(vc!, animated: true) -// } + func openHelp() { + MapViewController.shared()?.navigationController?.pushViewController(AboutController(), animated: true) } func openBookmarks() { diff --git a/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarPresenter.swift b/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarPresenter.swift index 8038091de7..e33cbd6d4b 100644 --- a/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarPresenter.swift +++ b/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarPresenter.swift @@ -2,7 +2,7 @@ protocol BottomTabBarPresenterProtocol: AnyObject { func configure() func onSearchButtonPressed() func onPoint2PointButtonPressed() - func onDiscoveryButtonPressed() + func onHelpButtonPressed() func onBookmarksButtonPressed() func onMenuButtonPressed() } @@ -30,8 +30,8 @@ extension BottomTabBarPresenter: BottomTabBarPresenterProtocol { interactor.openPoint2Point() } - func onDiscoveryButtonPressed() { - interactor.openDiscovery() + func onHelpButtonPressed() { + interactor.openHelp() } func onBookmarksButtonPressed() { diff --git a/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarViewController.swift b/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarViewController.swift index e7d6f77541..dd85d76e01 100644 --- a/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarViewController.swift +++ b/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarViewController.swift @@ -9,7 +9,7 @@ class BottomTabBarViewController: UIViewController { @IBOutlet var searchButton: MWMButton! @IBOutlet var routeButton: MWMButton! - @IBOutlet var discoveryButton: MWMButton! + @IBOutlet var helpButton: MWMButton! @IBOutlet var bookmarksButton: MWMButton! @IBOutlet var moreButton: MWMButton! @IBOutlet var downloadBadge: UIView! @@ -62,8 +62,8 @@ class BottomTabBarViewController: UIViewController { presenter.onPoint2PointButtonPressed() } - @IBAction func onDiscoveryButtonPressed(_ sender: Any) { - presenter.onDiscoveryButtonPressed() + @IBAction func onHelpButtonPressed(_ sender: Any) { + presenter.onHelpButtonPressed() } @IBAction func onBookmarksButtonPressed(_ sender: Any) { diff --git a/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarViewController.xib b/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarViewController.xib index 4a279e0843..995afbacbc 100644 --- a/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarViewController.xib +++ b/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarViewController.xib @@ -1,9 +1,9 @@ - + - + @@ -12,8 +12,9 @@ + - + @@ -44,7 +45,7 @@ - + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - @@ -1715,7 +1223,7 @@ Приложение не использует мобильный интернет в роуминге. - + @@ -1743,7 +1251,7 @@ - + @@ -1771,7 +1279,7 @@ - + @@ -1828,7 +1336,7 @@ - + @@ -1857,7 +1365,7 @@ - + @@ -1886,7 +1394,7 @@ - + @@ -1934,9 +1442,4 @@ - - - - -