From e42c587a7c83f95e0602164a67ca038336406891 Mon Sep 17 00:00:00 2001 From: Alexander Boriskov Date: Fri, 31 Jul 2020 16:07:29 +0300 Subject: [PATCH] [iOS] Search on map fixes and improvements https://jira.mail.ru/browse/MAPSME-14448 --- iphone/Maps/Classes/MapViewController.mm | 8 ++++++-- iphone/Maps/UI/Search/MWMSearchManager.mm | 20 ++++++++++++++----- iphone/Maps/UI/Search/SearchBar.swift | 24 +++++++++++++++++++---- 3 files changed, 41 insertions(+), 11 deletions(-) diff --git a/iphone/Maps/Classes/MapViewController.mm b/iphone/Maps/Classes/MapViewController.mm index 4c00e1cdf3..e1e28b09d0 100644 --- a/iphone/Maps/Classes/MapViewController.mm +++ b/iphone/Maps/Classes/MapViewController.mm @@ -390,7 +390,8 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; - (void)viewWillAppear:(BOOL)animated { [super viewWillAppear:animated]; - if ([MWMNavigationDashboardManager sharedManager].state == MWMNavigationDashboardStateHidden) + if ([MWMNavigationDashboardManager sharedManager].state == MWMNavigationDashboardStateHidden && + [MWMSearchManager manager].state == MWMSearchManagerStateHidden) self.controlsManager.menuState = self.controlsManager.menuRestoreState; [self updateStatusBarStyle]; @@ -483,7 +484,10 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; - (void)viewWillDisappear:(BOOL)animated { [super viewWillDisappear:animated]; - self.controlsManager.menuRestoreState = self.controlsManager.menuState; + + if ([MWMNavigationDashboardManager sharedManager].state == MWMNavigationDashboardStateHidden && + [MWMSearchManager manager].state == MWMSearchManagerStateHidden) + self.controlsManager.menuRestoreState = self.controlsManager.menuState; } - (BOOL)prefersStatusBarHidden { diff --git a/iphone/Maps/UI/Search/MWMSearchManager.mm b/iphone/Maps/UI/Search/MWMSearchManager.mm index 177866f3a0..324e84cfab 100644 --- a/iphone/Maps/UI/Search/MWMSearchManager.mm +++ b/iphone/Maps/UI/Search/MWMSearchManager.mm @@ -229,8 +229,12 @@ using Observers = NSHashTable; [self endSearch]; MWMMapViewControlsManager *controlsManager = self.controlsManager; - controlsManager.menuState = controlsManager.menuRestoreState; + auto const navigationManagerState = [MWMNavigationDashboardManager sharedManager].state; + if (navigationManagerState == MWMNavigationDashboardStateHidden) { + controlsManager.menuState = controlsManager.menuRestoreState; + } [self viewHidden:YES]; + self.searchBarView.isBookingSearchViewHidden = YES; } - (void)changeToDefaultState { @@ -243,7 +247,10 @@ using Observers = NSHashTable; [self animateConstraints:^{ self.contentViewTopHidden.priority = UILayoutPriorityDefaultLow; }]; - controlsManager.menuState = controlsManager.menuRestoreState; + auto const navigationManagerState = [MWMNavigationDashboardManager sharedManager].state; + if (navigationManagerState == MWMNavigationDashboardStateHidden) { + controlsManager.menuState = controlsManager.menuRestoreState; + } [self viewHidden:NO]; self.searchBarView.isBookingSearchViewHidden = ![MWMSearch isHotelResults]; self.actionBarState = MWMSearchManagerActionBarStateHidden; @@ -259,7 +266,10 @@ using Observers = NSHashTable; self.searchBarView.state = SearchBarStateReady; GetFramework().DeactivateMapSelection(true); [self updateTableSearchActionBar]; - controlsManager.menuState = controlsManager.menuRestoreState; + auto const navigationManagerState = [MWMNavigationDashboardManager sharedManager].state; + if (navigationManagerState == MWMNavigationDashboardStateHidden) { + controlsManager.menuState = controlsManager.menuRestoreState; + } [self viewHidden:NO]; [MWMSearch setSearchOnMap:NO]; [self.tableViewController reloadData]; @@ -393,8 +403,8 @@ using Observers = NSHashTable; #pragma mark - DatePickerViewControllerDelegate - (void)datePicker:(DatePickerViewController *)datePicker -didSelectStartDate:(NSDate *)startDate - endDate:(NSDate *)endDate { + didSelectStartDate:(NSDate *)startDate + endDate:(NSDate *)endDate { [self.searchBarView setDatesWithCheckin:startDate checkout:endDate]; MWMHotelParams *filter = [MWMSearch getFilter]; if (!filter) { diff --git a/iphone/Maps/UI/Search/SearchBar.swift b/iphone/Maps/UI/Search/SearchBar.swift index ab89137313..c24e1454a1 100644 --- a/iphone/Maps/UI/Search/SearchBar.swift +++ b/iphone/Maps/UI/Search/SearchBar.swift @@ -35,13 +35,29 @@ final class SearchBar: SolidTouchView { @objc var isBookingSearchViewHidden: Bool = true { didSet { if oldValue != isBookingSearchViewHidden { - UIView.animate(withDuration: kDefaultAnimationDuration, + UIView.animate(withDuration: kDefaultAnimationDuration / 2, delay: 0, options: [.beginFromCurrentState], animations: { - self.bookingSearchView.isHidden = self.isBookingSearchViewHidden - self.bookingSearchView.alpha = self.isBookingSearchViewHidden ? 0 : 1 - }, completion: nil) + if self.isBookingSearchViewHidden { + self.bookingSearchView.alpha = 0 + } else { + self.bookingSearchView.isHidden = false + } + }, completion: { complete in + if complete { + UIView.animate(withDuration: kDefaultAnimationDuration / 2, + delay: 0, options: [.beginFromCurrentState], + animations: { + if self.isBookingSearchViewHidden { + self.bookingSearchView.isHidden = true + } else { + self.bookingSearchView.alpha = 1 + } + self.bookingSearchView.alpha = self.isBookingSearchViewHidden ? 0 : 1 + }, completion: nil) + } + }) } } }