forked from organicmaps/organicmaps
[ios] Added input language code to search params, see #601
This commit is contained in:
parent
113dcb47c8
commit
8584d984db
5 changed files with 25 additions and 3 deletions
|
@ -18,7 +18,7 @@ int8_t StringUtf8Multilang::GetLangIndex(string const & lang)
|
|||
if (lang == gLangs[i])
|
||||
return static_cast<int8_t>(i);
|
||||
|
||||
return -1;
|
||||
return UNSUPPORTED_LANGUAGE_CODE;
|
||||
}
|
||||
|
||||
char const * StringUtf8Multilang::GetLangByCode(int8_t langCode)
|
||||
|
|
|
@ -35,6 +35,8 @@ class StringUtf8Multilang
|
|||
size_t GetNextIndex(size_t i) const;
|
||||
|
||||
public:
|
||||
static int8_t const UNSUPPORTED_LANGUAGE_CODE = -1;
|
||||
/// @return UNSUPPORTED_LANGUAGE_CODE if language is not recognized
|
||||
static int8_t GetLangIndex(string const & lang);
|
||||
/// @return empty string if langCode is invalid
|
||||
static char const * GetLangByCode(int8_t langCode);
|
||||
|
|
|
@ -76,7 +76,7 @@ size_t CategoriesHolder::LoadFromStream(string const & buffer)
|
|||
continue;
|
||||
}
|
||||
int8_t langCode = StringUtf8Multilang::GetLangIndex(*iter);
|
||||
if (langCode == -1)
|
||||
if (langCode == StringUtf8Multilang::UNSUPPORTED_LANGUAGE_CODE)
|
||||
{
|
||||
LOG(LWARNING, ("Invalid language code:", *iter));
|
||||
continue;
|
||||
|
|
|
@ -147,6 +147,8 @@ static void OnSearchResultCallback(search::Results const & res, int queryId)
|
|||
{
|
||||
params.m_query = [[queryString precomposedStringWithCompatibilityMapping] UTF8String];
|
||||
params.m_callback = bind(&OnSearchResultCallback, _1, g_queryId);
|
||||
// Set current keyboard input mode
|
||||
params.SetInputLanguage([[UITextInputMode currentInputMode].primaryLanguage UTF8String]);
|
||||
|
||||
bool radarEnabled = m_radarButton.selected == YES;
|
||||
CLLocation * l = m_locationManager.lastLocation;
|
||||
|
|
|
@ -1,5 +1,7 @@
|
|||
#pragma once
|
||||
|
||||
#include "../coding/multilang_utf8_string.hpp"
|
||||
|
||||
#include "../geometry/point2d.hpp"
|
||||
|
||||
#include "../std/function.hpp"
|
||||
|
@ -16,7 +18,9 @@ namespace search
|
|||
public:
|
||||
enum ModeT { All, NearMe };
|
||||
|
||||
SearchParams() : m_mode(All), m_validPos(false) {}
|
||||
SearchParams() : m_mode(All),
|
||||
m_inputLanguageCode(StringUtf8Multilang::UNSUPPORTED_LANGUAGE_CODE),
|
||||
m_validPos(false) {}
|
||||
|
||||
inline void SetNearMeMode(bool b)
|
||||
{
|
||||
|
@ -30,6 +34,17 @@ namespace search
|
|||
m_validPos = true;
|
||||
}
|
||||
|
||||
/// @param[in] language can be "fr", "en-US", "ru_RU" etc.
|
||||
inline void SetInputLanguage(string const & language)
|
||||
{
|
||||
// @TODO take into an account zh_pinyin, ko_rm and ja_rm
|
||||
size_t delimPos = language.find("-");
|
||||
if (delimPos == string::npos)
|
||||
delimPos = language.find("_");
|
||||
m_inputLanguageCode = StringUtf8Multilang::GetLangIndex(delimPos == string::npos
|
||||
? language: language.substr(0, delimPos));
|
||||
}
|
||||
|
||||
inline bool IsNearMeMode() const
|
||||
{
|
||||
// this mode is valid only with correct My Position
|
||||
|
@ -41,6 +56,9 @@ namespace search
|
|||
|
||||
string m_query;
|
||||
ModeT m_mode;
|
||||
/// Can be -1 (@see StringUtf8Multilang::UNSUPPORTED_LANGUAGE_CODE) if input
|
||||
/// language is not known
|
||||
int8_t m_inputLanguageCode;
|
||||
|
||||
double m_lat, m_lon;
|
||||
bool m_validPos;
|
||||
|
|
Loading…
Add table
Reference in a new issue