diff options
author | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2017-06-19 00:47:01 +0300 |
---|---|---|
committer | Jarkko Koivikko <jarkko.koivikko@code-q.fi> | 2017-08-07 07:00:38 +0000 |
commit | 9d10dd02c2d8686141ff2dbe511f29d2d514fba2 (patch) | |
tree | 1251185da09b2f708f63355368b496980c969c8f /src/virtualkeyboard/t9writeinputmethod.cpp | |
parent | c3c2a9cdef6a402f756799f835f724b999e942a4 (diff) |
Add Greek keyboard layout
[ChangeLog] Added Greek keyboard layout.
Change-Id: I56a15ebcf58c768d8f544654cb8a17a77c743e3f
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
Diffstat (limited to 'src/virtualkeyboard/t9writeinputmethod.cpp')
-rw-r--r-- | src/virtualkeyboard/t9writeinputmethod.cpp | 74 |
1 files changed, 34 insertions, 40 deletions
diff --git a/src/virtualkeyboard/t9writeinputmethod.cpp b/src/virtualkeyboard/t9writeinputmethod.cpp index ef86dc8c..41b2592a 100644 --- a/src/virtualkeyboard/t9writeinputmethod.cpp +++ b/src/virtualkeyboard/t9writeinputmethod.cpp @@ -411,14 +411,14 @@ public: } bool languageChanged = languageCategories.isEmpty() || languageCategories.first() != language; - if (languageChanged) { - languageCategories.clear(); - languageCategories.append(language); + languageCategories.clear(); + languageCategories.append(language); - // Add English as secondary language for punctuation - if (language == DECUMA_LANG_PRC) - languageCategories.append(DECUMA_LANG_EN); - } + // Add English as secondary language for non-latin languages. + // T9 Write requires it for punctuation and latin symbols if + // included in the symbol categories. + if (locale.script() != QLocale::LatinScript) + languageCategories.append(DECUMA_LANG_EN); if (!updateSymbolCategories(language, locale, inputMode)) return false; @@ -677,37 +677,13 @@ public: } else if (inputMethodHints.testFlag(Qt::ImhUrlCharactersOnly)) { symbolCategories.append(DECUMA_CATEGORY_URL); } else { - bool includeDigits = true; - bool includeBasicPunctuation = true; - switch (locale.script()) { - case QLocale::LatinScript: - if (language == DECUMA_LANG_EN || language == DECUMA_LANG_NL) - symbolCategories.append(DECUMA_CATEGORY_ANSI); - else - symbolCategories.append(DECUMA_CATEGORY_ISO8859_1); - break; - - case QLocale::CyrillicScript: - symbolCategories.append(DECUMA_CATEGORY_CYRILLIC); - break; - - case QLocale::GreekScript: - symbolCategories.append(DECUMA_CATEGORY_GREEK); - break; - - default: - qWarning() << "Handwriting is not supported in" << locale.name(); - return false; - } - - if (includeDigits) - symbolCategories.append(DECUMA_CATEGORY_DIGIT); - - if (includeBasicPunctuation) { - symbolCategories.append(DECUMA_CATEGORY_BASIC_PUNCTUATIONS); - symbolCategories.append(DECUMA_CATEGORY_CONTRACTION_MARK); - } - + if (language == DECUMA_LANG_EN || language == DECUMA_LANG_NL) + symbolCategories.append(DECUMA_CATEGORY_ANSI); + else + symbolCategories.append(DECUMA_CATEGORY_ISO8859_1); + symbolCategories.append(DECUMA_CATEGORY_DIGIT); + symbolCategories.append(DECUMA_CATEGORY_BASIC_PUNCTUATIONS); + symbolCategories.append(DECUMA_CATEGORY_CONTRACTION_MARK); if (language == DECUMA_LANG_ES) symbolCategories.append(DECUMA_CATEGORY_SPANISH_PUNCTUATIONS); } @@ -723,6 +699,15 @@ public: symbolCategories.append(DECUMA_CATEGORY_PHONE_NUMBER); break; + case InputEngine::Greek: + symbolCategories.append(DECUMA_CATEGORY_GREEK); + symbolCategories.append(DECUMA_CATEGORY_QUEST_EXCL_MARK_PUNCTUATIONS); + symbolCategories.append(DECUMA_CATEGORY_PERIOD_COMMA_PUNCTUATIONS); + symbolCategories.append(DECUMA_CATEGORY_COLON_PUNCTUATIONS); + symbolCategories.append(DECUMA_CATEGORY_CONTRACTION_MARK); + symbolCategories.append(DECUMA_CATEGORY_CONTRACTION_MARK); + break; + default: qWarning() << "Handwriting is not supported in" << locale.name(); return false; @@ -1537,7 +1522,8 @@ QList<InputEngine::InputMode> T9WriteInputMethod::inputModes(const QString &loca Q_D(T9WriteInputMethod); QList<InputEngine::InputMode> availableInputModes; const Qt::InputMethodHints inputMethodHints(inputContext()->inputMethodHints()); - T9WriteInputMethodPrivate::EngineMode mode = d->mapLocaleToEngineMode(QLocale(locale)); + const QLocale loc(locale); + T9WriteInputMethodPrivate::EngineMode mode = d->mapLocaleToEngineMode(loc); // Add primary input mode switch (mode) { @@ -1545,8 +1531,16 @@ QList<InputEngine::InputMode> T9WriteInputMethod::inputModes(const QString &loca case T9WriteInputMethodPrivate::Alphabetic: if (d->findHwrDb(T9WriteInputMethodPrivate::Alphabetic, d->defaultHwrDbPath).isEmpty()) return availableInputModes; - if (!(inputMethodHints & (Qt::ImhDialableCharactersOnly | Qt::ImhFormattedNumbersOnly | Qt::ImhDigitsOnly | Qt::ImhLatinOnly))) + if (!(inputMethodHints & (Qt::ImhDialableCharactersOnly | Qt::ImhFormattedNumbersOnly | Qt::ImhDigitsOnly | Qt::ImhLatinOnly))) { + switch (loc.script()) { + case QLocale::GreekScript: + availableInputModes.append(InputEngine::Greek); + break; + default: + break; + } availableInputModes.append(InputEngine::Latin); + } break; #endif #ifdef HAVE_T9WRITE_CJK |