Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qqnxinputcontext_noimf.cpp
Go to the documentation of this file.
1// Copyright (C) 2013 BlackBerry Limited. All rights reserved.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
7#include "qqnxscreen.h"
8
9#include <QtCore/QDebug>
10#include <QtGui/QGuiApplication>
11#include <QtGui/QInputMethodEvent>
12
14
15Q_LOGGING_CATEGORY(lcQpaInputMethods, "qt.qpa.input.methods");
16
17QQnxInputContext::QQnxInputContext(QQnxIntegration *integration, QQnxAbstractVirtualKeyboard &keyboard) :
18 QPlatformInputContext(),
19 m_inputPanelVisible(false),
20 m_inputPanelLocale(QLocale::c()),
21 m_integration(integration),
22 m_virtualKeyboard(keyboard)
23{
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());
29}
30
32{
33}
34
35bool QQnxInputContext::isValid() const
36{
37 return true;
38}
39
40bool QQnxInputContext::hasPhysicalKeyboard()
41{
42 // TODO: This should query the system to check if a USB keyboard is connected.
43 return false;
44}
45
47{
48}
49
50bool QQnxInputContext::filterEvent( const QEvent *event )
51{
52 if (hasPhysicalKeyboard())
53 return false;
54
55 if (event->type() == QEvent::CloseSoftwareInputPanel) {
56 m_virtualKeyboard.hideKeyboard();
57 qCDebug(lcQpaInputMethods) << "hiding virtual keyboard";
58 return false;
59 }
60
61 if (event->type() == QEvent::RequestSoftwareInputPanel) {
62 m_virtualKeyboard.showKeyboard();
63 qCDebug(lcQpaInputMethods) << "requesting virtual keyboard";
64 return false;
65 }
66
67 return false;
68
69}
70
72{
73 QRect screenGeometry = m_integration->primaryDisplay()->geometry();
74 return QRectF(screenGeometry.x(), screenGeometry.height() - m_virtualKeyboard.height(),
75 screenGeometry.width(), m_virtualKeyboard.height());
76}
77
78bool QQnxInputContext::handleKeyboardEvent(int flags, int sym, int mod, int scan, int cap)
79{
80 Q_UNUSED(flags);
81 Q_UNUSED(sym);
82 Q_UNUSED(mod);
83 Q_UNUSED(scan);
84 Q_UNUSED(cap);
85 return false;
86}
87
89{
90 qCDebug(lcQpaInputMethods) << Q_FUNC_INFO;
91 m_virtualKeyboard.showKeyboard();
92}
93
95{
96 qCDebug(lcQpaInputMethods) << Q_FUNC_INFO;
97 m_virtualKeyboard.hideKeyboard();
98}
99
101{
102 return m_inputPanelVisible;
103}
104
106{
107 return m_inputPanelLocale;
108}
109
110void QQnxInputContext::keyboardHeightChanged()
111{
112 emitKeyboardRectChanged();
113}
114
115void QQnxInputContext::keyboardVisibilityChanged(bool visible)
116{
117 qCDebug(lcQpaInputMethods) << "visible=" << visible;
118 if (m_inputPanelVisible != visible) {
119 m_inputPanelVisible = visible;
120 emitInputPanelVisibleChanged();
121 }
122}
123
124void QQnxInputContext::keyboardLocaleChanged(const QLocale &locale)
125{
126 qCDebug(lcQpaInputMethods) << "locale=" << locale;
127 if (m_inputPanelLocale != locale) {
128 m_inputPanelLocale = locale;
129 emitLocaleChanged();
130 }
131}
132
133void QQnxInputContext::setFocusObject(QObject *object)
134{
135 qCDebug(lcQpaInputMethods) << "input item=" << object;;
136
137 if (!inputMethodAccepted()) {
138 if (m_inputPanelVisible)
140 } else {
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());
145
146 m_virtualKeyboard.setInputHints(inputHints);
147 m_virtualKeyboard.setEnterKeyType(
148 QQnxAbstractVirtualKeyboard::qtEnterKeyTypeToQnx(qtEnterKeyType)
149 );
150
151 if (!m_inputPanelVisible)
153 }
154}
155
156QT_END_NAMESPACE
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.