mirror of
https://codeberg.org/comaps/comaps
synced 2025-12-23 22:53:43 +00:00
[ios] refactor search - use SearchQuery class instead of text+locale+isCategory
Signed-off-by: Kiryl Kaveryn <kirylkaveryn@gmail.com>
This commit is contained in:
committed by
Konstantin Pastbin
parent
09171651ff
commit
96c24cf973
@@ -113,10 +113,11 @@
|
||||
sd.onViewportChanged(kSearchInViewportZoom)
|
||||
}
|
||||
}
|
||||
let searchQuery = SearchQuery(sd.query, locale: sd.locale, source: .deeplink)
|
||||
if (sd.isSearchOnMap) {
|
||||
MWMMapViewControlsManager.manager()?.searchText(onMap: sd.query, forInputLocale: sd.locale)
|
||||
MWMMapViewControlsManager.manager()?.search(onMap: searchQuery)
|
||||
} else {
|
||||
MWMMapViewControlsManager.manager()?.searchText(sd.query, forInputLocale: sd.locale)
|
||||
MWMMapViewControlsManager.manager()?.search(searchQuery)
|
||||
}
|
||||
return true
|
||||
case .menu:
|
||||
|
||||
@@ -3,14 +3,22 @@
|
||||
|
||||
NS_ASSUME_NONNULL_BEGIN
|
||||
|
||||
typedef NS_ENUM(NSUInteger, SearchTextSource) {
|
||||
SearchTextSourceTypedText,
|
||||
SearchTextSourceCategory,
|
||||
SearchTextSourceSuggestion,
|
||||
SearchTextSourceDeeplink
|
||||
};
|
||||
|
||||
@class SearchResult;
|
||||
@class SearchQuery;
|
||||
|
||||
@protocol SearchManager
|
||||
+ (void)addObserver:(id<MWMSearchObserver>)observer;
|
||||
+ (void)removeObserver:(id<MWMSearchObserver>)observer;
|
||||
|
||||
+ (void)saveQuery:(NSString *)query forInputLocale:(NSString *)inputLocale;
|
||||
+ (void)searchQuery:(NSString *)query forInputLocale:(NSString *)inputLocale withCategory:(BOOL)isCategory;
|
||||
+ (void)saveQuery:(SearchQuery *)query;
|
||||
+ (void)searchQuery:(SearchQuery *)query;
|
||||
|
||||
+ (void)showResultAtIndex:(NSUInteger)index;
|
||||
+ (void)showEverywhereSearchResultsOnMap;
|
||||
|
||||
@@ -88,7 +88,7 @@ using Observers = NSHashTable<Observer>;
|
||||
}
|
||||
|
||||
- (void)searchInViewport {
|
||||
search::ViewportSearchParams params{
|
||||
search::ViewportSearchParams params {
|
||||
m_query, m_locale, {} /* default timeout */, m_isCategory,
|
||||
// m_onStarted
|
||||
{},
|
||||
@@ -125,29 +125,29 @@ using Observers = NSHashTable<Observer>;
|
||||
|
||||
#pragma mark - Methods
|
||||
|
||||
+ (void)saveQuery:(NSString *)query forInputLocale:(NSString *)inputLocale {
|
||||
if (!query || query.length == 0)
|
||||
+ (void)saveQuery:(SearchQuery *)query {
|
||||
if (!query.text || query.text.length == 0)
|
||||
return;
|
||||
|
||||
std::string locale = (!inputLocale || inputLocale.length == 0)
|
||||
std::string locale = (!query.locale || query.locale == 0)
|
||||
? [MWMSearch manager]->m_locale
|
||||
: inputLocale.UTF8String;
|
||||
std::string text = query.UTF8String;
|
||||
: query.locale.UTF8String;
|
||||
std::string text = query.text.UTF8String;
|
||||
GetFramework().GetSearchAPI().SaveSearchQuery({std::move(locale), std::move(text)});
|
||||
}
|
||||
|
||||
+ (void)searchQuery:(NSString *)query forInputLocale:(NSString *)inputLocale withCategory:(BOOL)isCategory {
|
||||
if (!query)
|
||||
+ (void)searchQuery:(SearchQuery *)query {
|
||||
if (!query.text)
|
||||
return;
|
||||
|
||||
MWMSearch *manager = [MWMSearch manager];
|
||||
if (inputLocale.length != 0)
|
||||
manager->m_locale = inputLocale.UTF8String;
|
||||
if (query.locale.length != 0)
|
||||
manager->m_locale = query.locale.UTF8String;
|
||||
|
||||
// Pass input query as-is without any normalization (precomposedStringWithCompatibilityMapping).
|
||||
// Otherwise № -> No, and it's unexpectable for the search index.
|
||||
manager->m_query = query.UTF8String;
|
||||
manager->m_isCategory = (isCategory == YES);
|
||||
manager->m_query = query.text.UTF8String;
|
||||
manager->m_isCategory = (query.source == SearchTextSourceCategory);
|
||||
manager.textChanged = YES;
|
||||
|
||||
[manager update];
|
||||
|
||||
Reference in New Issue
Block a user