Do not trigger cloud prediction when the full-pinyin auxiliary code is active.
This commit is contained in:
1 parent
e31cd003b0
commit
77af7d7f26
4 files changed
+110
-8
No files matched your search
@@ -3,6 +3,7 @@
|
||||
#include <algorithm>
|
||||
#include "config/ime_config.h"
|
||||
#include "MetasequoiaImeEngine/common/helpcode_utils.h"
|
||||
#include "MetasequoiaImeEngine/quanpin/quanpin_query.h"
|
||||
#include "MetasequoiaImeEngine/shuangpin/shuangpin_query.h"
|
||||
#include "MetasequoiaImeEngine/shuangpin/shuangpin_utils.h"
|
||||
|
||||
@@ -43,6 +44,27 @@ ShuangpinCompositionBase ResolveShuangpinCompositionBase(const QueryRequest &req
|
||||
|
||||
return base;
|
||||
}
|
||||
|
||||
bool HasActiveQuanpinHelpcode(const QueryRequest &request)
|
||||
{
|
||||
if (!request.enable_shuangpin_helpcode || request.raw_input.empty())
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
const auto &raw_input_with_cases = request.raw_input_with_cases.empty() ? request.raw_input : request.raw_input_with_cases;
|
||||
if (HelpcodeUtils::is_quanpin_double_help_mode(raw_input_with_cases) && request.raw_input.size() >= 2)
|
||||
{
|
||||
return quanpin::is_complete_pinyin_input(request.raw_input.substr(0, request.raw_input.size() - 2));
|
||||
}
|
||||
|
||||
if (HelpcodeUtils::is_quanpin_single_help_mode(raw_input_with_cases) && !request.raw_input.empty())
|
||||
{
|
||||
return quanpin::is_complete_pinyin_input(request.raw_input.substr(0, request.raw_input.size() - 1));
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
} // namespace
|
||||
|
||||
EngineInputSession::EngineInputSession(SchemeType scheme_type) : session_(scheme_type)
|
||||
@@ -264,8 +286,16 @@ IInputSession::SelectionTransition EngineInputSession::advance_composition_after
|
||||
IInputSession::CloudQueryState EngineInputSession::get_cloud_query_state() const
|
||||
{
|
||||
CloudQueryState state;
|
||||
state.cache_key = request().raw_input;
|
||||
state.committed_pinyin = request().normalized_input;
|
||||
|
||||
if (is_shuangpin())
|
||||
{
|
||||
if (ResolveShuangpinCompositionBase(request()).helpcode_length > 0)
|
||||
{
|
||||
return state;
|
||||
}
|
||||
|
||||
const auto &pinyin_with_cases = get_pinyin_sequence_with_cases();
|
||||
if (!pinyin_with_cases.empty() && pinyin_with_cases.size() % 2 == 0)
|
||||
{
|
||||
@@ -277,16 +307,16 @@ IInputSession::CloudQueryState EngineInputSession::get_cloud_query_state() const
|
||||
{
|
||||
state.query_text = request().normalized_input;
|
||||
}
|
||||
return state;
|
||||
}
|
||||
|
||||
state.cache_key = request().raw_input;
|
||||
state.committed_pinyin = request().normalized_input;
|
||||
if (HasActiveQuanpinHelpcode(request()))
|
||||
{
|
||||
return state;
|
||||
}
|
||||
|
||||
state.should_query = !request().normalized_input.empty();
|
||||
state.query_text = request().normalized_input;
|
||||
state.cache_key = request().raw_input;
|
||||
state.committed_pinyin = request().normalized_input;
|
||||
return state;
|
||||
}
|
||||
|
||||
|
||||
Reference in new issue
Block a user