aboutsummaryrefslogtreecommitdiffstats
path: root/src/virtualkeyboard/t9writeinputmethod.cpp
diff options
context:
space:
mode:
authorJarkko Koivikko <jarkko.koivikko@code-q.fi>2017-06-04 23:38:09 +0300
committerJarkko Koivikko <jarkko.koivikko@code-q.fi>2017-07-08 19:28:39 +0000
commitf989e76c5072f4d5c80ca05e0e52452570368d95 (patch)
treeb6ff8807f30d08ea7b857ba33bf683ec675282c4 /src/virtualkeyboard/t9writeinputmethod.cpp
parenta82fd907ad378a412efdb39aff39f5b6d41996f4 (diff)
Add support for Korean handwriting (T9 Write CJK)
This change adds handwriting support for Korean. Change-Id: I77eb322020c39259d9609051100c40b271a62c04 Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/virtualkeyboard/t9writeinputmethod.cpp')
-rw-r--r--src/virtualkeyboard/t9writeinputmethod.cpp30
1 files changed, 25 insertions, 5 deletions
diff --git a/src/virtualkeyboard/t9writeinputmethod.cpp b/src/virtualkeyboard/t9writeinputmethod.cpp
index ee69d49d..c9e5829b 100644
--- a/src/virtualkeyboard/t9writeinputmethod.cpp
+++ b/src/virtualkeyboard/t9writeinputmethod.cpp
@@ -455,6 +455,8 @@ public:
return SimplifiedChinese;
break;
}
+ case QLocale::Korean:
+ return Korean;
default:
break;
}
@@ -618,6 +620,9 @@ public:
language = DECUMA_LANG_EN;
else if (locale.script() == QLocale::TraditionalChineseScript)
language = (locale.country() == QLocale::HongKong) ? DECUMA_LANG_HK : DECUMA_LANG_TW;
+ } else if (language == DECUMA_LANG_KO) {
+ if (inputMode != InputEngine::KoreanHandwriting)
+ language = DECUMA_LANG_EN;
}
return language;
@@ -637,7 +642,7 @@ public:
sessionSettings.recognitionMode = mcrMode;
// Use scrMode with hidden text or with no predictive mode
- if (inputMode != InputEngine::ChineseHandwriting) {
+ if (inputMode != InputEngine::ChineseHandwriting && inputMode != InputEngine::KoreanHandwriting) {
const Qt::InputMethodHints inputMethodHints = q->inputContext()->inputMethodHints();
if (inputMethodHints.testFlag(Qt::ImhHiddenText) || inputMethodHints.testFlag(Qt::ImhNoPredictiveText))
sessionSettings.recognitionMode = scrMode;
@@ -777,6 +782,14 @@ public:
}
break;
+ case InputEngine::KoreanHandwriting:
+ symbolCategories.append(DECUMA_CATEGORY_HANGUL_1001_A);
+ symbolCategories.append(DECUMA_CATEGORY_HANGUL_1001_B);
+ symbolCategories.append(DECUMA_CATEGORY_CJK_SYMBOL);
+ symbolCategories.append(DECUMA_CATEGORY_CJK_GENERAL_PUNCTUATIONS);
+ symbolCategories.append(DECUMA_CATEGORY_PUNCTUATIONS);
+ break;
+
default:
return false;
}
@@ -1250,7 +1263,7 @@ public:
// Delete trace history
const InputEngine::InputMode inputMode = q->inputEngine()->inputMode();
if (sessionSettings.recognitionMode == mcrMode && !symbolStrokes.isEmpty() &&
- inputMode != InputEngine::ChineseHandwriting) {
+ inputMode != InputEngine::ChineseHandwriting && inputMode != InputEngine::KoreanHandwriting) {
int activeTraces = symbolStrokes.at(symbolStrokes.count() - 1).toInt();
if (symbolStrokes.count() > 1)
activeTraces += symbolStrokes.at(symbolStrokes.count() - 2).toInt();
@@ -1349,7 +1362,7 @@ public:
// Swipe right
const InputEngine::InputMode inputMode = q->inputEngine()->inputMode();
- if (inputMode != InputEngine::ChineseHandwriting) {
+ if (inputMode != InputEngine::ChineseHandwriting && inputMode != InputEngine::KoreanHandwriting) {
if (swipeAngle <= SWIPE_ANGLE_THRESHOLD || swipeAngle >= 360 - SWIPE_ANGLE_THRESHOLD) {
if (swipeTouchCount == 1) {
// Single swipe: space
@@ -1505,6 +1518,12 @@ QList<InputEngine::InputMode> T9WriteInputMethod::inputModes(const QString &loca
if (!(inputMethodHints & (Qt::ImhDialableCharactersOnly | Qt::ImhFormattedNumbersOnly | Qt::ImhDigitsOnly | Qt::ImhLatinOnly)))
availableInputModes.append(InputEngine::ChineseHandwriting);
break;
+ case T9WriteInputMethodPrivate::Korean:
+ if (d->findHwrDb(T9WriteInputMethodPrivate::Korean, d->defaultHwrDbPath).isEmpty())
+ return availableInputModes;
+ if (!(inputMethodHints & (Qt::ImhDialableCharactersOnly | Qt::ImhFormattedNumbersOnly | Qt::ImhDigitsOnly | Qt::ImhLatinOnly)))
+ availableInputModes.append(InputEngine::KoreanHandwriting);
+ break;
#endif
default:
return availableInputModes;
@@ -1708,7 +1727,8 @@ bool T9WriteInputMethod::reselect(int cursorPosition, const InputEngine::Reselec
return false;
const InputEngine::InputMode inputMode = inputEngine()->inputMode();
- const int maxLength = inputMode == InputEngine::ChineseHandwriting ? 0 : 32;
+ const int maxLength = (inputMode == InputEngine::ChineseHandwriting ||
+ inputMode == InputEngine::KoreanHandwriting) ? 0 : 32;
const QString surroundingText = ic->surroundingText();
int replaceFrom = 0;
@@ -1787,7 +1807,7 @@ void T9WriteInputMethod::timerEvent(QTimerEvent *timerEvent)
d->stopResultTimer();
#ifndef QT_VIRTUALKEYBOARD_RECORD_TRACE_INPUT
const InputEngine::InputMode inputMode = inputEngine()->inputMode();
- if (inputMode != InputEngine::ChineseHandwriting)
+ if (inputMode != InputEngine::ChineseHandwriting && inputMode != InputEngine::KoreanHandwriting)
d->clearTraces();
#endif
} else if (d->sessionSettings.recognitionMode == scrMode) {