diff --git a/iphone/Maps/Classes/MapViewController.h b/iphone/Maps/Classes/MapViewController.h index 28668d98c4..cb92d474e8 100644 --- a/iphone/Maps/Classes/MapViewController.h +++ b/iphone/Maps/Classes/MapViewController.h @@ -56,5 +56,6 @@ @property(nonatomic) MWMMyPositionMode currentPositionMode; @property(strong, nonatomic) IBOutlet EAGLView * _Nonnull mapView; @property(strong, nonatomic) IBOutlet UIView * _Nonnull controlsView; +@property(strong, nonatomic) IBOutlet UIView * _Nonnull searchViewContainer; @end diff --git a/iphone/Maps/Classes/MapViewController.mm b/iphone/Maps/Classes/MapViewController.mm index 92e1fc0ffb..9c9fc5b2a8 100644 --- a/iphone/Maps/Classes/MapViewController.mm +++ b/iphone/Maps/Classes/MapViewController.mm @@ -156,17 +156,22 @@ NSString *const kPP2BookmarkEditingSegue = @"PP2BookmarkEditing"; - (void)onMapObjectDeselected:(bool)switchFullScreenMode { [self hidePlacePage]; + BOOL const isSearchResult = [MWMSearchManager manager].state == MWMSearchManagerStateResult; + if (isSearchResult) { + [MWMSearchManager manager].state = MWMSearchManagerStateMapSearch; + } + if (!switchFullScreenMode) return; if (DeepLinkHandler.shared.isLaunchedByDeeplink) return; - BOOL const isSearchHidden = ([MWMSearchManager manager].state == MWMSearchManagerStateHidden); - BOOL const isNavigationDashboardHidden = - ([MWMNavigationDashboardManager sharedManager].state == MWMNavigationDashboardStateHidden); - if (isSearchHidden && isNavigationDashboardHidden) + BOOL const isSearchHidden = [MWMSearchManager manager].state == MWMSearchManagerStateHidden; + BOOL const isNavigationDashboardHidden = [MWMNavigationDashboardManager sharedManager].state == MWMNavigationDashboardStateHidden; + if (isSearchHidden && isNavigationDashboardHidden) { self.controlsManager.hidden = !self.controlsManager.hidden; + } } - (void)onMapObjectSelected { diff --git a/iphone/Maps/Common/Statistics/StatisticsStrings.h b/iphone/Maps/Common/Statistics/StatisticsStrings.h index c774e6837e..b951ab02df 100644 --- a/iphone/Maps/Common/Statistics/StatisticsStrings.h +++ b/iphone/Maps/Common/Statistics/StatisticsStrings.h @@ -48,6 +48,7 @@ static NSString * const kStatAuthorization = @"Authorization"; static NSString * const kStatAutoDownload = @"Auto download"; static NSString * const kStatAutoZoom = @"Autozoom"; static NSString * const kStatBack = @"Back"; +static NSString * const kStatBackClick = @"Back_click"; static NSString * const kStatBanner = @"banner"; static NSString * const kStatBattery = @"battery"; static NSString * const kStatBicycle = @"Bicycle"; @@ -397,6 +398,7 @@ static NSString * const kStatPointToPoint = @"point_to_point"; static NSString * const kStatPoints = @"points"; static NSString * const kStatPortrait = @"Portrait"; static NSString * const kStatPosition = @"position"; +static NSString * const kStatPreview = @"preview"; static NSString * const kStatPriceCategory = @"price_category"; static NSString * const kStatPrivate = @"private"; static NSString * const kStatProblem = @"Problem"; @@ -463,6 +465,9 @@ static NSString * const kStatSearchFilterCancel = @"Search_Filter_Cancel"; static NSString * const kStatSearchFilterClick = @"Search_Filter_Click"; static NSString * const kStatSearchFilterOpen = @"Search_Filter_Open"; static NSString * const kStatSearchFilterReset = @"Search_Filter_Reset"; +static NSString * const kStatSearchMapOneResult = @"map_search_one_result"; +static NSString * const kStatSearchMapSearch = @"map_search"; +static NSString * const kStatSearchResults = @"search_results"; static NSString * const kStatSearchRestaurants = @"Search.Restaurants"; static NSString * const kStatSearchSponsoredSelect = @"Search_SponsoredCategory_selected"; static NSString * const kStatSearchSponsoredShow = @"Search_SponsoredCategory_shown"; @@ -515,6 +520,7 @@ static NSString * const kStatThingsToDo = @"Things to do"; static NSString * const kStatTipsTricksClick = @"TipsTricks_click"; static NSString * const kStatTipsTricksClose = @"TipsTricks_close"; static NSString * const kStatTipsTricksShow = @"TipsTricks_show"; +static NSString * const kStatTo = @"to"; static NSString * const kStatToLocation = @"to_location"; static NSString * const kStatToMyPosition = @"To my position"; static NSString * const kStatToday = @"Today"; diff --git a/iphone/Maps/Core/Theme/SearchStyleSheet.swift b/iphone/Maps/Core/Theme/SearchStyleSheet.swift index c4832be461..4830c6c637 100644 --- a/iphone/Maps/Core/Theme/SearchStyleSheet.swift +++ b/iphone/Maps/Core/Theme/SearchStyleSheet.swift @@ -78,6 +78,7 @@ class SearchStyleSheet: IStyleSheet { theme.add(styleName: "SearchSearchTextFieldIcon") { (s) -> (Void) in s.tintColor = colors.blackSecondaryText + s.coloring = MWMButtonColoring.black s.color = colors.blackSecondaryText } diff --git a/iphone/Maps/Images.xcassets/Navigation Bar/ic_nav_bar_back.imageset/ic_nav_bar_back.png b/iphone/Maps/Images.xcassets/Navigation Bar/ic_nav_bar_back.imageset/ic_nav_bar_back.png deleted file mode 100644 index 0042d4ddee..0000000000 Binary files a/iphone/Maps/Images.xcassets/Navigation Bar/ic_nav_bar_back.imageset/ic_nav_bar_back.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/Navigation Bar/ic_nav_bar_back.imageset/ic_nav_bar_back@2x.png b/iphone/Maps/Images.xcassets/Navigation Bar/ic_nav_bar_back.imageset/ic_nav_bar_back@2x.png deleted file mode 100644 index 0d77d0412c..0000000000 Binary files a/iphone/Maps/Images.xcassets/Navigation Bar/ic_nav_bar_back.imageset/ic_nav_bar_back@2x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/Navigation Bar/ic_nav_bar_back.imageset/ic_nav_bar_back@3x.png b/iphone/Maps/Images.xcassets/Navigation Bar/ic_nav_bar_back.imageset/ic_nav_bar_back@3x.png deleted file mode 100644 index ae77ae035e..0000000000 Binary files a/iphone/Maps/Images.xcassets/Navigation Bar/ic_nav_bar_back.imageset/ic_nav_bar_back@3x.png and /dev/null differ diff --git a/iphone/Maps/Images.xcassets/Search/ic_search_back.imageset/Back to search.png b/iphone/Maps/Images.xcassets/Search/ic_search_back.imageset/Back to search.png new file mode 100644 index 0000000000..e1d2026617 Binary files /dev/null and b/iphone/Maps/Images.xcassets/Search/ic_search_back.imageset/Back to search.png differ diff --git a/iphone/Maps/Images.xcassets/Search/ic_search_back.imageset/Back to search@2x.png b/iphone/Maps/Images.xcassets/Search/ic_search_back.imageset/Back to search@2x.png new file mode 100644 index 0000000000..c2b34bb044 Binary files /dev/null and b/iphone/Maps/Images.xcassets/Search/ic_search_back.imageset/Back to search@2x.png differ diff --git a/iphone/Maps/Images.xcassets/Search/ic_search_back.imageset/Back to search@3x.png b/iphone/Maps/Images.xcassets/Search/ic_search_back.imageset/Back to search@3x.png new file mode 100644 index 0000000000..6952dcd0d1 Binary files /dev/null and b/iphone/Maps/Images.xcassets/Search/ic_search_back.imageset/Back to search@3x.png differ diff --git a/iphone/Maps/Images.xcassets/Navigation Bar/ic_nav_bar_back.imageset/Contents.json b/iphone/Maps/Images.xcassets/Search/ic_search_back.imageset/Contents.json similarity index 57% rename from iphone/Maps/Images.xcassets/Navigation Bar/ic_nav_bar_back.imageset/Contents.json rename to iphone/Maps/Images.xcassets/Search/ic_search_back.imageset/Contents.json index 14065c084f..a0e9110b21 100644 --- a/iphone/Maps/Images.xcassets/Navigation Bar/ic_nav_bar_back.imageset/Contents.json +++ b/iphone/Maps/Images.xcassets/Search/ic_search_back.imageset/Contents.json @@ -2,22 +2,25 @@ "images" : [ { "idiom" : "universal", - "filename" : "ic_nav_bar_back.png", + "filename" : "Back to search.png", "scale" : "1x" }, { "idiom" : "universal", - "filename" : "ic_nav_bar_back@2x.png", + "filename" : "Back to search@2x.png", "scale" : "2x" }, { "idiom" : "universal", - "filename" : "ic_nav_bar_back@3x.png", + "filename" : "Back to search@3x.png", "scale" : "3x" } ], "info" : { "version" : 1, "author" : "xcode" + }, + "properties" : { + "template-rendering-intent" : "template" } } \ No newline at end of file diff --git a/iphone/Maps/Maps.xcodeproj/project.pbxproj b/iphone/Maps/Maps.xcodeproj/project.pbxproj index 543a295f84..6170e8de75 100644 --- a/iphone/Maps/Maps.xcodeproj/project.pbxproj +++ b/iphone/Maps/Maps.xcodeproj/project.pbxproj @@ -628,6 +628,7 @@ 995F1613244F0AA50060631D /* BottomMenuLayersCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 995F1611244F0AA40060631D /* BottomMenuLayersCell.swift */; }; 995F1614244F0AA50060631D /* BottomMenuLayersCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = 995F1612244F0AA40060631D /* BottomMenuLayersCell.xib */; }; 9977E6A12480E1EE0073780C /* BottomMenuLayerButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9977E6A02480E1EE0073780C /* BottomMenuLayerButton.swift */; }; + 9977E69C247BFB510073780C /* MWMSearchTextField.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9977E69B247BFB510073780C /* MWMSearchTextField.swift */; }; 9977E6A32480F9BF0073780C /* BottomMenuLayerButtonRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9977E6A22480F9BF0073780C /* BottomMenuLayerButtonRenderer.swift */; }; 998927302449DE1500260CE2 /* TabBarArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9989272F2449DE1500260CE2 /* TabBarArea.swift */; }; 998927382449E60200260CE2 /* BottomMenuPresenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 998927322449E60200260CE2 /* BottomMenuPresenter.swift */; }; @@ -867,7 +868,6 @@ F6E2FEE21E097BA00083EBEC /* MWMSearchManager.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCFB1E097B9F0083EBEC /* MWMSearchManager.mm */; }; F6E2FEE51E097BA00083EBEC /* MWMSearchNoResults.m in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FCFD1E097B9F0083EBEC /* MWMSearchNoResults.m */; }; F6E2FEE81E097BA00083EBEC /* MWMSearchNoResults.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FCFE1E097B9F0083EBEC /* MWMSearchNoResults.xib */; }; - F6E2FEEB1E097BA00083EBEC /* MWMSearchTextField.mm in Sources */ = {isa = PBXBuildFile; fileRef = F6E2FD001E097B9F0083EBEC /* MWMSearchTextField.mm */; }; F6E2FEEE1E097BA00083EBEC /* MWMSearchView.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FD011E097B9F0083EBEC /* MWMSearchView.xib */; }; F6E2FF001E097BA00083EBEC /* SearchCategoryCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FD0E1E097B9F0083EBEC /* SearchCategoryCell.xib */; }; F6E2FF061E097BA00083EBEC /* SearchHistoryClearCell.xib in Resources */ = {isa = PBXBuildFile; fileRef = F6E2FD121E097B9F0083EBEC /* SearchHistoryClearCell.xib */; }; @@ -1718,6 +1718,7 @@ 995F1611244F0AA40060631D /* BottomMenuLayersCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomMenuLayersCell.swift; sourceTree = ""; }; 995F1612244F0AA40060631D /* BottomMenuLayersCell.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = BottomMenuLayersCell.xib; sourceTree = ""; }; 9977E6A02480E1EE0073780C /* BottomMenuLayerButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomMenuLayerButton.swift; sourceTree = ""; }; + 9977E69B247BFB510073780C /* MWMSearchTextField.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MWMSearchTextField.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 = ""; }; 998927322449E60200260CE2 /* BottomMenuPresenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BottomMenuPresenter.swift; sourceTree = ""; }; @@ -2110,8 +2111,6 @@ F6E2FCFC1E097B9F0083EBEC /* MWMSearchNoResults.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMSearchNoResults.h; sourceTree = ""; }; F6E2FCFD1E097B9F0083EBEC /* MWMSearchNoResults.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; lineEnding = 0; path = MWMSearchNoResults.m; sourceTree = ""; xcLanguageSpecificationIdentifier = xcode.lang.objcpp; }; F6E2FCFE1E097B9F0083EBEC /* MWMSearchNoResults.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMSearchNoResults.xib; sourceTree = ""; }; - F6E2FCFF1E097B9F0083EBEC /* MWMSearchTextField.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = MWMSearchTextField.h; sourceTree = ""; }; - F6E2FD001E097B9F0083EBEC /* MWMSearchTextField.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = MWMSearchTextField.mm; sourceTree = ""; }; F6E2FD011E097B9F0083EBEC /* MWMSearchView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = MWMSearchView.xib; sourceTree = ""; }; F6E2FD0E1E097B9F0083EBEC /* SearchCategoryCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchCategoryCell.xib; sourceTree = ""; }; F6E2FD121E097B9F0083EBEC /* SearchHistoryClearCell.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; path = SearchHistoryClearCell.xib; sourceTree = ""; }; @@ -4698,8 +4697,7 @@ F6E2FCFC1E097B9F0083EBEC /* MWMSearchNoResults.h */, F6E2FCFD1E097B9F0083EBEC /* MWMSearchNoResults.m */, F6E2FCFE1E097B9F0083EBEC /* MWMSearchNoResults.xib */, - F6E2FCFF1E097B9F0083EBEC /* MWMSearchTextField.h */, - F6E2FD001E097B9F0083EBEC /* MWMSearchTextField.mm */, + 9977E69B247BFB510073780C /* MWMSearchTextField.swift */, F6E2FD011E097B9F0083EBEC /* MWMSearchView.xib */, F6E2FD021E097B9F0083EBEC /* Tabs */, F6E2FD281E097BA00083EBEC /* TableView */, @@ -5851,6 +5849,7 @@ 34D3B02A1E389D05004100F9 /* MWMEditorAdditionalNameTableViewCell.m in Sources */, 33C558E3217F6CF100299E70 /* UploadActionCell.swift in Sources */, 993DF10523F6BDB100AC231A /* UINavigationItem+styleName.swift in Sources */, + 9977E69C247BFB510073780C /* MWMSearchTextField.swift in Sources */, 4726254921C27D4B00C7BAAD /* PlacePageDescriptionViewController.swift in Sources */, 99CB34CF236B054B001D28AD /* DeepLinkInfoBuilder.swift in Sources */, 347E039A1FAC5F1D00426032 /* UIWindow+InputLanguage.swift in Sources */, @@ -5932,7 +5931,6 @@ 34AB66261FC5AA330078E451 /* RouteManagerDimView.swift in Sources */, 993F5514237C622700545511 /* DeepLinkStrategyFactory.swift in Sources */, 6741AA2B1BF340DE002C974C /* CircleView.m in Sources */, - F6E2FEEB1E097BA00083EBEC /* MWMSearchTextField.mm in Sources */, 99CB34982369C291001D28AD /* FirstLaunchPresenter.swift in Sources */, CD08887422B7ABB400C1368D /* MWMDiscoveryCollectionView.mm in Sources */, 4788739220EE326500F6826B /* VerticallyAlignedButton.swift in Sources */, diff --git a/iphone/Maps/UI/PlacePage/PlacePageLayout/ActionBar/MWMActionBarButton.xib b/iphone/Maps/UI/PlacePage/PlacePageLayout/ActionBar/MWMActionBarButton.xib index 3cd2a5fee7..136569a773 100644 --- a/iphone/Maps/UI/PlacePage/PlacePageLayout/ActionBar/MWMActionBarButton.xib +++ b/iphone/Maps/UI/PlacePage/PlacePageLayout/ActionBar/MWMActionBarButton.xib @@ -14,7 +14,7 @@ - + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + - + + @@ -94,7 +134,12 @@ - + + + + + + @@ -104,7 +149,7 @@ - + @@ -117,10 +162,10 @@ - + - + @@ -135,7 +180,7 @@ - + @@ -195,13 +240,13 @@ - + - + @@ -239,7 +284,7 @@ - + @@ -248,14 +293,14 @@ - + - + - + @@ -269,5 +314,7 @@ + + diff --git a/iphone/Maps/UI/Search/SearchBar.swift b/iphone/Maps/UI/Search/SearchBar.swift index aba8445c08..6c37e0f5ce 100644 --- a/iphone/Maps/UI/Search/SearchBar.swift +++ b/iphone/Maps/UI/Search/SearchBar.swift @@ -1,4 +1,14 @@ +@objc enum SearchBarState: Int { + case ready + case searching + case back +} + final class SearchBar: SolidTouchView { + @IBOutlet var searchIcon: UIImageView! + @IBOutlet var activityIndicator: UIActivityIndicatorView! + @IBOutlet var backButton: UIButton! + override var visibleAreaAffectDirections: MWMAvailableAreaAffectDirections { return alternative(iPhone: .top, iPad: .left) } override var placePageAreaAffectDirections: MWMAvailableAreaAffectDirections { return alternative(iPhone: [], iPad: .left) } @@ -8,4 +18,33 @@ final class SearchBar: SolidTouchView { override var trafficButtonAreaAffectDirections: MWMAvailableAreaAffectDirections { return alternative(iPhone: .top, iPad: .left) } override var tabBarAreaAffectDirections: MWMAvailableAreaAffectDirections { return alternative(iPhone: [], iPad: .left) } + + @objc var state: SearchBarState = .ready { + didSet { + if state != oldValue { + updateLeftView() + } + } + } + + override func awakeFromNib() { + super.awakeFromNib() + updateLeftView() + } + + private func updateLeftView() { + searchIcon.isHidden = true + activityIndicator.isHidden = true + backButton.isHidden = true + + switch state { + case .ready: + searchIcon.isHidden = false + case .searching: + activityIndicator.isHidden = false + activityIndicator.startAnimating() + case .back: + backButton.isHidden = false + } + } } diff --git a/iphone/Maps/UI/Search/TableView/MWMSearchTableViewController.h b/iphone/Maps/UI/Search/TableView/MWMSearchTableViewController.h index d776e22b08..dd977ef2bd 100644 --- a/iphone/Maps/UI/Search/TableView/MWMSearchTableViewController.h +++ b/iphone/Maps/UI/Search/TableView/MWMSearchTableViewController.h @@ -1,11 +1,11 @@ #import "MWMSearch.h" #import "MWMSearchManager.h" #import "MWMSearchTabbedViewProtocol.h" -#import "MWMSearchTextField.h" #import "MWMViewController.h" #include +@class MWMSearchTextField; namespace search { class Result; diff --git a/iphone/Maps/UI/Storyboard/Main.storyboard b/iphone/Maps/UI/Storyboard/Main.storyboard index 78110e9531..65bc095bf0 100644 --- a/iphone/Maps/UI/Storyboard/Main.storyboard +++ b/iphone/Maps/UI/Storyboard/Main.storyboard @@ -1,9 +1,9 @@ - + - + @@ -121,8 +121,35 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + +