From b9559b2eb48f2e27337189f050baab2734e0f81c Mon Sep 17 00:00:00 2001 From: Alexander Boriskov Date: Tue, 22 Sep 2020 15:57:55 +0300 Subject: [PATCH] [iOS] Navigation bar on map https://jira.mail.ru/browse/MAPSME-14892 --- .../Maps/Bookmarks/BookmarksCoordinator.swift | 28 ++++-- iphone/Maps/Bookmarks/BookmarksVC.h | 14 +-- iphone/Maps/Bookmarks/BookmarksVC.mm | 10 +- .../DownloadedBookmarksViewController.swift | 9 +- .../BMCView/BMCViewController.swift | 9 +- .../BookmarksBackButtonViewController.swift | 77 --------------- .../BookmarksBackButtonViewController.xib | 39 -------- .../GuidesNavigationBarView.swift | 9 ++ .../GuidesNavigationBarViewController.swift | 74 +++++++++++++++ .../GuidesNavigationBarViewController.xib | 93 +++++++++++++++++++ .../MWMMapViewControlsManager.h | 10 +- .../MWMMapViewControlsManager.mm | 46 +++++---- .../Views/MWMNavigationInfoView.mm | 2 +- iphone/Maps/Classes/MapViewController.mm | 11 +-- iphone/Maps/Core/Theme/MapStyleSheet.swift | 9 ++ iphone/Maps/Maps.xcodeproj/project.pbxproj | 38 +++++--- .../GuidesNavigationBarArea.swift | 23 +++++ .../UI/AvailableArea/TrafficButtonArea.swift | 1 - .../Menu/BottomMenuInteractor.swift | 6 +- .../TabBar/BottomTabBarInteractor.swift | 2 +- .../PlacePage/PlacePageViewController.swift | 3 +- iphone/Maps/UI/Storyboard/Main.storyboard | 35 ++++++- 22 files changed, 338 insertions(+), 210 deletions(-) delete mode 100644 iphone/Maps/Classes/CustomViews/MapViewControls/BookmarksBackButton/BookmarksBackButtonViewController.swift delete mode 100644 iphone/Maps/Classes/CustomViews/MapViewControls/BookmarksBackButton/BookmarksBackButtonViewController.xib create mode 100644 iphone/Maps/Classes/CustomViews/MapViewControls/GuidesNavigationBar/GuidesNavigationBarView.swift create mode 100644 iphone/Maps/Classes/CustomViews/MapViewControls/GuidesNavigationBar/GuidesNavigationBarViewController.swift create mode 100644 iphone/Maps/Classes/CustomViews/MapViewControls/GuidesNavigationBar/GuidesNavigationBarViewController.xib create mode 100644 iphone/Maps/UI/AvailableArea/GuidesNavigationBarArea.swift diff --git a/iphone/Maps/Bookmarks/BookmarksCoordinator.swift b/iphone/Maps/Bookmarks/BookmarksCoordinator.swift index a1bae12fcc..aedab8c274 100644 --- a/iphone/Maps/Bookmarks/BookmarksCoordinator.swift +++ b/iphone/Maps/Bookmarks/BookmarksCoordinator.swift @@ -1,17 +1,17 @@ import UIKit @objc class BookmarksCoordinator: NSObject { - @objc enum BookmarksState: Int { + enum BookmarksState { case opened case closed - case hidden + case hidden(categoryId: MWMMarkGroupID) } private weak var navigationController: UINavigationController? private weak var controlsManager: MWMMapViewControlsManager? private weak var navigationManager: MWMNavigationDashboardManager? private var bookmarksControllers: [UIViewController]? - @objc var state: BookmarksState = .closed { + private var state: BookmarksState = .closed { didSet { updateForState(newState: state) } @@ -25,6 +25,18 @@ import UIKit self.navigationManager = navigationManager } + @objc func open() { + state = .opened + } + + @objc func close() { + state = .closed + } + + @objc func hide(categoryId: MWMMarkGroupID) { + state = .hidden(categoryId: categoryId) + } + private func updateForState(newState: BookmarksState) { guard let navigationController = navigationController else { fatalError() @@ -47,12 +59,12 @@ import UIKit }, completion: nil) FrameworkHelper.deactivateMapSelection(notifyUI: true) self.bookmarksControllers = nil - controlsManager?.bookmarksBackButtonHidden = true + controlsManager?.hideGuidesNavigationBar() case .closed: navigationController.popToRootViewController(animated: true) bookmarksControllers = nil - controlsManager?.bookmarksBackButtonHidden = true - case .hidden: + controlsManager?.hideGuidesNavigationBar() + case let .hidden(categoryId): UIView.transition(with: self.navigationController!.view, duration: kDefaultAnimationDuration, options: [.curveEaseInOut, .transitionCrossDissolve], @@ -60,7 +72,9 @@ import UIKit self.bookmarksControllers = navigationController.popToRootViewController(animated: false) }, completion: nil) let isNavigation = navigationManager?.state != .hidden - controlsManager?.bookmarksBackButtonHidden = false || isNavigation + if isNavigation == false { + controlsManager?.showGuidesNavigationBar(categoryId) + } } } } diff --git a/iphone/Maps/Bookmarks/BookmarksVC.h b/iphone/Maps/Bookmarks/BookmarksVC.h index ddae6c93f0..83e6a7c778 100644 --- a/iphone/Maps/Bookmarks/BookmarksVC.h +++ b/iphone/Maps/Bookmarks/BookmarksVC.h @@ -1,28 +1,22 @@ -#import "MWMViewController.h" #import +#import "MWMViewController.h" NS_ASSUME_NONNULL_BEGIN -typedef NS_ENUM(NSInteger, BookmarksVCSelectedType) { - BookmarksVCSelectedTypeNone, - BookmarksVCSelectedTypeBookmark, - BookmarksVCSelectedTypeTrack -}; - @class BookmarksVC; @protocol BookmarksVCDelegate - (void)bookmarksVCdidUpdateCategory:(BookmarksVC *)viewController; - (void)bookmarksVCdidDeleteCategory:(BookmarksVC *)viewController; -- (void)bookmarksVCdidViewOnMap:(BookmarksVC *)viewController type:(BookmarksVCSelectedType) type; +- (void)bookmarksVCdidViewOnMap:(BookmarksVC *)viewController categoryId:(MWMMarkGroupID)categoryId; @end @interface BookmarksVC : MWMViewController -@property (nonatomic) MWMMarkGroupID categoryId; -@property (weak, nonatomic) id delegate; +@property(nonatomic) MWMMarkGroupID categoryId; +@property(weak, nonatomic) id delegate; - (instancetype)initWithCategory:(MWMMarkGroupID)categoryId; diff --git a/iphone/Maps/Bookmarks/BookmarksVC.mm b/iphone/Maps/Bookmarks/BookmarksVC.mm index b3cb173176..3df95d3187 100644 --- a/iphone/Maps/Bookmarks/BookmarksVC.mm +++ b/iphone/Maps/Bookmarks/BookmarksVC.mm @@ -377,7 +377,7 @@ using namespace std; - (void)viewOnMap { GetFramework().ShowBookmarkCategory(self.categoryId); - [self.delegate bookmarksVCdidViewOnMap:self type:BookmarksVCSelectedTypeNone]; + [self.delegate bookmarksVCdidViewOnMap:self categoryId:self.categoryId]; } - (IBAction)onSort:(UIBarButtonItem *)sender { @@ -694,13 +694,7 @@ using namespace std; [Statistics logEvent:kStatBookmarksSearchResultSelected withParameters:@{kStatFrom : kStatBookmarksList}]; [self.searchBar resignFirstResponder]; - BookmarksVCSelectedType selectedType = BookmarksVCSelectedTypeNone; - if ([currentSection isKindOfClass:[BookmarksSection class]]) { - selectedType = BookmarksVCSelectedTypeBookmark; - } else if ([currentSection isKindOfClass:[TracksSection class]]) { - selectedType = BookmarksVCSelectedTypeTrack; - } - [self.delegate bookmarksVCdidViewOnMap:self type:selectedType]; + [self.delegate bookmarksVCdidViewOnMap:self categoryId:self.categoryId]; } - (BOOL)tableView:(UITableView *)tableView canEditRowAtIndexPath:(NSIndexPath *)indexPath { diff --git a/iphone/Maps/Bookmarks/Catalog/DownloadedBookmarksViewController.swift b/iphone/Maps/Bookmarks/Catalog/DownloadedBookmarksViewController.swift index 065911e71c..894905cd19 100644 --- a/iphone/Maps/Bookmarks/Catalog/DownloadedBookmarksViewController.swift +++ b/iphone/Maps/Bookmarks/Catalog/DownloadedBookmarksViewController.swift @@ -195,12 +195,7 @@ extension DownloadedBookmarksViewController: BookmarksVCDelegate { func bookmarksVCdidDeleteCategory(_ viewController: BookmarksVC) { } - func bookmarksVCdidView(onMap viewController: BookmarksVC, type: BookmarksVCSelectedType) { - switch type { - case .bookmark: - coordinator?.state = .hidden - default: - coordinator?.state = .closed - } + func bookmarksVCdidView(onMap viewController: BookmarksVC, categoryId: MWMMarkGroupID) { + coordinator?.hide(categoryId: categoryId) } } diff --git a/iphone/Maps/Bookmarks/Categories/BMCView/BMCViewController.swift b/iphone/Maps/Bookmarks/Categories/BMCView/BMCViewController.swift index 016f445a94..de074d2939 100644 --- a/iphone/Maps/Bookmarks/Categories/BMCView/BMCViewController.swift +++ b/iphone/Maps/Bookmarks/Categories/BMCView/BMCViewController.swift @@ -392,12 +392,7 @@ extension BMCViewController: BookmarksVCDelegate { navigationController?.popToViewController(parentVC, animated: true) } - func bookmarksVCdidView(onMap viewController: BookmarksVC, type: BookmarksVCSelectedType) { - switch type { - case .bookmark: - coordinator?.state = .hidden - default: - coordinator?.state = .closed - } + func bookmarksVCdidView(onMap viewController: BookmarksVC, categoryId: MWMMarkGroupID) { + coordinator?.hide(categoryId: categoryId) } } diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/BookmarksBackButton/BookmarksBackButtonViewController.swift b/iphone/Maps/Classes/CustomViews/MapViewControls/BookmarksBackButton/BookmarksBackButtonViewController.swift deleted file mode 100644 index f87e8dbe7c..0000000000 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/BookmarksBackButton/BookmarksBackButtonViewController.swift +++ /dev/null @@ -1,77 +0,0 @@ -class BookmarksBackButtonViewController: UIViewController { - private let kTopOffset: CGFloat = 6 - private var topOffset: NSLayoutConstraint? - private var leftOffset: NSLayoutConstraint? - private var availableArea = CGRect.zero - private var mapViewController = MapViewController.shared() - private var abTestBookingBackButtonColor = ABTestManager.manager().abTestBookingBackButtonColor - - @objc var hidden: Bool = true { - didSet { - refreshLayout() - } - } - - @IBOutlet var button: MWMButton! - - static var controller: BookmarksBackButtonViewController = { - guard let bookmarksBackButton = MWMMapViewControlsManager.manager()?.bookmarksBackButton else { - fatalError() - } - return bookmarksBackButton - }() - - override func viewDidLoad() { - super.viewDidLoad() - switch abTestBookingBackButtonColor.type { - case .opaque: - button.setStyleAndApply("ButtonBookmarksBackOpaque") - default: - button.setStyleAndApply("ButtonBookmarksBack") - } - refreshLayout(false) - } - - @objc func configLayout() { - guard let superview = view.superview else { - fatalError() - } - - topOffset = view.topAnchor.constraint(equalTo: superview.topAnchor, constant: kTopOffset) - topOffset?.isActive = true - leftOffset = view.leadingAnchor.constraint(equalTo: superview.leadingAnchor, constant: kViewControlsOffsetToBounds) - leftOffset?.isActive = true - } - - func refreshLayout(_ animated: Bool = true) { - DispatchQueue.main.async { - let availableArea = self.availableArea - let leftOffset = self.hidden ? -self.view.width : availableArea.origin.x + kViewControlsOffsetToBounds - let animations = { - self.topOffset?.constant = availableArea.origin.y + self.kTopOffset - self.leftOffset?.constant = leftOffset - self.view.alpha = self.hidden ? 0 : 1 - } - if animated { - self.view.superview?.animateConstraints(animations: animations) - } else { - animations() - } - } - } - - class func updateAvailableArea(_ frame: CGRect) { - let controller = BookmarksBackButtonViewController.controller - if controller.availableArea.equalTo(frame) { - return - } - controller.availableArea = frame - controller.refreshLayout() - } - - @IBAction func buttonTouchUpInside(_ sender: Any) { - MapViewController.shared()?.bookmarksCoordinator.state = .opened - Statistics.logEvent(kStatBackClick, withParameters: [kStatFrom: kStatMap, - kStatTo: kStatBookmarks]) - } -} diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/BookmarksBackButton/BookmarksBackButtonViewController.xib b/iphone/Maps/Classes/CustomViews/MapViewControls/BookmarksBackButton/BookmarksBackButtonViewController.xib deleted file mode 100644 index 3a9cb16bb4..0000000000 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/BookmarksBackButton/BookmarksBackButtonViewController.xib +++ /dev/null @@ -1,39 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/GuidesNavigationBar/GuidesNavigationBarView.swift b/iphone/Maps/Classes/CustomViews/MapViewControls/GuidesNavigationBar/GuidesNavigationBarView.swift new file mode 100644 index 0000000000..2deec4cccd --- /dev/null +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/GuidesNavigationBar/GuidesNavigationBarView.swift @@ -0,0 +1,9 @@ +class GuidesNavigationBarView: UIView { + override var sideButtonsAreaAffectDirections: MWMAvailableAreaAffectDirections { + return .top + } + + override var trafficButtonAreaAffectDirections: MWMAvailableAreaAffectDirections { + return .top + } +} diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/GuidesNavigationBar/GuidesNavigationBarViewController.swift b/iphone/Maps/Classes/CustomViews/MapViewControls/GuidesNavigationBar/GuidesNavigationBarViewController.swift new file mode 100644 index 0000000000..4e85362ac9 --- /dev/null +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/GuidesNavigationBar/GuidesNavigationBarViewController.swift @@ -0,0 +1,74 @@ +class GuidesNavigationBarViewController: UIViewController { + private var availableArea = CGRect.zero + private var mapViewController = MapViewController.shared() + private var category: BookmarkGroup + + @IBOutlet var navigationBar: UINavigationBar! + @IBOutlet var navigationBarItem: UINavigationItem! + + @objc init(categoryId: MWMMarkGroupID) { + category = BookmarksManager.shared().category(withId: categoryId) + super.init(nibName: nil, bundle: nil) + } + + required init?(coder: NSCoder) { + fatalError("init(coder:) has not been implemented") + } + + override func viewDidLoad() { + super.viewDidLoad() + navigationBarItem.title = category.title + + let rightButton: UIButton = UIButton(type: .custom) + rightButton.setImage(UIImage(named: "ic_nav_bar_back")?.withRenderingMode(.alwaysTemplate), for: .normal) + rightButton.setTitle(L("list"), for: .normal) + rightButton.addTarget(self, action: #selector(onBackPressed), for: .touchUpInside) + rightButton.contentHorizontalAlignment = .left + rightButton.styleName = "FlatNormalTransButton" + + navigationBarItem.leftBarButtonItem = UIBarButtonItem(customView: rightButton) + navigationBarItem.rightBarButtonItem = UIBarButtonItem(title: L("cancel"), + style: .plain, + target: self, + action: #selector(onCancelPessed)) + refreshLayout(false) + } + + @objc func configLayout() { + guard let superview = view.superview else { + fatalError() + } + + NSLayoutConstraint.activate([ + view.topAnchor.constraint(equalTo: superview.topAnchor), + view.leftAnchor.constraint(equalTo: superview.leftAnchor), + view.rightAnchor.constraint(equalTo: superview.rightAnchor) + ]) + } + + func refreshLayout(_ animated: Bool = true) { + DispatchQueue.main.async { + let availableArea = self.availableArea + self.view.alpha = min(1, availableArea.height / self.view.height) + } + } + + class func updateAvailableArea(_ frame: CGRect) { + guard let controller = MWMMapViewControlsManager.manager()?.guidesNavigationBar, + !controller.availableArea.equalTo(frame) else { + return + } + controller.availableArea = frame + controller.refreshLayout() + } + + @objc func onBackPressed(_ sender: Any) { + MapViewController.shared()?.bookmarksCoordinator.open() + Statistics.logEvent(kStatBackClick, withParameters: [kStatFrom: kStatMap, + kStatTo: kStatBookmarks]) + } + + @objc func onCancelPessed(_ sender: Any) { + MapViewController.shared()?.bookmarksCoordinator.close() + } +} diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/GuidesNavigationBar/GuidesNavigationBarViewController.xib b/iphone/Maps/Classes/CustomViews/MapViewControls/GuidesNavigationBar/GuidesNavigationBarViewController.xib new file mode 100644 index 0000000000..372c9d1833 --- /dev/null +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/GuidesNavigationBar/GuidesNavigationBarViewController.xib @@ -0,0 +1,93 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.h b/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.h index fd2ffcc2f3..61e747ac38 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.h +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.h @@ -5,7 +5,7 @@ @class MapViewController; @class BottomTabBarViewController; -@class BookmarksBackButtonViewController; +@class GuidesNavigationBarViewController; @protocol MWMFeatureHolder; @interface MWMMapViewControlsManager : NSObject @@ -16,18 +16,22 @@ @property(nonatomic) BOOL zoomHidden; @property(nonatomic) BOOL sideButtonsHidden; @property(nonatomic) BOOL trafficButtonHidden; -@property(nonatomic) BOOL bookmarksBackButtonHidden; +@property(nonatomic, readonly) BOOL guidesNavigationBarHidden; @property(nonatomic) MWMBottomMenuState menuState; @property(nonatomic) MWMBottomMenuState menuRestoreState; @property(nonatomic) BOOL isDirectionViewHidden; @property(nonatomic) BottomTabBarViewController *tabBarController; -@property(nonatomic) BookmarksBackButtonViewController *bookmarksBackButton; +@property(nonatomic) GuidesNavigationBarViewController *guidesNavigationBar; - (instancetype)init __attribute__((unavailable("init is not available"))); - (instancetype)initWithParentController:(MapViewController *)controller; - (UIStatusBarStyle)preferredStatusBarStyle; +#pragma mark GuidesNavigationBar +- (void)showGuidesNavigationBar:(MWMMarkGroupID)categoryId; +- (void)hideGuidesNavigationBar; + #pragma mark - Layout - (UIView *)anchorView; diff --git a/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm b/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm index b6edebe6c8..b1ec9ea633 100644 --- a/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm +++ b/iphone/Maps/Classes/CustomViews/MapViewControls/MWMMapViewControlsManager.mm @@ -63,7 +63,6 @@ NSString *const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue"; self.sideButtonsHidden = NO; self.trafficButtonHidden = NO; self.isDirectionViewHidden = YES; - self.bookmarksBackButtonHidden = YES; self.menuRestoreState = MWMBottomMenuStateInactive; self.promoDiscoveryCampaign = [ABTestManager manager].promoDiscoveryCampaign; if (_promoDiscoveryCampaign.enabled) { @@ -104,7 +103,7 @@ NSString *const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue"; withTransitionCoordinator:(id)coordinator { [self.trafficButton viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; [self.tabBarController viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; - [self.bookmarksBackButton viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; + [self.guidesNavigationBar viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; [self.searchManager viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; } @@ -197,8 +196,11 @@ NSString *const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue"; - (void)onSearchManagerStateChanged { auto state = [MWMSearchManager manager].state; - if (!IPAD && state == MWMSearchManagerStateHidden) + if (!IPAD && state == MWMSearchManagerStateHidden) { self.hidden = NO; + } else if (state != MWMSearchManagerStateHidden) { + [self hideGuidesNavigationBar]; + } } #pragma mark - Routing @@ -207,6 +209,7 @@ NSString *const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue"; auto nm = self.navigationManager; [nm onRoutePrepare]; [nm onRoutePointsUpdated]; + [self.ownerController.bookmarksCoordinator close]; self.promoButton.hidden = YES; } @@ -214,6 +217,7 @@ NSString *const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue"; if (IPAD) self.searchManager.state = MWMSearchManagerStateHidden; + [self.ownerController.bookmarksCoordinator close]; [self.navigationManager onRoutePlanning]; self.promoButton.hidden = YES; } @@ -277,16 +281,6 @@ NSString *const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue"; return _tabBarController; } -- (BookmarksBackButtonViewController *)bookmarksBackButton { - if (!_bookmarksBackButton) { - _bookmarksBackButton = [[BookmarksBackButtonViewController alloc] init]; - [self.ownerController addChildViewController:_bookmarksBackButton]; - [self.ownerController.controlsView addSubview:_bookmarksBackButton.view]; - [_bookmarksBackButton configLayout]; - } - return _bookmarksBackButton; -} - - (id)placePageManager { if (!_placePageManager) _placePageManager = [[MWMPlacePageManager alloc] init]; @@ -334,13 +328,25 @@ NSString *const kMapToCategorySelectorSegue = @"MapToCategorySelectorSegue"; self.trafficButton.hidden = self.hidden || _trafficButtonHidden; } -- (void)setBookmarksBackButtonHidden:(BOOL)bookmarksBackButtonHidden { - _bookmarksBackButtonHidden = bookmarksBackButtonHidden; - self.bookmarksBackButton.hidden = _bookmarksBackButtonHidden; - if (_bookmarksBackButtonHidden) { - self.trafficButton.hidden = self.hidden || _trafficButtonHidden; - } else { - self.trafficButton.hidden = YES; +- (void)showGuidesNavigationBar:(MWMMarkGroupID)categoryId { + if (!_guidesNavigationBar) { + MapViewController *parentViewController = self.ownerController; + _guidesNavigationBar = [[GuidesNavigationBarViewController alloc] initWithCategoryId:categoryId]; + [parentViewController addChildViewController:_guidesNavigationBar]; + [parentViewController.controlsView addSubview:_guidesNavigationBar.view]; + [_guidesNavigationBar configLayout]; + _guidesNavigationBarHidden = YES; + self.menuState = MWMBottomMenuStateHidden; + } +} + +- (void)hideGuidesNavigationBar { + if (_guidesNavigationBar) { + [_guidesNavigationBar removeFromParentViewController]; + [_guidesNavigationBar.view removeFromSuperview]; + _guidesNavigationBar = nil; + _guidesNavigationBarHidden = NO; + self.menuState = _menuRestoreState; } } diff --git a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/MWMNavigationInfoView.mm b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/MWMNavigationInfoView.mm index d213e30e70..5cf310bc1b 100644 --- a/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/MWMNavigationInfoView.mm +++ b/iphone/Maps/Classes/CustomViews/NavigationDashboard/Views/MWMNavigationInfoView.mm @@ -236,7 +236,7 @@ BOOL defaultOrientation(CGSize const & size) withParameters:@{ kStatMode: (isOnRoute ? kStatRoutingModeOnRoute : kStatRoutingModePlanning) }]; - [MapViewController sharedController].bookmarksCoordinator.state = BookmarksStateOpened; + [[MapViewController sharedController].bookmarksCoordinator open]; } - (void)collapseSearchOnTimer diff --git a/iphone/Maps/Classes/MapViewController.mm b/iphone/Maps/Classes/MapViewController.mm index 93ad1ae321..b625661344 100644 --- a/iphone/Maps/Classes/MapViewController.mm +++ b/iphone/Maps/Classes/MapViewController.mm @@ -91,6 +91,7 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; @property(strong, nonatomic) IBOutlet NSLayoutConstraint *placePageAreaKeyboard; @property(strong, nonatomic) IBOutlet NSLayoutConstraint *sideButtonsAreaBottom; @property(strong, nonatomic) IBOutlet NSLayoutConstraint *sideButtonsAreaKeyboard; +@property(strong, nonatomic) IBOutlet NSLayoutConstraint *guidesNavigationBarAreaBottom; @property(strong, nonatomic) IBOutlet NSLayoutConstraint *guidesVisibleConstraint;; @property(strong, nonatomic) IBOutlet NSLayoutConstraint *guidesHiddenConstraint; @property(strong, nonatomic) IBOutlet UIImageView *carplayPlaceholderLogo; @@ -224,10 +225,6 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; } } - BOOL const isBookmarksViewHidden = self.bookmarksCoordinator.state == BookmarksStateHidden; - if (isBookmarksViewHidden) - self.bookmarksCoordinator.state = BookmarksStateClosed; - if (!switchFullScreenMode) return; @@ -396,7 +393,8 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; [super viewWillAppear:animated]; if ([MWMNavigationDashboardManager sharedManager].state == MWMNavigationDashboardStateHidden && - [MWMSearchManager manager].state == MWMSearchManagerStateHidden) + [MWMSearchManager manager].state == MWMSearchManagerStateHidden && + [MWMMapViewControlsManager manager].guidesNavigationBarHidden == NO) self.controlsManager.menuState = self.controlsManager.menuRestoreState; [self updateStatusBarStyle]; @@ -797,7 +795,7 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; auto searchState = MWMSearchManagerStateHidden; [MWMRouter stopRouting]; if ([action isEqualToString:@"me.maps.3daction.bookmarks"]) - self.bookmarksCoordinator.state = BookmarksStateOpened; + [self.bookmarksCoordinator open]; else if ([action isEqualToString:@"me.maps.3daction.search"]) searchState = MWMSearchManagerStateDefault; else if ([action isEqualToString:@"me.maps.3daction.route"]) @@ -879,6 +877,7 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; - (void)setPlacePageTopBound:(CGFloat)bound duration:(double)duration { self.visibleAreaBottom.constant = bound; self.sideButtonsAreaBottom.constant = bound; + self.guidesNavigationBarAreaBottom.constant = bound; [UIView animateWithDuration:duration delay:0 options:UIViewAnimationOptionBeginFromCurrentState animations:^{ [self.view layoutIfNeeded]; } completion:nil]; diff --git a/iphone/Maps/Core/Theme/MapStyleSheet.swift b/iphone/Maps/Core/Theme/MapStyleSheet.swift index b0113b0abf..568ff7c8ef 100644 --- a/iphone/Maps/Core/Theme/MapStyleSheet.swift +++ b/iphone/Maps/Core/Theme/MapStyleSheet.swift @@ -121,5 +121,14 @@ class MapStyleSheet: IStyleSheet { s.shadowOpacity = 1 s.backgroundColor = colors.white } + + theme.add(styleName: "GuidesNavigationBar") { (s) -> (Void) in + s.barTintColor = colors.white + s.tintColor = colors.linkBlue + s.backgroundImage = UIImage() + s.shadowImage = UIImage() + s.font = fonts.regular18 + s.fontColor = colors.blackPrimaryText + } } } diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj index 579fb7987d..94ec960fde 100644 --- a/iphone/Maps/Maps.xcodeproj/project.pbxproj +++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj @@ -606,8 +606,8 @@ 993DF12B23F6BDB100AC231A /* StyleManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 993DF0FF23F6BDB100AC231A /* StyleManager.swift */; }; 993DF12C23F6BDB100AC231A /* Theme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 993DF10023F6BDB100AC231A /* Theme.swift */; }; 993DF12D23F6BDB100AC231A /* GlobalStyleSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 993DF10123F6BDB100AC231A /* GlobalStyleSheet.swift */; }; - 993ECBB324E40CEC00EA5DEF /* BookmarksBackButtonViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 993ECBB124E40CEC00EA5DEF /* BookmarksBackButtonViewController.swift */; }; - 993ECBB424E40CEC00EA5DEF /* BookmarksBackButtonViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 993ECBB224E40CEC00EA5DEF /* BookmarksBackButtonViewController.xib */; }; + 993ECBB324E40CEC00EA5DEF /* GuidesNavigationBarViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 993ECBB124E40CEC00EA5DEF /* GuidesNavigationBarViewController.swift */; }; + 993ECBB424E40CEC00EA5DEF /* GuidesNavigationBarViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 993ECBB224E40CEC00EA5DEF /* GuidesNavigationBarViewController.xib */; }; 993F5507237C622700545511 /* DeepLinkSearchStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 993F54F8237C622700545511 /* DeepLinkSearchStrategy.swift */; }; 993F5508237C622700545511 /* DeepLinkRouteStrategyAdapter.mm in Sources */ = {isa = PBXBuildFile; fileRef = 993F54F9237C622700545511 /* DeepLinkRouteStrategyAdapter.mm */; }; 993F5509237C622700545511 /* DeepLinkHandlerStrategy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 993F54FA237C622700545511 /* DeepLinkHandlerStrategy.swift */; }; @@ -632,6 +632,8 @@ 99514BBA23E82B450085D3A7 /* ElevationProfileViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99514BB423E82B450085D3A7 /* ElevationProfileViewController.swift */; }; 99514BBB23E82B450085D3A7 /* ElevationProfileBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99514BB523E82B450085D3A7 /* ElevationProfileBuilder.swift */; }; 99536113235DB86C008B218F /* InsetsLabel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99536112235DB86C008B218F /* InsetsLabel.swift */; }; + 995714102518B5DA0070DD93 /* GuidesNavigationBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9957140F2518B5D90070DD93 /* GuidesNavigationBarView.swift */; }; + 995714122519F2120070DD93 /* GuidesNavigationBarArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 995714112519F2120070DD93 /* GuidesNavigationBarArea.swift */; }; 995738DB235484410019AEE7 /* AllPassSubscriptionViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 995738DA235484410019AEE7 /* AllPassSubscriptionViewController.xib */; }; 995739042355CAA30019AEE7 /* PageIndicator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 995739032355CAA30019AEE7 /* PageIndicator.swift */; }; 995739062355CAC40019AEE7 /* ImageViewCrossDisolve.swift in Sources */ = {isa = PBXBuildFile; fileRef = 995739052355CAC40019AEE7 /* ImageViewCrossDisolve.swift */; }; @@ -639,13 +641,13 @@ 9959C75C24599CCD008FD4FD /* DirectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9959C75B24599CCC008FD4FD /* DirectionView.swift */; }; 995F1613244F0AA50060631D /* BottomMenuLayersCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 995F1611244F0AA40060631D /* BottomMenuLayersCell.swift */; }; 995F1614244F0AA50060631D /* BottomMenuLayersCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 995F1612244F0AA40060631D /* BottomMenuLayersCell.xib */; }; - 9977E69C247BFB510073780C /* SearchTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9977E69B247BFB510073780C /* SearchTextField.swift */; }; - 996D108A24E3DBF2002DD0E2 /* BookmarksCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 996D108924E3DBF2002DD0E2 /* BookmarksCoordinator.swift */; }; 996D108124E14AEB002DD0E2 /* MultiPartnerBannerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 996D107F24E14AEB002DD0E2 /* MultiPartnerBannerViewController.swift */; }; 996D108224E14AEB002DD0E2 /* MultiPartnerBannerViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = 996D108024E14AEB002DD0E2 /* MultiPartnerBannerViewController.xib */; }; 996D108624E15FBE002DD0E2 /* DownloadBannerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 996D108524E15FBE002DD0E2 /* DownloadBannerViewController.swift */; }; 996D108824E16E6F002DD0E2 /* BookmarksBannerViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 996D108724E16E6F002DD0E2 /* BookmarksBannerViewController.swift */; }; + 996D108A24E3DBF2002DD0E2 /* BookmarksCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 996D108924E3DBF2002DD0E2 /* BookmarksCoordinator.swift */; }; 996F8C9F24E1420800498993 /* PartnerBannerViewModel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 996F8C9E24E1420800498993 /* PartnerBannerViewModel.swift */; }; + 9977E69C247BFB510073780C /* SearchTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9977E69B247BFB510073780C /* SearchTextField.swift */; }; 9977E6A12480E1EE0073780C /* BottomMenuLayerButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9977E6A02480E1EE0073780C /* BottomMenuLayerButton.swift */; }; 9977E6A32480F9BF0073780C /* BottomMenuLayerButtonRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9977E6A22480F9BF0073780C /* BottomMenuLayerButtonRenderer.swift */; }; 998927302449DE1500260CE2 /* TabBarArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9989272F2449DE1500260CE2 /* TabBarArea.swift */; }; @@ -1708,8 +1710,8 @@ 993DF0FF23F6BDB100AC231A /* StyleManager.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StyleManager.swift; sourceTree = ""; }; 993DF10023F6BDB100AC231A /* Theme.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Theme.swift; sourceTree = ""; }; 993DF10123F6BDB100AC231A /* GlobalStyleSheet.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = GlobalStyleSheet.swift; sourceTree = ""; }; - 993ECBB124E40CEC00EA5DEF /* BookmarksBackButtonViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksBackButtonViewController.swift; sourceTree = ""; }; - 993ECBB224E40CEC00EA5DEF /* BookmarksBackButtonViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BookmarksBackButtonViewController.xib; sourceTree = ""; }; + 993ECBB124E40CEC00EA5DEF /* GuidesNavigationBarViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GuidesNavigationBarViewController.swift; sourceTree = ""; }; + 993ECBB224E40CEC00EA5DEF /* GuidesNavigationBarViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = GuidesNavigationBarViewController.xib; sourceTree = ""; }; 993F54F8237C622700545511 /* DeepLinkSearchStrategy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeepLinkSearchStrategy.swift; sourceTree = ""; }; 993F54F9237C622700545511 /* DeepLinkRouteStrategyAdapter.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = DeepLinkRouteStrategyAdapter.mm; sourceTree = ""; }; 993F54FA237C622700545511 /* DeepLinkHandlerStrategy.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DeepLinkHandlerStrategy.swift; sourceTree = ""; }; @@ -1735,6 +1737,8 @@ 99514BB423E82B450085D3A7 /* ElevationProfileViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ElevationProfileViewController.swift; sourceTree = ""; }; 99514BB523E82B450085D3A7 /* ElevationProfileBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ElevationProfileBuilder.swift; sourceTree = ""; }; 99536112235DB86C008B218F /* InsetsLabel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InsetsLabel.swift; sourceTree = ""; }; + 9957140F2518B5D90070DD93 /* GuidesNavigationBarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GuidesNavigationBarView.swift; sourceTree = ""; }; + 995714112519F2120070DD93 /* GuidesNavigationBarArea.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GuidesNavigationBarArea.swift; sourceTree = ""; }; 995738DA235484410019AEE7 /* AllPassSubscriptionViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = AllPassSubscriptionViewController.xib; sourceTree = ""; }; 995739032355CAA30019AEE7 /* PageIndicator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PageIndicator.swift; sourceTree = ""; }; 995739052355CAC40019AEE7 /* ImageViewCrossDisolve.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImageViewCrossDisolve.swift; sourceTree = ""; }; @@ -1745,12 +1749,12 @@ 995F1611244F0AA40060631D /* BottomMenuLayersCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomMenuLayersCell.swift; sourceTree = ""; }; 995F1612244F0AA40060631D /* BottomMenuLayersCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BottomMenuLayersCell.xib; sourceTree = ""; }; 996D107F24E14AEB002DD0E2 /* MultiPartnerBannerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MultiPartnerBannerViewController.swift; sourceTree = ""; }; - 996D108924E3DBF2002DD0E2 /* BookmarksCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksCoordinator.swift; sourceTree = ""; }; - 9977E69B247BFB510073780C /* SearchTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchTextField.swift; sourceTree = ""; }; 996D108024E14AEB002DD0E2 /* MultiPartnerBannerViewController.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MultiPartnerBannerViewController.xib; sourceTree = ""; }; 996D108524E15FBE002DD0E2 /* DownloadBannerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DownloadBannerViewController.swift; sourceTree = ""; }; 996D108724E16E6F002DD0E2 /* BookmarksBannerViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksBannerViewController.swift; sourceTree = ""; }; + 996D108924E3DBF2002DD0E2 /* BookmarksCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BookmarksCoordinator.swift; sourceTree = ""; }; 996F8C9E24E1420800498993 /* PartnerBannerViewModel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PartnerBannerViewModel.swift; sourceTree = ""; }; + 9977E69B247BFB510073780C /* SearchTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SearchTextField.swift; sourceTree = ""; }; 9977E6A02480E1EE0073780C /* BottomMenuLayerButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomMenuLayerButton.swift; sourceTree = ""; }; 9977E6A22480F9BF0073780C /* BottomMenuLayerButtonRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomMenuLayerButtonRenderer.swift; sourceTree = ""; }; 9989272F2449DE1500260CE2 /* TabBarArea.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TabBarArea.swift; sourceTree = ""; }; @@ -3297,7 +3301,7 @@ 34BC72091B0DECAE0012A34B /* MapViewControls */ = { isa = PBXGroup; children = ( - 993ECBB024E40C6700EA5DEF /* BookmarksBackButton */, + 993ECBB024E40C6700EA5DEF /* GuidesNavigationBar */, 99B6A74A2362F579002C94CB /* PromoButton */, 340537621BBED98600D452C6 /* MWMMapViewControlsCommon.h */, 34BC72101B0DECAE0012A34B /* MWMMapViewControlsManager.h */, @@ -3354,6 +3358,7 @@ 34FE5A6D1F18F30F00BCA729 /* TrafficButtonArea.swift */, 340708631F2905A500029ECC /* NavigationInfoArea.swift */, 9989272F2449DE1500260CE2 /* TabBarArea.swift */, + 995714112519F2120070DD93 /* GuidesNavigationBarArea.swift */, ); path = AvailableArea; sourceTree = ""; @@ -3756,13 +3761,14 @@ path = Core; sourceTree = ""; }; - 993ECBB024E40C6700EA5DEF /* BookmarksBackButton */ = { + 993ECBB024E40C6700EA5DEF /* GuidesNavigationBar */ = { isa = PBXGroup; children = ( - 993ECBB124E40CEC00EA5DEF /* BookmarksBackButtonViewController.swift */, - 993ECBB224E40CEC00EA5DEF /* BookmarksBackButtonViewController.xib */, + 993ECBB124E40CEC00EA5DEF /* GuidesNavigationBarViewController.swift */, + 993ECBB224E40CEC00EA5DEF /* GuidesNavigationBarViewController.xib */, + 9957140F2518B5D90070DD93 /* GuidesNavigationBarView.swift */, ); - path = BookmarksBackButton; + path = GuidesNavigationBar; sourceTree = ""; }; 993F54F6237C622700545511 /* DeepLink */ = { @@ -5295,7 +5301,7 @@ 47A13CAB24BE881000027D4F /* DatePickerViewController.xib in Resources */, 3463BA691DE81DB90082417F /* MWMTrafficButtonViewController.xib in Resources */, F623DA6C1C9C2731006A3436 /* opening_hours_how_to_edit.html in Resources */, - 993ECBB424E40CEC00EA5DEF /* BookmarksBackButtonViewController.xib in Resources */, + 993ECBB424E40CEC00EA5DEF /* GuidesNavigationBarViewController.xib in Resources */, 47E6CB0C2178BA3600EA102B /* SearchBannerCell.xib in Resources */, 6741A9761BF340DE002C974C /* packed_polygons.bin in Resources */, 470A8A012136097000D72FBF /* SubwayTutorialBlur.xib in Resources */, @@ -5509,6 +5515,7 @@ 6741A9B01BF340DE002C974C /* MapsAppDelegate.mm in Sources */, 996D108824E16E6F002DD0E2 /* BookmarksBannerViewController.swift in Sources */, 993DF12723F6BDB100AC231A /* Fonts.swift in Sources */, + 995714102518B5DA0070DD93 /* GuidesNavigationBarView.swift in Sources */, 996D108624E15FBE002DD0E2 /* DownloadBannerViewController.swift in Sources */, 4719A645219CBD65009F9AA7 /* IPendingTransactionsHandler.swift in Sources */, 34F742321E0834F400AC1FD6 /* UIViewController+Navigation.m in Sources */, @@ -5614,7 +5621,7 @@ F6E2FEDF1E097BA00083EBEC /* MWMSearchManager+Layout.m in Sources */, F64D9CA01C899C350063FA30 /* MWMEditorViralAlert.mm in Sources */, 34AC8FD11EFC02C000E7F910 /* MWMRoutePoint.mm in Sources */, - 993ECBB324E40CEC00EA5DEF /* BookmarksBackButtonViewController.swift in Sources */, + 993ECBB324E40CEC00EA5DEF /* GuidesNavigationBarViewController.swift in Sources */, CDB4D5012231412900104869 /* ListTemplateBuilder.swift in Sources */, 99A906F323FA95AB0005872B /* PlacePageStyleSheet.swift in Sources */, 6741A9CF1BF340DE002C974C /* MWMLocationAlert.m in Sources */, @@ -5918,6 +5925,7 @@ F655C027207278300048A241 /* DiscoveryMoreCell.swift in Sources */, 337F98B821D3D67E00C8AC27 /* SearchHistoryQueryCell.swift in Sources */, 34AB66621FC5AA330078E451 /* TransportTransitSeparator.swift in Sources */, + 995714122519F2120070DD93 /* GuidesNavigationBarArea.swift in Sources */, CDCA2743223F8D1E00167D87 /* ListItemInfo.swift in Sources */, B32FE74020D2844600EF7446 /* DownloadedBookmarksViewController.swift in Sources */, 340416541E7C09C200E2B6D6 /* PhotoScalingView.swift in Sources */, diff --git a/iphone/Maps/UI/AvailableArea/GuidesNavigationBarArea.swift b/iphone/Maps/UI/AvailableArea/GuidesNavigationBarArea.swift new file mode 100644 index 0000000000..50fca02f19 --- /dev/null +++ b/iphone/Maps/UI/AvailableArea/GuidesNavigationBarArea.swift @@ -0,0 +1,23 @@ +final class GuidesNavigationBarArea: AvailableArea { + override var deferNotification: Bool { return false } + + override func isAreaAffectingView(_ other: UIView) -> Bool { + return !other.guidesNavigationBarAreaAffectDirections.isEmpty + } + + override func addAffectingView(_ other: UIView) { + let ov = other.guidesNavigationBarAreaAffectView + let directions = ov.guidesNavigationBarAreaAffectDirections + addConstraints(otherView: ov, directions: directions) + } + + override func notifyObserver() { + GuidesNavigationBarViewController.updateAvailableArea(areaFrame) + } +} + +extension UIView { + @objc var guidesNavigationBarAreaAffectDirections: MWMAvailableAreaAffectDirections { return [] } + + var guidesNavigationBarAreaAffectView: UIView { return self } +} diff --git a/iphone/Maps/UI/AvailableArea/TrafficButtonArea.swift b/iphone/Maps/UI/AvailableArea/TrafficButtonArea.swift index a7e24e9102..8747e23f45 100644 --- a/iphone/Maps/UI/AvailableArea/TrafficButtonArea.swift +++ b/iphone/Maps/UI/AvailableArea/TrafficButtonArea.swift @@ -11,7 +11,6 @@ final class TrafficButtonArea: AvailableArea { override func notifyObserver() { MWMTrafficButtonViewController.updateAvailableArea(areaFrame) - BookmarksBackButtonViewController.updateAvailableArea(areaFrame) } } diff --git a/iphone/Maps/UI/BottomMenu/Menu/BottomMenuInteractor.swift b/iphone/Maps/UI/BottomMenu/Menu/BottomMenuInteractor.swift index e58a12e491..121459f08b 100644 --- a/iphone/Maps/UI/BottomMenu/Menu/BottomMenuInteractor.swift +++ b/iphone/Maps/UI/BottomMenu/Menu/BottomMenuInteractor.swift @@ -33,7 +33,11 @@ class BottomMenuInteractor { extension BottomMenuInteractor: BottomMenuInteractorProtocol { func close() { - controlsManager?.menuState = .inactive + if controlsManager?.guidesNavigationBarHidden == false { + controlsManager?.menuState = .inactive + } else { + controlsManager?.menuState = .hidden + } } func addPlace() { diff --git a/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarInteractor.swift b/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarInteractor.swift index 6a0c4bfd1a..e9ebc98531 100644 --- a/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarInteractor.swift +++ b/iphone/Maps/UI/BottomMenu/TabBar/BottomTabBarInteractor.swift @@ -54,7 +54,7 @@ extension BottomTabBarInteractor: BottomTabBarInteractorProtocol { } func openBookmarks() { - mapViewController?.bookmarksCoordinator.state = .opened + mapViewController?.bookmarksCoordinator.open() } func openMenu() { diff --git a/iphone/Maps/UI/PlacePage/PlacePageViewController.swift b/iphone/Maps/UI/PlacePage/PlacePageViewController.swift index 3701c91aa7..df9c53cc2a 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageViewController.swift +++ b/iphone/Maps/UI/PlacePage/PlacePageViewController.swift @@ -170,8 +170,7 @@ final class PlacePageScrollView: UIScrollView { func updateTopBound(_ bound: CGFloat, duration: TimeInterval) { alternativeSizeClass(iPhone: { - let isLandscape = UIDevice.current.orientation == .landscapeLeft || UIDevice.current.orientation == .landscapeRight - presenter.updateTopBound(isLandscape ? 0 : bound, duration: duration) + presenter.updateTopBound(bound, duration: duration) }, iPad: {}) } } diff --git a/iphone/Maps/UI/Storyboard/Main.storyboard b/iphone/Maps/UI/Storyboard/Main.storyboard index 9ac761b021..cb0107f045 100644 --- a/iphone/Maps/UI/Storyboard/Main.storyboard +++ b/iphone/Maps/UI/Storyboard/Main.storyboard @@ -68,6 +68,10 @@ + + + +