Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mapsme/omim.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIlya Grechuhin <i.grechuhin@gmail.com>2017-08-30 18:50:16 +0300
committermpimenov <mpimenov@users.noreply.github.com>2017-08-30 19:47:38 +0300
commitb35b9726f23a0d22f47805624a806977ecf77706 (patch)
tree3206227ad6b5faa7798b03492f1b5cad8686da25
parent78630906a0e45ef290ceafc82927a9fe611ad0a2 (diff)
[fix] [ios] Fixed search usage (Cian and other cases).beta-985
-rw-r--r--iphone/Maps/Classes/MapViewController.mm4
-rw-r--r--iphone/Maps/Core/Search/MWMSearch.h2
-rw-r--r--iphone/Maps/Core/Search/MWMSearch.mm98
-rw-r--r--iphone/Maps/UI/Search/MWMSearchManager.mm16
4 files changed, 76 insertions, 44 deletions
diff --git a/iphone/Maps/Classes/MapViewController.mm b/iphone/Maps/Classes/MapViewController.mm
index fe67061277..805aebcaf1 100644
--- a/iphone/Maps/Classes/MapViewController.mm
+++ b/iphone/Maps/Classes/MapViewController.mm
@@ -584,10 +584,12 @@ BOOL gIsFirstMyPositionMode = YES;
- (void)onKeyboardAnimation
{
auto const kbHeight = [MWMKeyboard keyboardHeight];
- self.visibleAreaKeyboard.constant = kbHeight;
self.sideButtonsAreaKeyboard.constant = kbHeight;
if (IPAD)
+ {
+ self.visibleAreaKeyboard.constant = kbHeight;
self.placePageAreaKeyboard.constant = kbHeight;
+ }
[self.view layoutIfNeeded];
}
#pragma mark - Properties
diff --git a/iphone/Maps/Core/Search/MWMSearch.h b/iphone/Maps/Core/Search/MWMSearch.h
index ac73ba1f9e..306bc1dcd2 100644
--- a/iphone/Maps/Core/Search/MWMSearch.h
+++ b/iphone/Maps/Core/Search/MWMSearch.h
@@ -10,6 +10,8 @@ class Result;
@interface MWMSearch : NSObject
++ (BOOL)isCianSearch:(NSString *)query;
+
+ (void)addObserver:(id<MWMSearchObserver>)observer;
+ (void)removeObserver:(id<MWMSearchObserver>)observer;
diff --git a/iphone/Maps/Core/Search/MWMSearch.mm b/iphone/Maps/Core/Search/MWMSearch.mm
index 7ad03aa156..3ada774ff3 100644
--- a/iphone/Maps/Core/Search/MWMSearch.mm
+++ b/iphone/Maps/Core/Search/MWMSearch.mm
@@ -11,6 +11,8 @@
#include "search/everywhere_search_params.hpp"
#include "search/viewport_search_params.hpp"
+extern NSString * const kCianCategory;
+
namespace
{
using Observer = id<MWMSearchObserver>;
@@ -40,6 +42,8 @@ using Observers = NSHashTable<Observer>;
@property(nonatomic) MWMSearchBanners * banners;
+@property(nonatomic) NSInteger searchCount;
+
@end
@implementation MWMSearch
@@ -63,6 +67,11 @@ using Observers = NSHashTable<Observer>;
return manager;
}
++ (BOOL)isCianSearch:(NSString *)query
+{
+ return [query isEqualToString:[L(kCianCategory) stringByAppendingString:@" "]];
+}
+
- (instancetype)initManager
{
self = [super init];
@@ -81,32 +90,37 @@ using Observers = NSHashTable<Observer>;
__strong auto self = weakSelf;
if (!self)
return;
- if (timestamp != self.lastSearchStamp)
- return;
-
- self->m_everywhereResults = results;
- self->m_isLocalAdsCustomer = isLocalAdsCustomer;
- self.suggestionsCount = results.GetSuggestsCount();
-
- if (results.IsEndMarker())
+ if (timestamp == self.lastSearchStamp)
{
- [self checkIsHotelResults:results];
- if (results.IsEndedNormal())
+ self->m_everywhereResults = results;
+ self->m_isLocalAdsCustomer = isLocalAdsCustomer;
+ self.suggestionsCount = results.GetSuggestsCount();
+
+ if (results.IsEndMarker())
{
- self.everywhereSearchCompleted = YES;
- if (IPAD || self.searchOnMap)
+ [self checkIsHotelResults:results];
+ if (results.IsEndedNormal())
{
+ self.everywhereSearchCompleted = YES;
+ if ([MWMSearch isCianSearch:@(m_viewportParams.m_query.c_str())])
+ {
+ self.searchCount -= 1;
+ return;
+ }
+
auto & f = GetFramework();
- f.ShowSearchResults(m_everywhereResults);
+ if (IPAD || self.searchOnMap)
+ f.ShowSearchResults(m_everywhereResults);
f.SearchInViewport(m_viewportParams);
}
}
- [self onSearchCompleted];
- }
- else
- {
- [self onSearchResultsUpdated];
+ else
+ {
+ [self onSearchResultsUpdated];
+ }
}
+ if (results.IsEndMarker())
+ self.searchCount -= 1;
};
}
{
@@ -115,7 +129,7 @@ using Observers = NSHashTable<Observer>;
__strong auto self = weakSelf;
if (!self)
return;
- [self onSearchStarted];
+ self.searchCount += 1;
};
}
{
@@ -130,11 +144,18 @@ using Observers = NSHashTable<Observer>;
self.viewportResultsEmpty = results.GetCount() == 0;
self.viewportSearchCompleted = YES;
}
- [self onSearchCompleted];
+ if (results.IsEndMarker())
+ self.searchCount -= 1;
};
}
}
+- (void)searchEverywhere
+{
+ GetFramework().SearchEverywhere(m_everywhereParams);
+ self.searchCount += 1;
+}
+
- (void)checkIsHotelResults:(search::Results const &)results
{
self.isHotelResults = search::HotelsClassifier::IsHotelResults(results);
@@ -156,8 +177,9 @@ using Observers = NSHashTable<Observer>;
[self updateCallbacks];
[self updateFilters];
auto & f = GetFramework();
- f.SearchEverywhere(m_everywhereParams);
- [self onSearchStarted];
+ if ([MWMSearch isCianSearch:@(m_everywhereParams.m_query.c_str())])
+ f.SearchInViewport(m_viewportParams);
+ [self searchEverywhere];
}
#pragma mark - Add/Remove Observers
@@ -251,7 +273,10 @@ using Observers = NSHashTable<Observer>;
{
auto manager = [MWMSearch manager];
manager->m_everywhereResults.Clear();
+ manager->m_everywhereParams.m_query.clear();
+ manager->m_viewportParams.m_query.clear();
manager.suggestionsCount = 0;
+ [manager.filter reset];
[self reset];
}
@@ -263,8 +288,6 @@ using Observers = NSHashTable<Observer>;
if (manager.searchOnMap == searchOnMap)
return;
manager.searchOnMap = searchOnMap;
- if (!IPAD)
- [manager update];
}
+ (NSUInteger)suggestionsCount { return [MWMSearch manager].suggestionsCount; }
@@ -288,7 +311,6 @@ using Observers = NSHashTable<Observer>;
MWMSearch * manager = [MWMSearch manager];
[manager.filter reset];
[manager update];
- [manager onSearchCompleted];
}
- (void)updateItemsIndexWithBannerReload:(BOOL)reloadBanner
@@ -337,18 +359,6 @@ using Observers = NSHashTable<Observer>;
- (void)onSearchCompleted
{
-// TODO: Uncomment on release with search filters. Update to less annoying behavior.
-//
-// BOOL allCompleted = self.viewportSearchCompleted;
-// BOOL allEmpty = self.viewportResultsEmpty;
-// if (IPAD)
-// {
-// allCompleted = allCompleted && self.everywhereSearchCompleted;
-// allEmpty = allEmpty && m_everywhereResults.GetCount() == 0;
-// }
-// if (allCompleted && allEmpty)
-// [[MWMAlertViewController activeAlertController] presentSearchNoResultsAlert];
-
[self updateItemsIndexWithBannerReload:YES];
for (Observer observer in self.observers)
{
@@ -367,4 +377,18 @@ using Observers = NSHashTable<Observer>;
}
}
+#pragma mark - Properties
+
+- (void)setSearchCount:(NSInteger)searchCount
+{
+ NSAssert((searchCount >= 0) &&
+ ((_searchCount == searchCount - 1) || (_searchCount == searchCount + 1)),
+ @"Invalid search count update");
+ if (_searchCount == 0)
+ [self onSearchStarted];
+ else if (searchCount == 0)
+ [self onSearchCompleted];
+ _searchCount = searchCount;
+}
+
@end
diff --git a/iphone/Maps/UI/Search/MWMSearchManager.mm b/iphone/Maps/UI/Search/MWMSearchManager.mm
index 021fd7eaba..c1d995ddf5 100644
--- a/iphone/Maps/UI/Search/MWMSearchManager.mm
+++ b/iphone/Maps/UI/Search/MWMSearchManager.mm
@@ -113,7 +113,6 @@ using Observers = NSHashTable<Observer>;
if (self.state != MWMSearchManagerStateHidden)
self.state = MWMSearchManagerStateDefault;
self.searchTextField.text = @"";
- [self clearFilter];
[MWMSearch clear];
}
@@ -278,10 +277,7 @@ using Observers = NSHashTable<Observer>;
{
[self.navigationController popToRootViewControllerAnimated:NO];
- self.actionBarState = MWMSearchManagerActionBarStateHidden;
- [self animateConstraints:^{
- self.actionBarViewBottom.priority = UILayoutPriorityDefaultLow;
- }];
+ [self updateTableSearchActionBar];
[self viewHidden:NO];
[MWMSearch setSearchOnMap:NO];
[self.tableViewController reloadData];
@@ -328,6 +324,12 @@ using Observers = NSHashTable<Observer>;
- (void)onSearchCompleted
{
+ if (self.state == MWMSearchManagerStateTableSearch)
+ [self updateTableSearchActionBar];
+}
+
+- (void)updateTableSearchActionBar
+{
if (self.state != MWMSearchManagerStateTableSearch)
return;
[self animateConstraints:^{
@@ -340,6 +342,8 @@ using Observers = NSHashTable<Observer>;
hideActionBar = ([MWMSearch suggestionsCount] != 0);
self.actionBarState = hideActionBar ? MWMSearchManagerActionBarStateHidden
: MWMSearchManagerActionBarStateModeFilter;
+
+ self.actionBarViewBottom.priority = UILayoutPriorityDefaultLow;
}];
}
@@ -370,7 +374,7 @@ using Observers = NSHashTable<Observer>;
switch (self.state)
{
case MWMSearchManagerStateTableSearch: self.state = MWMSearchManagerStateMapSearch; break;
- case MWMSearchManagerStateMapSearch: self.state = MWMSearchManagerStateTableSearch;
+ case MWMSearchManagerStateMapSearch: self.state = MWMSearchManagerStateTableSearch; break;
default: break;
}
}