9#include <QtCore/QDebug>
10#include <QtGui/QGuiApplication>
11#include <QtGui/QInputMethodEvent>
15Q_LOGGING_CATEGORY(lcQpaInputMethods,
"qt.qpa.input.methods");
18 QPlatformInputContext(),
19 m_inputPanelVisible(
false),
20 m_inputPanelLocale(QLocale::c()),
21 m_integration(integration),
22 m_virtualKeyboard(keyboard)
24 connect(&keyboard, SIGNAL(heightChanged(
int)),
this, SLOT(keyboardHeightChanged()));
25 connect(&keyboard, SIGNAL(visibilityChanged(
bool)),
this, SLOT(keyboardVisibilityChanged(
bool)));
26 connect(&keyboard, SIGNAL(localeChanged(QLocale)),
this, SLOT(keyboardLocaleChanged(QLocale)));
27 keyboardVisibilityChanged(keyboard.isVisible());
28 keyboardLocaleChanged(keyboard.locale());
52 if (hasPhysicalKeyboard())
55 if (event->type() == QEvent::CloseSoftwareInputPanel) {
56 m_virtualKeyboard.hideKeyboard();
57 qCDebug(lcQpaInputMethods) <<
"hiding virtual keyboard";
61 if (event->type() == QEvent::RequestSoftwareInputPanel) {
62 m_virtualKeyboard.showKeyboard();
63 qCDebug(lcQpaInputMethods) <<
"requesting virtual keyboard";
73 QRect screenGeometry = m_integration->primaryDisplay()->geometry();
74 return QRectF(screenGeometry.x(), screenGeometry.height() - m_virtualKeyboard.height(),
75 screenGeometry.width(), m_virtualKeyboard.height());
90 qCDebug(lcQpaInputMethods) << Q_FUNC_INFO;
91 m_virtualKeyboard.showKeyboard();
96 qCDebug(lcQpaInputMethods) << Q_FUNC_INFO;
97 m_virtualKeyboard.hideKeyboard();
102 return m_inputPanelVisible;
107 return m_inputPanelLocale;
112 emitKeyboardRectChanged();
117 qCDebug(lcQpaInputMethods) <<
"visible=" << visible;
118 if (m_inputPanelVisible != visible) {
119 m_inputPanelVisible = visible;
120 emitInputPanelVisibleChanged();
126 qCDebug(lcQpaInputMethods) <<
"locale=" << locale;
127 if (m_inputPanelLocale != locale) {
128 m_inputPanelLocale = locale;
135 qCDebug(lcQpaInputMethods) <<
"input item=" << object;;
137 if (!inputMethodAccepted()) {
138 if (m_inputPanelVisible)
141 QInputMethodQueryEvent query(Qt::ImHints | Qt::ImEnterKeyType);
142 QCoreApplication::sendEvent(object, &query);
143 int inputHints = query.value(Qt::ImHints).toInt();
144 Qt::EnterKeyType qtEnterKeyType = Qt::EnterKeyType(query.value(Qt::ImEnterKeyType).toInt());
146 m_virtualKeyboard.setInputHints(inputHints);
147 m_virtualKeyboard.setEnterKeyType(
148 QQnxAbstractVirtualKeyboard::qtEnterKeyTypeToQnx(qtEnterKeyType)
151 if (!m_inputPanelVisible)
bool isInputPanelVisible() const override
Returns input panel visibility status.
void reset() override
Method to be called when input method needs to be reset.
void hideInputPanel() override
Request to hide input panel.
void setFocusObject(QObject *object) override
This virtual method gets called to notify updated focus to object.
QLocale locale() const override
bool isValid() const override
Returns input context validity.
bool filterEvent(const QEvent *event) override
This function can be reimplemented to filter input events.
bool handleKeyboardEvent(int flags, int sym, int mod, int scan, int cap)
QRectF keyboardRect() const override
This function can be reimplemented to return virtual keyboard rectangle in currently active window co...
void showInputPanel() override
Request to show input panel.
Combined button and popup list for selecting options.