diff options
Diffstat (limited to 'src/plugins/cerence/xt9/plugin/xt9inputmethodprivate_p.h')
-rw-r--r-- | src/plugins/cerence/xt9/plugin/xt9inputmethodprivate_p.h | 119 |
1 files changed, 119 insertions, 0 deletions
diff --git a/src/plugins/cerence/xt9/plugin/xt9inputmethodprivate_p.h b/src/plugins/cerence/xt9/plugin/xt9inputmethodprivate_p.h new file mode 100644 index 00000000..9020ebd7 --- /dev/null +++ b/src/plugins/cerence/xt9/plugin/xt9inputmethodprivate_p.h @@ -0,0 +1,119 @@ +// Copyright (C) 2021 The Qt Company Ltd. +// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only + +#ifndef XT9INPUTMETHODPRIVATE_P_H +#define XT9INPUTMETHODPRIVATE_P_H + +#include <QtGlobal> +#include <et9api.h> +#include <QStringList> +#include "xt9callbacks.h" +#include "xt9ime.h" +#include <QtVirtualKeyboard/qvirtualkeyboardinputengine.h> +#include <QtVirtualKeyboard/private/qvirtualkeyboardabstractinputmethod_p.h> + +QT_BEGIN_NAMESPACE +namespace QtVirtualKeyboard { + +class Xt9InputMethod; + +class Xt9InputMethodPrivate : public QVirtualKeyboardAbstractInputMethodPrivate, public Xt9RequestCallback +{ +public: + Q_DECLARE_PUBLIC(Xt9InputMethod) + + Xt9InputMethodPrivate(Xt9InputMethod *q_ptr, Xt9Ime *xt9Ime, const QString &aDlmFileName); + + inline Xt9Ime *xt9Ime() const; + void sysInit(); + bool init(QLocale aLocale, QVirtualKeyboardInputEngine::InputMode aInputMode); + virtual void uninit(); + void bindToDictionaryManager(); + virtual void bindToSettings(); + void bindToKeyboard(); + void dlmActivate(); + void dlmDeactivate(); + virtual void updateLdb(); + void updateDlm(); + void removeAllDynamicDictionaries(); + void updateDynamicDictionaries(); + void updateShiftState(); + bool updateLayout(); + virtual void updatePreeditText(); + void buildSelectionList(); + void buildSelectionList(ET9STATUS &eStatus); + void selectionListUpdate(); + virtual void selectionListSelectItem(int index) = 0; + void updatePunctuationBreaking(); + bool processBackspace(); + bool processKeyBySymbol(const QChar &symbol); + virtual bool maybeInsertSpaceBeforeNextInputSymbol(QChar symbol) const; + void setAutoSpaceAllowed(bool value); + virtual bool isAutoSpaceAllowed() const; + virtual bool isValidInputChar(const QChar &c) const; + virtual bool isJoiner(const QChar &c) const; + void setShiftState(bool shift, bool caps); + virtual void reset(); + void onAvailableDynamicDictionariesChanged(); + void onActiveDynamicDictionariesChanged(); + void onUserDataPathChanged(); + void onUserDataReset(); + + virtual ET9U32 inputModeToET9InputMode(QVirtualKeyboardInputEngine::InputMode aInputMode) const = 0; + ET9STATUS request(ET9_Request *const pRequest) override; + +public: + Xt9InputMethod *q_ptr; + QScopedPointer<Xt9Ime> _xt9Ime; + QMetaObject::Connection availableDictionariesChangedConnection; + QMetaObject::Connection activeDictionariesChangedConnection; + QMetaObject::Connection userDataPathChangedConnection; + QMetaObject::Connection userDataResetConnection; + QMetaObject::Connection layoutChangedConnection; + QMetaObject::Connection shiftActiveChangedConnection; + QMetaObject::Connection capsLockActiveChangedConnection; + QMetaObject::Connection inputMethodHintsChangedConnection; + QLocale locale; + QVirtualKeyboardInputEngine::InputMode inputMode; + QStringList selectionList; + QAtomicInt selectionListUpdateCount; + int defaultListIndex; + bool autoSpaceAllowed; + bool initDone; + const QString dlmFileName; + QSharedPointer<Xt9DbFile> dlm; + QMap<QString, quint16> dynamicDictionaries; + QMap<QString, quint16> attachedDynamicDictionaries; + QAtomicInt dynamicDictionaryNextId; +}; + +Xt9Ime *Xt9InputMethodPrivate::xt9Ime() const +{ + return _xt9Ime.data(); +} + +class Xt9DeferredSelectionListUpdate +{ + Q_DISABLE_COPY(Xt9DeferredSelectionListUpdate) +public: + inline explicit Xt9DeferredSelectionListUpdate(Xt9InputMethodPrivate *d) : + d(d) + { + d->selectionListUpdateCount.ref(); + } + + inline ~Xt9DeferredSelectionListUpdate() + { + if (!d->selectionListUpdateCount.deref()) { + d->selectionListUpdate(); + } + } + +private: + Xt9InputMethodPrivate *d; +}; + +} // namespace QtVirtualKeyboard +QT_END_NAMESPACE + +#endif // XT9INPUTMETHODPRIVATE_P_H |