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// Qt-Security score:significant reason:default
4
8#include "qqnxscreen.h"
9
10#include <QtCore/QDebug>
11#include <QtGui/QGuiApplication>
12#include <QtGui/QInputMethodEvent>
13
15
16Q_LOGGING_CATEGORY(lcQpaInputMethods, "qt.qpa.input.methods");
17
18QQnxInputContext::QQnxInputContext(QQnxIntegration *integration, QQnxAbstractVirtualKeyboard &keyboard) :
19 QPlatformInputContext(),
20 m_inputPanelVisible(false),
21 m_inputPanelLocale(QLocale::c()),
22 m_integration(integration),
23 m_virtualKeyboard(keyboard)
24{
25 connect(&keyboard, SIGNAL(heightChanged(int)), this, SLOT(keyboardHeightChanged()));
26 connect(&keyboard, SIGNAL(visibilityChanged(bool)), this, SLOT(keyboardVisibilityChanged(bool)));
27 connect(&keyboard, SIGNAL(localeChanged(QLocale)), this, SLOT(keyboardLocaleChanged(QLocale)));
28 keyboardVisibilityChanged(keyboard.isVisible());
29 keyboardLocaleChanged(keyboard.locale());
30}
31
33{
34}
35
36bool QQnxInputContext::isValid() const
37{
38 return true;
39}
40
41bool QQnxInputContext::hasPhysicalKeyboard()
42{
43 // TODO: This should query the system to check if a USB keyboard is connected.
44 return false;
45}
46
48{
49}
50
51bool QQnxInputContext::filterEvent( const QEvent *event )
52{
53 if (hasPhysicalKeyboard())
54 return false;
55
56 if (event->type() == QEvent::CloseSoftwareInputPanel) {
57 m_virtualKeyboard.hideKeyboard();
58 qCDebug(lcQpaInputMethods) << "hiding virtual keyboard";
59 return false;
60 }
61
62 if (event->type() == QEvent::RequestSoftwareInputPanel) {
63 m_virtualKeyboard.showKeyboard();
64 qCDebug(lcQpaInputMethods) << "requesting virtual keyboard";
65 return false;
66 }
67
68 return false;
69
70}
71
73{
74 QRect screenGeometry = m_integration->primaryDisplay()->geometry();
75 return QRectF(screenGeometry.x(), screenGeometry.height() - m_virtualKeyboard.height(),
76 screenGeometry.width(), m_virtualKeyboard.height());
77}
78
79bool QQnxInputContext::handleKeyboardEvent(int flags, int sym, int mod, int scan, int cap)
80{
81 Q_UNUSED(flags);
82 Q_UNUSED(sym);
83 Q_UNUSED(mod);
84 Q_UNUSED(scan);
85 Q_UNUSED(cap);
86 return false;
87}
88
90{
91 qCDebug(lcQpaInputMethods) << Q_FUNC_INFO;
92 m_virtualKeyboard.showKeyboard();
93}
94
96{
97 qCDebug(lcQpaInputMethods) << Q_FUNC_INFO;
98 m_virtualKeyboard.hideKeyboard();
99}
100
102{
103 return m_inputPanelVisible;
104}
105
107{
108 return m_inputPanelLocale;
109}
110
111void QQnxInputContext::keyboardHeightChanged()
112{
113 emitKeyboardRectChanged();
114}
115
116void QQnxInputContext::keyboardVisibilityChanged(bool visible)
117{
118 qCDebug(lcQpaInputMethods) << "visible=" << visible;
119 if (m_inputPanelVisible != visible) {
120 m_inputPanelVisible = visible;
121 emitInputPanelVisibleChanged();
122 }
123}
124
125void QQnxInputContext::keyboardLocaleChanged(const QLocale &locale)
126{
127 qCDebug(lcQpaInputMethods) << "locale=" << locale;
128 if (m_inputPanelLocale != locale) {
129 m_inputPanelLocale = locale;
130 emitLocaleChanged();
131 }
132}
133
134void QQnxInputContext::setFocusObject(QObject *object)
135{
136 qCDebug(lcQpaInputMethods) << "input item=" << object;;
137
138 if (!inputMethodAccepted()) {
139 if (m_inputPanelVisible)
141 } else {
142 QInputMethodQueryEvent query(Qt::ImHints | Qt::ImEnterKeyType);
143 QCoreApplication::sendEvent(object, &query);
144 int inputHints = query.value(Qt::ImHints).toInt();
145 Qt::EnterKeyType qtEnterKeyType = Qt::EnterKeyType(query.value(Qt::ImEnterKeyType).toInt());
146
147 m_virtualKeyboard.setInputHints(inputHints);
148 m_virtualKeyboard.setEnterKeyType(
149 QQnxAbstractVirtualKeyboard::qtEnterKeyTypeToQnx(qtEnterKeyType)
150 );
151
152 if (!m_inputPanelVisible)
154 }
155}
156
157QT_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.
QQnxScreen * primaryDisplay() const
Combined button and popup list for selecting options.