From 87d6c20c9c8025a9a293e62ea94c47a23454bda8 Mon Sep 17 00:00:00 2001 From: Jarkko Koivikko Date: Wed, 27 Jan 2021 13:56:37 +0200 Subject: Add generic dictionary API for the virtual keyboard v2 - Dictionary manager API provides applications methods to create custom dictionaries for use in the virtual keyboard input methods. - The dictionaries can be activated from both C++ and QML. v2: Update CMake project [ChangeLog] Added a generic dictionary API. The API allows applications to create/update/remove dictionaries at runtime. The desired dictionaries can be activated from the application. The implementation of the dictionaries depends on the input method. A typical use case for this API would be a phone book. Change-Id: I8fcb931eff2adff80b4a458a676ba25d51df2ec9 Reviewed-by: Mitch Curtis --- src/import/qtquickvirtualkeyboardplugin.cpp | 4 + src/virtualkeyboard/.prev_CMakeLists.txt | 4 + src/virtualkeyboard/CMakeLists.txt | 4 + src/virtualkeyboard/qvirtualkeyboarddictionary.cpp | 59 ++++++++ src/virtualkeyboard/qvirtualkeyboarddictionary.h | 64 +++++++++ .../qvirtualkeyboarddictionarymanager.cpp | 155 +++++++++++++++++++++ .../qvirtualkeyboarddictionarymanager.h | 80 +++++++++++ .../qvirtualkeyboardinputcontext_p.cpp | 13 +- src/virtualkeyboard/virtualkeyboard.cpp | 77 ++++++++++ src/virtualkeyboard/virtualkeyboard.pro | 8 ++ src/virtualkeyboard/virtualkeyboard_p.h | 65 +++++++++ .../virtualkeyboardattachedtype.cpp | 59 ++++++++ .../virtualkeyboardattachedtype_p.h | 72 ++++++++++ tests/auto/.prev_CMakeLists.txt | 1 + tests/auto/CMakeLists.txt | 1 + tests/auto/auto.pro | 1 + tests/auto/dictionarymanager/.prev_CMakeLists.txt | 26 ++++ tests/auto/dictionarymanager/CMakeLists.txt | 26 ++++ tests/auto/dictionarymanager/dictionarymanager.pro | 13 ++ .../dictionarymanager/tst_dictionarymanager.cpp | 95 +++++++++++++ tests/auto/layoutfilesystem/.prev_CMakeLists.txt | 33 +++++ tests/auto/layoutresources/.prev_CMakeLists.txt | 45 ++++++ tests/auto/styles/.prev_CMakeLists.txt | 38 +++++ tests/manual/quickcontrols2/.prev_CMakeLists.txt | 31 +++++ tests/manual/x11vkbtest/.prev_CMakeLists.txt | 31 +++++ tests/manual/x11vkbtest/CMakeLists.txt | 2 +- tests/manual/x11vkbwrapper/.prev_CMakeLists.txt | 74 ++++++++++ .../vkbnativehost/.prev_CMakeLists.txt | 19 +++ 28 files changed, 1098 insertions(+), 2 deletions(-) create mode 100644 src/virtualkeyboard/qvirtualkeyboarddictionary.cpp create mode 100644 src/virtualkeyboard/qvirtualkeyboarddictionary.h create mode 100644 src/virtualkeyboard/qvirtualkeyboarddictionarymanager.cpp create mode 100644 src/virtualkeyboard/qvirtualkeyboarddictionarymanager.h create mode 100644 src/virtualkeyboard/virtualkeyboard.cpp create mode 100644 src/virtualkeyboard/virtualkeyboard_p.h create mode 100644 src/virtualkeyboard/virtualkeyboardattachedtype.cpp create mode 100644 src/virtualkeyboard/virtualkeyboardattachedtype_p.h create mode 100644 tests/auto/dictionarymanager/.prev_CMakeLists.txt create mode 100644 tests/auto/dictionarymanager/CMakeLists.txt create mode 100644 tests/auto/dictionarymanager/dictionarymanager.pro create mode 100644 tests/auto/dictionarymanager/tst_dictionarymanager.cpp create mode 100644 tests/auto/layoutfilesystem/.prev_CMakeLists.txt create mode 100644 tests/auto/layoutresources/.prev_CMakeLists.txt create mode 100644 tests/auto/styles/.prev_CMakeLists.txt create mode 100644 tests/manual/quickcontrols2/.prev_CMakeLists.txt create mode 100644 tests/manual/x11vkbtest/.prev_CMakeLists.txt create mode 100644 tests/manual/x11vkbwrapper/.prev_CMakeLists.txt create mode 100644 tests/manual/x11vkbwrapper/vkbnativehost/.prev_CMakeLists.txt diff --git a/src/import/qtquickvirtualkeyboardplugin.cpp b/src/import/qtquickvirtualkeyboardplugin.cpp index ce4dd7bd..216efbab 100644 --- a/src/import/qtquickvirtualkeyboardplugin.cpp +++ b/src/import/qtquickvirtualkeyboardplugin.cpp @@ -42,6 +42,8 @@ #include #include #include +#include +#include QT_BEGIN_NAMESPACE @@ -89,6 +91,8 @@ void QtQuickVirtualKeyboardPlugin::registerTypes(const char *uri) qmlRegisterUncreatableType(uri, 2, 2, "ShadowInputContext", QLatin1String("Cannot create shadow input context")); qmlRegisterType(uri, 6, 1, "KeyboardObserver"); qmlRegisterUncreatableMetaObject(QtVirtualKeyboard::staticMetaObject, uri, 6, 1, "QtVirtualKeyboard", "Cannot create namespace"); + qmlRegisterAnonymousType(uri, 6); + qmlRegisterType(uri, 6, 1, "VirtualKeyboard"); const QString path(QStringLiteral("qrc:///QtQuick/VirtualKeyboard/content/")); qmlRegisterType(QUrl(path + QLatin1String("InputPanel.qml")), uri, 1, 0, "InputPanel"); diff --git a/src/virtualkeyboard/.prev_CMakeLists.txt b/src/virtualkeyboard/.prev_CMakeLists.txt index b536120f..04447107 100644 --- a/src/virtualkeyboard/.prev_CMakeLists.txt +++ b/src/virtualkeyboard/.prev_CMakeLists.txt @@ -18,12 +18,16 @@ qt_internal_add_module(VirtualKeyboard handwritinggesturerecognizer.cpp handwritinggesturerecognizer_p.h inputmethod.cpp inputmethod_p.h inputselectionhandle.cpp inputselectionhandle_p.h + virtualkeyboard.cpp virtualkeyboard_p.h + virtualkeyboardattachedtype.cpp virtualkeyboardattachedtype_p.h plaininputmethod.cpp plaininputmethod_p.h platforminputcontext.cpp platforminputcontext_p.h qvirtualkeyboard_global.h qvirtualkeyboard_global_p.h qvirtualkeyboard_namespace.h qvirtualkeyboard_staticplugin_p.h qvirtualkeyboardabstractinputmethod.cpp qvirtualkeyboardabstractinputmethod.h + qvirtualkeyboarddictionary.cpp qvirtualkeyboarddictionary.h + qvirtualkeyboarddictionarymanager.cpp qvirtualkeyboarddictionarymanager.h qvirtualkeyboardextensionplugin.cpp qvirtualkeyboardextensionplugin.h qvirtualkeyboardinputcontext.cpp qvirtualkeyboardinputcontext.h qvirtualkeyboardinputcontext_p.cpp qvirtualkeyboardinputcontext_p.h qvirtualkeyboardinputengine.cpp qvirtualkeyboardinputengine.h diff --git a/src/virtualkeyboard/CMakeLists.txt b/src/virtualkeyboard/CMakeLists.txt index 279341c4..7025c725 100644 --- a/src/virtualkeyboard/CMakeLists.txt +++ b/src/virtualkeyboard/CMakeLists.txt @@ -30,12 +30,16 @@ qt_internal_add_module(VirtualKeyboard handwritinggesturerecognizer.cpp handwritinggesturerecognizer_p.h inputmethod.cpp inputmethod_p.h inputselectionhandle.cpp inputselectionhandle_p.h + virtualkeyboard.cpp virtualkeyboard_p.h + virtualkeyboardattachedtype.cpp virtualkeyboardattachedtype_p.h plaininputmethod.cpp plaininputmethod_p.h platforminputcontext.cpp platforminputcontext_p.h qvirtualkeyboard_global.h qvirtualkeyboard_global_p.h qvirtualkeyboard_namespace.h qvirtualkeyboard_staticplugin_p.h qvirtualkeyboardabstractinputmethod.cpp qvirtualkeyboardabstractinputmethod.h + qvirtualkeyboarddictionary.cpp qvirtualkeyboarddictionary.h + qvirtualkeyboarddictionarymanager.cpp qvirtualkeyboarddictionarymanager.h qvirtualkeyboardextensionplugin.cpp qvirtualkeyboardextensionplugin.h qvirtualkeyboardinputcontext.cpp qvirtualkeyboardinputcontext.h qvirtualkeyboardinputcontext_p.cpp qvirtualkeyboardinputcontext_p.h qvirtualkeyboardinputengine.cpp qvirtualkeyboardinputengine.h diff --git a/src/virtualkeyboard/qvirtualkeyboarddictionary.cpp b/src/virtualkeyboard/qvirtualkeyboarddictionary.cpp new file mode 100644 index 00000000..d8983b05 --- /dev/null +++ b/src/virtualkeyboard/qvirtualkeyboarddictionary.cpp @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Virtual Keyboard module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +QVirtualKeyboardDictionary::QVirtualKeyboardDictionary(const QString &name, QObject *parent) : + QObject(parent), + _name(name) +{ + +} + +QString QVirtualKeyboardDictionary::name() const +{ + return _name; +} + +QStringList QVirtualKeyboardDictionary::contents() const +{ + return _wordList; +} + +void QVirtualKeyboardDictionary::setContents(const QStringList &wordList) +{ + if (_wordList != wordList) { + _wordList = wordList; + emit contentsChanged(); + } +} + +QT_BEGIN_NAMESPACE + +QT_END_NAMESPACE diff --git a/src/virtualkeyboard/qvirtualkeyboarddictionary.h b/src/virtualkeyboard/qvirtualkeyboarddictionary.h new file mode 100644 index 00000000..18d0b433 --- /dev/null +++ b/src/virtualkeyboard/qvirtualkeyboarddictionary.h @@ -0,0 +1,64 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Virtual Keyboard module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QVIRTUALKEYBOARDDICTIONARY_H +#define QVIRTUALKEYBOARDDICTIONARY_H + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QVIRTUALKEYBOARD_EXPORT QVirtualKeyboardDictionary : public QObject +{ + Q_OBJECT + Q_PROPERTY(QString name READ name CONSTANT) + Q_PROPERTY(QStringList contents READ contents WRITE setContents NOTIFY contentsChanged) + + explicit QVirtualKeyboardDictionary(const QString &name, QObject *parent = nullptr); + friend class QVirtualKeyboardDictionaryManager; + +public: + QString name() const; + + QStringList contents() const; + void setContents(const QStringList &contents); + +Q_SIGNALS: + void contentsChanged(); + +private: + const QString _name; + QStringList _wordList; +}; + +QT_END_NAMESPACE + +#endif // QVIRTUALKEYBOARDDICTIONARY_H diff --git a/src/virtualkeyboard/qvirtualkeyboarddictionarymanager.cpp b/src/virtualkeyboard/qvirtualkeyboarddictionarymanager.cpp new file mode 100644 index 00000000..730b4772 --- /dev/null +++ b/src/virtualkeyboard/qvirtualkeyboarddictionarymanager.cpp @@ -0,0 +1,155 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Virtual Keyboard module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include + +#include + +QT_BEGIN_NAMESPACE + +class QVirtualKeyboardDictionaryManagerPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QVirtualKeyboardDictionaryManager) +public: + QVirtualKeyboardDictionaryManagerPrivate(QVirtualKeyboardDictionaryManager *q) + { + q_ptr = q; + } + + void updateActiveDictionaries() + { + Q_Q(QVirtualKeyboardDictionaryManager); + QSet newActiveDictionaries(baseDictionaries); + newActiveDictionaries.unite(extraDictionaries); + if (activeDictionaries != newActiveDictionaries) { + activeDictionaries = newActiveDictionaries; + emit q->activeDictionariesChanged(); + } + } + + QSet baseDictionaries; + QSet extraDictionaries; + QSet activeDictionaries; + QMap dictionaries; +}; + +struct QVirtualKeyboardDictionaryManagerSingleton { + QVirtualKeyboardDictionaryManager instance; +}; + +Q_GLOBAL_STATIC(QVirtualKeyboardDictionaryManagerSingleton, singleton) + +QVirtualKeyboardDictionaryManager::QVirtualKeyboardDictionaryManager(QObject *parent) : + QObject(*new QVirtualKeyboardDictionaryManagerPrivate(this), parent) +{ + Q_D(QVirtualKeyboardDictionaryManager); + connect(this, &QVirtualKeyboardDictionaryManager::baseDictionariesChanged, + [=](){ d->updateActiveDictionaries(); }); + connect(this, &QVirtualKeyboardDictionaryManager::extraDictionariesChanged, + [=](){ d->updateActiveDictionaries(); }); +} + +QVirtualKeyboardDictionaryManager *QVirtualKeyboardDictionaryManager::instance() +{ + return &singleton->instance; +} + +QStringList QVirtualKeyboardDictionaryManager::availableDictionaries() const +{ + Q_D(const QVirtualKeyboardDictionaryManager); + return d->dictionaries.keys(); +} + +QStringList QVirtualKeyboardDictionaryManager::baseDictionaries() const +{ + Q_D(const QVirtualKeyboardDictionaryManager); + return d->baseDictionaries.values(); +} + +void QVirtualKeyboardDictionaryManager::setBaseDictionaries(const QStringList &baseDictionaries) +{ + Q_D(QVirtualKeyboardDictionaryManager); + QSet newBaseDictionaries(baseDictionaries.begin(), baseDictionaries.end()); + const QStringList availableDict = availableDictionaries(); + newBaseDictionaries.intersect(QSet(availableDict.begin(), availableDict.end())); + if (d->baseDictionaries != newBaseDictionaries) { + d->baseDictionaries = newBaseDictionaries; + emit baseDictionariesChanged(); + } +} + +QStringList QVirtualKeyboardDictionaryManager::extraDictionaries() const +{ + Q_D(const QVirtualKeyboardDictionaryManager); + return d->extraDictionaries.values(); +} + +void QVirtualKeyboardDictionaryManager::setExtraDictionaries(const QStringList &extraDictionaries) +{ + Q_D(QVirtualKeyboardDictionaryManager); + QSet newExtraDictionaries(extraDictionaries.begin(), extraDictionaries.end()); + const QStringList availableDict = availableDictionaries(); + newExtraDictionaries.intersect(QSet(availableDict.begin(), availableDict.end())); + if (d->extraDictionaries != newExtraDictionaries) { + d->extraDictionaries = newExtraDictionaries; + emit extraDictionariesChanged(); + } +} + +QStringList QVirtualKeyboardDictionaryManager::activeDictionaries() const +{ + Q_D(const QVirtualKeyboardDictionaryManager); + return d->activeDictionaries.values(); +} + +QVirtualKeyboardDictionary *QVirtualKeyboardDictionaryManager::createDictionary(const QString &name) +{ + Q_D(QVirtualKeyboardDictionaryManager); + + QVirtualKeyboardDictionary *dictionary = d->dictionaries.value(name); + if (!dictionary) { + dictionary = new QVirtualKeyboardDictionary(name, this); + d->dictionaries[name] = dictionary; + emit availableDictionariesChanged(); + } + + return dictionary; +} + +QVirtualKeyboardDictionary *QVirtualKeyboardDictionaryManager::dictionary(const QString &name) const +{ + Q_D(const QVirtualKeyboardDictionaryManager); + + return d->dictionaries.value(name); +} + +QT_END_NAMESPACE diff --git a/src/virtualkeyboard/qvirtualkeyboarddictionarymanager.h b/src/virtualkeyboard/qvirtualkeyboarddictionarymanager.h new file mode 100644 index 00000000..09122583 --- /dev/null +++ b/src/virtualkeyboard/qvirtualkeyboarddictionarymanager.h @@ -0,0 +1,80 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Virtual Keyboard module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef QVIRTUALKEYBOARDDICTIONARYMANAGER_H +#define QVIRTUALKEYBOARDDICTIONARYMANAGER_H + +#include +#include +#include + +QT_BEGIN_NAMESPACE + +class QVirtualKeyboardDictionary; +class QVirtualKeyboardDictionaryManagerPrivate; + +class QVIRTUALKEYBOARD_EXPORT QVirtualKeyboardDictionaryManager : public QObject +{ + Q_OBJECT + Q_DISABLE_COPY(QVirtualKeyboardDictionaryManager) + Q_DECLARE_PRIVATE(QVirtualKeyboardDictionaryManager) + Q_PROPERTY(QStringList availableDictionaries READ availableDictionaries NOTIFY availableDictionariesChanged) + Q_PROPERTY(QStringList baseDictionaries READ baseDictionaries WRITE setBaseDictionaries NOTIFY baseDictionariesChanged) + Q_PROPERTY(QStringList extraDictionaries READ extraDictionaries WRITE setExtraDictionaries NOTIFY extraDictionariesChanged) + Q_PROPERTY(QStringList activeDictionaries READ activeDictionaries NOTIFY activeDictionariesChanged) + + explicit QVirtualKeyboardDictionaryManager(QObject *parent = nullptr); + friend struct QVirtualKeyboardDictionaryManagerSingleton; + +public: + static QVirtualKeyboardDictionaryManager *instance(); + + QStringList availableDictionaries() const; + + QStringList baseDictionaries() const; + void setBaseDictionaries(const QStringList &baseDictionaries); + + QStringList extraDictionaries() const; + void setExtraDictionaries(const QStringList &extraDictionaries); + + QStringList activeDictionaries() const; + + QVirtualKeyboardDictionary *createDictionary(const QString &name); + QVirtualKeyboardDictionary *dictionary(const QString &name) const; + +Q_SIGNALS: + void availableDictionariesChanged(); + void baseDictionariesChanged(); + void extraDictionariesChanged(); + void activeDictionariesChanged(); +}; + +QT_END_NAMESPACE + +#endif // QVIRTUALKEYBOARDDICTIONARYMANAGER_H diff --git a/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp b/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp index f19392f0..8aaf9dec 100644 --- a/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp +++ b/src/virtualkeyboard/qvirtualkeyboardinputcontext_p.cpp @@ -35,6 +35,8 @@ #include #include #include +#include +#include #include #include @@ -272,7 +274,8 @@ void QVirtualKeyboardInputContextPrivate::forceCursorPosition(int anchorPosition void QVirtualKeyboardInputContextPrivate::onInputItemChanged() { - if (QObject *item = inputItem()) { + QObject *item = inputItem(); + if (item) { if (QQuickItem *vkbPanel = qobject_cast(inputPanel)) { if (QQuickItem *quickItem = qobject_cast(item)) { const QVariant isDesktopPanel = vkbPanel->property("desktopPanel"); @@ -292,6 +295,14 @@ void QVirtualKeyboardInputContextPrivate::onInputItemChanged() } } clearState(State::InputMethodClick); + + QStringList extraDictionaries; + if (item) { + VirtualKeyboardAttachedType *virtualKeyboardAttachedType = static_cast(qmlAttachedPropertiesObject(item, false)); + if (virtualKeyboardAttachedType) + extraDictionaries = virtualKeyboardAttachedType->extraDictionaries(); + } + QVirtualKeyboardDictionaryManager::instance()->setExtraDictionaries(extraDictionaries); } void QVirtualKeyboardInputContextPrivate::sendPreedit(const QString &text, const QList &attributes, int replaceFrom, int replaceLength) diff --git a/src/virtualkeyboard/virtualkeyboard.cpp b/src/virtualkeyboard/virtualkeyboard.cpp new file mode 100644 index 00000000..5da978fe --- /dev/null +++ b/src/virtualkeyboard/virtualkeyboard.cpp @@ -0,0 +1,77 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Virtual Keyboard module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include + +QT_BEGIN_NAMESPACE +namespace QtVirtualKeyboard { + +/*! + \qmltype VirtualKeyboard + \inqmlmodule QtQuick.VirtualKeyboard + \ingroup qtvirtualkeyboard-qml + \brief Provides attached properties for customizing the virtual keyboard. + \since QtQuick.VirtualKeyboard 6.1 + + The VirtualKeyboard type provides attached properties which allow + customizing the virtual keyboard, such as attaching custom dictionaries. + + The VirtualKeyboard must be used directly inside the item + receiving input focus, e.g. TextInput. + + For example: + \code + TextInput { + VirtualKeyboard.dictionaries: ["myDictionary"] + } + \endcode +*/ + +/*! + \class QtVirtualKeyboard::VirtualKeyboard + \internal +*/ + +/*! + \internal +*/ +VirtualKeyboardAttachedType *VirtualKeyboard::qmlAttachedProperties(QObject *object) +{ + return new VirtualKeyboardAttachedType(object); +} + +/*! + \qmlattachedproperty list VirtualKeyboard::dictionaries + + Sets active user dictionaries in this context. +*/ + +} // namespace QtVirtualKeyboard +QT_END_NAMESPACE diff --git a/src/virtualkeyboard/virtualkeyboard.pro b/src/virtualkeyboard/virtualkeyboard.pro index 22b049ac..a823b3ba 100644 --- a/src/virtualkeyboard/virtualkeyboard.pro +++ b/src/virtualkeyboard/virtualkeyboard.pro @@ -18,7 +18,11 @@ qtConfig(vkb-sensitive-debug) { DEFINES += QVIRTUALKEYBOARD_LIBRARY SOURCES += \ + virtualkeyboard.cpp \ + virtualkeyboardattachedtype.cpp \ platforminputcontext.cpp \ + qvirtualkeyboarddictionary.cpp \ + qvirtualkeyboarddictionarymanager.cpp \ qvirtualkeyboardinputcontext.cpp \ qvirtualkeyboardinputcontext_p.cpp \ qvirtualkeyboardabstractinputmethod.cpp \ @@ -44,8 +48,12 @@ SOURCES += \ qvirtualkeyboardextensionplugin.cpp HEADERS += \ + virtualkeyboard_p.h \ + virtualkeyboardattachedtype_p.h \ platforminputcontext_p.h \ qvirtualkeyboard_namespace.h \ + qvirtualkeyboarddictionary.h \ + qvirtualkeyboarddictionarymanager.h \ qvirtualkeyboardinputcontext.h \ qvirtualkeyboardinputcontext_p.h \ qvirtualkeyboardabstractinputmethod.h \ diff --git a/src/virtualkeyboard/virtualkeyboard_p.h b/src/virtualkeyboard/virtualkeyboard_p.h new file mode 100644 index 00000000..bf2e0082 --- /dev/null +++ b/src/virtualkeyboard/virtualkeyboard_p.h @@ -0,0 +1,65 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Virtual Keyboard module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef VIRTUALKEYBOARD_P_H +#define VIRTUALKEYBOARD_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include + +QT_BEGIN_NAMESPACE +namespace QtVirtualKeyboard { + +class VirtualKeyboardAttachedType; + +class QVIRTUALKEYBOARD_EXPORT VirtualKeyboard : public QObject +{ + Q_OBJECT + +public: + static VirtualKeyboardAttachedType *qmlAttachedProperties(QObject *object); +}; + +} // namespace QtVirtualKeyboard +QT_END_NAMESPACE + +QML_DECLARE_TYPEINFO(QT_PREPEND_NAMESPACE(QtVirtualKeyboard)::VirtualKeyboard, QML_HAS_ATTACHED_PROPERTIES) + +#endif diff --git a/src/virtualkeyboard/virtualkeyboardattachedtype.cpp b/src/virtualkeyboard/virtualkeyboardattachedtype.cpp new file mode 100644 index 00000000..4ba40ce8 --- /dev/null +++ b/src/virtualkeyboard/virtualkeyboardattachedtype.cpp @@ -0,0 +1,59 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Virtual Keyboard module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include + +QT_BEGIN_NAMESPACE +namespace QtVirtualKeyboard { + +/*! + \class QtVirtualKeyboard::VirtualKeyboardAttachedType + \internal +*/ + +VirtualKeyboardAttachedType::VirtualKeyboardAttachedType(QObject *parent) : + QObject(parent) +{ +} + +QStringList QtVirtualKeyboard::VirtualKeyboardAttachedType::extraDictionaries() const +{ + return _extraDictionaries; +} + +void QtVirtualKeyboard::VirtualKeyboardAttachedType::setExtraDictionaries(const QStringList &extraDictionaries) +{ + if (_extraDictionaries != extraDictionaries) { + _extraDictionaries = extraDictionaries; + emit extraDictionariesChanged(); + } +} + +} // namespace QtVirtualKeyboard +QT_END_NAMESPACE diff --git a/src/virtualkeyboard/virtualkeyboardattachedtype_p.h b/src/virtualkeyboard/virtualkeyboardattachedtype_p.h new file mode 100644 index 00000000..fa922d2c --- /dev/null +++ b/src/virtualkeyboard/virtualkeyboardattachedtype_p.h @@ -0,0 +1,72 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Virtual Keyboard module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#ifndef VIRTUALKEYBOARDATTACHEDTYPE_P_H +#define VIRTUALKEYBOARDATTACHEDTYPE_P_H + +// +// W A R N I N G +// ------------- +// +// This file is not part of the Qt API. It exists purely as an +// implementation detail. This header file may change from version to +// version without notice, or even be removed. +// +// We mean it. +// + +#include +#include +#include + +QT_BEGIN_NAMESPACE +namespace QtVirtualKeyboard { + +class QVIRTUALKEYBOARD_EXPORT VirtualKeyboardAttachedType : public QObject +{ + Q_OBJECT + Q_PROPERTY(QStringList extraDictionaries READ extraDictionaries WRITE setExtraDictionaries NOTIFY extraDictionariesChanged) + +public: + explicit VirtualKeyboardAttachedType(QObject *parent); + + QStringList extraDictionaries() const; + void setExtraDictionaries(const QStringList& dictionaries); + +signals: + void extraDictionariesChanged(); + +private: + QStringList _extraDictionaries; +}; + +} // namespace QtVirtualKeyboard +QT_END_NAMESPACE + +#endif diff --git a/tests/auto/.prev_CMakeLists.txt b/tests/auto/.prev_CMakeLists.txt index 57ca438e..ee546e20 100644 --- a/tests/auto/.prev_CMakeLists.txt +++ b/tests/auto/.prev_CMakeLists.txt @@ -5,3 +5,4 @@ add_subdirectory(styles) add_subdirectory(layoutfilesystem) add_subdirectory(layoutresources) add_subdirectory(cmake) +add_subdirectory(dictionarymanager) diff --git a/tests/auto/CMakeLists.txt b/tests/auto/CMakeLists.txt index 3777778c..9aab75f9 100644 --- a/tests/auto/CMakeLists.txt +++ b/tests/auto/CMakeLists.txt @@ -5,3 +5,4 @@ add_subdirectory(styles) add_subdirectory(layoutfilesystem) add_subdirectory(layoutresources) # add_subdirectory(cmake) # special case +add_subdirectory(dictionarymanager) diff --git a/tests/auto/auto.pro b/tests/auto/auto.pro index 15685d5f..3004804c 100644 --- a/tests/auto/auto.pro +++ b/tests/auto/auto.pro @@ -6,3 +6,4 @@ SUBDIRS += \ layoutfilesystem \ layoutresources \ cmake \ + dictionarymanager \ diff --git a/tests/auto/dictionarymanager/.prev_CMakeLists.txt b/tests/auto/dictionarymanager/.prev_CMakeLists.txt new file mode 100644 index 00000000..e5666c10 --- /dev/null +++ b/tests/auto/dictionarymanager/.prev_CMakeLists.txt @@ -0,0 +1,26 @@ +# Generated from dictionarymanager.pro. + +##################################################################### +## tst_dictionarymanager Test: +##################################################################### + +qt_internal_add_test(tst_dictionarymanager + SOURCES + tst_dictionarymanager.cpp + PUBLIC_LIBRARIES + Qt::Gui + Qt::Qml + Qt::Quick + Qt::VirtualKeyboard +) + +## Scopes: +##################################################################### + +qt_internal_extend_target(tst_dictionarymanager CONDITION static + PUBLIC_LIBRARIES + Qt::Svg +) + +#### Keys ignored in scope 3:.:.:dictionarymanager.pro:static: +# QTPLUGIN = "qtvirtualkeyboardplugin" diff --git a/tests/auto/dictionarymanager/CMakeLists.txt b/tests/auto/dictionarymanager/CMakeLists.txt new file mode 100644 index 00000000..9b97f861 --- /dev/null +++ b/tests/auto/dictionarymanager/CMakeLists.txt @@ -0,0 +1,26 @@ +# Generated from dictionarymanager.pro. + +##################################################################### +## tst_dictionarymanager Test: +##################################################################### + +qt_internal_add_test(tst_dictionarymanager + SOURCES + tst_dictionarymanager.cpp + PUBLIC_LIBRARIES + Qt::Gui + Qt::Qml + Qt::Quick + Qt::VirtualKeyboard +) + +## Scopes: +##################################################################### + +qt_internal_extend_target(tst_dictionarymanager CONDITION NOT QT_BUILD_SHARED_LIBS + PUBLIC_LIBRARIES + Qt::Svg +) + +#### Keys ignored in scope 3:.:.:dictionarymanager.pro:static: +# QTPLUGIN = "qtvirtualkeyboardplugin" diff --git a/tests/auto/dictionarymanager/dictionarymanager.pro b/tests/auto/dictionarymanager/dictionarymanager.pro new file mode 100644 index 00000000..8d346f0a --- /dev/null +++ b/tests/auto/dictionarymanager/dictionarymanager.pro @@ -0,0 +1,13 @@ +CONFIG += testcase +TARGET = tst_dictionarymanager + +macos:CONFIG -= app_bundle + +QT += testlib qml quick virtualkeyboard + +static { + QT += svg + QTPLUGIN += qtvirtualkeyboardplugin +} + +SOURCES += tst_dictionarymanager.cpp diff --git a/tests/auto/dictionarymanager/tst_dictionarymanager.cpp b/tests/auto/dictionarymanager/tst_dictionarymanager.cpp new file mode 100644 index 00000000..df2d291e --- /dev/null +++ b/tests/auto/dictionarymanager/tst_dictionarymanager.cpp @@ -0,0 +1,95 @@ +/**************************************************************************** +** +** Copyright (C) 2021 The Qt Company Ltd. +** Contact: https://www.qt.io/licensing/ +** +** This file is part of the Qt Virtual Keyboard module of the Qt Toolkit. +** +** $QT_BEGIN_LICENSE:GPL$ +** Commercial License Usage +** Licensees holding valid commercial Qt licenses may use this file in +** accordance with the commercial license agreement provided with the +** Software or, alternatively, in accordance with the terms contained in +** a written agreement between you and The Qt Company. For licensing terms +** and conditions see https://www.qt.io/terms-conditions. For further +** information use the contact form at https://www.qt.io/contact-us. +** +** GNU General Public License Usage +** Alternatively, this file may be used under the terms of the GNU +** General Public License version 3 or (at your option) any later version +** approved by the KDE Free Qt Foundation. The licenses are as published by +** the Free Software Foundation and appearing in the file LICENSE.GPL3 +** included in the packaging of this file. Please review the following +** information to ensure the GNU General Public License requirements will +** be met: https://www.gnu.org/licenses/gpl-3.0.html. +** +** $QT_END_LICENSE$ +** +****************************************************************************/ + +#include +#include +#include +#include + +static bool moduleEnv = qputenv("QT_IM_MODULE", QByteArray("qtvirtualkeyboard")); + +class tst_dictionarymanager : public QObject +{ + Q_OBJECT + +public: + +private slots: + void testCreateDictionary(); + void testDictionarySets(); +}; + +void tst_dictionarymanager::testCreateDictionary() +{ + QVirtualKeyboardDictionaryManager *dictionaryManager = QVirtualKeyboardDictionaryManager::instance(); + QVERIFY(dictionaryManager != nullptr); + + QVirtualKeyboardDictionary *dictionary = dictionaryManager->createDictionary("custom"); + QSignalSpy dictionarySpy(dictionary, SIGNAL(contentsChanged())); + QVERIFY(dictionarySpy.isValid()); + QStringList wordList = QStringList() << "myword"; + dictionary->setContents(wordList); + QCOMPARE(dictionarySpy.count(), 1); + + QVERIFY(dictionaryManager->availableDictionaries().contains("custom")); +} + +void tst_dictionarymanager::testDictionarySets() +{ + QVirtualKeyboardDictionaryManager *dictionaryManager = QVirtualKeyboardDictionaryManager::instance(); + QVERIFY(dictionaryManager != nullptr); + + dictionaryManager->setBaseDictionaries(QStringList() << "non-existent"); + QVERIFY(dictionaryManager->baseDictionaries().isEmpty()); + + dictionaryManager->setExtraDictionaries(QStringList() << "non-existent"); + QVERIFY(dictionaryManager->extraDictionaries().isEmpty()); + + dictionaryManager->createDictionary("custom1"); + dictionaryManager->createDictionary("custom2"); + dictionaryManager->setBaseDictionaries(QStringList() << "custom1"); + dictionaryManager->setExtraDictionaries(QStringList() << "custom2"); + QCOMPARE(dictionaryManager->baseDictionaries(), QStringList() << "custom1"); + QCOMPARE(dictionaryManager->extraDictionaries(), QStringList() << "custom2"); + QVERIFY(dictionaryManager->activeDictionaries().contains("custom1")); + QVERIFY(dictionaryManager->activeDictionaries().contains("custom2")); + + dictionaryManager->setBaseDictionaries(QStringList() << "custom1" << "custom2"); + dictionaryManager->setExtraDictionaries(QStringList() << "custom2" << "custom1"); + QVERIFY(dictionaryManager->baseDictionaries().contains("custom1")); + QVERIFY(dictionaryManager->baseDictionaries().contains("custom2")); + QVERIFY(dictionaryManager->extraDictionaries().contains("custom1")); + QVERIFY(dictionaryManager->extraDictionaries().contains("custom2")); + QVERIFY(dictionaryManager->activeDictionaries().contains("custom1")); + QVERIFY(dictionaryManager->activeDictionaries().contains("custom2")); +} + +QTEST_MAIN(tst_dictionarymanager) + +#include "tst_dictionarymanager.moc" diff --git a/tests/auto/layoutfilesystem/.prev_CMakeLists.txt b/tests/auto/layoutfilesystem/.prev_CMakeLists.txt new file mode 100644 index 00000000..90311e55 --- /dev/null +++ b/tests/auto/layoutfilesystem/.prev_CMakeLists.txt @@ -0,0 +1,33 @@ +# Generated from layoutfilesystem.pro. + +##################################################################### +## tst_layoutfilesystem Test: +##################################################################### + +qt_internal_add_test(tst_layoutfilesystem + SOURCES + ../shared/layouttesthelper.cpp ../shared/layouttesthelper.h + tst_layoutfilesystem.cpp + DEFINES + SRC_DIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}\\\" + INCLUDE_DIRECTORIES + ../shared + PUBLIC_LIBRARIES + Qt::Gui + Qt::Qml + Qt::Quick +) + +#### Keys ignored in scope 1:.:.:layoutfilesystem.pro:: +# OTHER_FILES = "data/layouts/en_GB/main.qml" + +## Scopes: +##################################################################### + +qt_internal_extend_target(tst_layoutfilesystem CONDITION static + PUBLIC_LIBRARIES + Qt::Svg +) + +#### Keys ignored in scope 3:.:.:layoutfilesystem.pro:static: +# QTPLUGIN = "qtvirtualkeyboardplugin" diff --git a/tests/auto/layoutresources/.prev_CMakeLists.txt b/tests/auto/layoutresources/.prev_CMakeLists.txt new file mode 100644 index 00000000..b49360f0 --- /dev/null +++ b/tests/auto/layoutresources/.prev_CMakeLists.txt @@ -0,0 +1,45 @@ +# Generated from layoutresources.pro. + +##################################################################### +## tst_layoutresources Test: +##################################################################### + +qt_internal_add_test(tst_layoutresources + SOURCES + ../shared/layouttesthelper.cpp ../shared/layouttesthelper.h + tst_layoutresources.cpp + DEFINES + SRC_DIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}\\\" + INCLUDE_DIRECTORIES + ../shared + PUBLIC_LIBRARIES + Qt::Gui + Qt::Qml + Qt::Quick +) + +# Resources: +set(resourceslayout_resource_files + "layouts/en_GB/main.qml" +) + +qt_internal_add_resource(tst_layoutresources "resourceslayout" + PREFIX + "/resource" + BASE + "data" + FILES + ${resourceslayout_resource_files} +) + + +## Scopes: +##################################################################### + +qt_internal_extend_target(tst_layoutresources CONDITION static + PUBLIC_LIBRARIES + Qt::Svg +) + +#### Keys ignored in scope 3:.:.:layoutresources.pro:static: +# QTPLUGIN = "qtvirtualkeyboardplugin" diff --git a/tests/auto/styles/.prev_CMakeLists.txt b/tests/auto/styles/.prev_CMakeLists.txt new file mode 100644 index 00000000..d7d1995e --- /dev/null +++ b/tests/auto/styles/.prev_CMakeLists.txt @@ -0,0 +1,38 @@ +# Generated from styles.pro. + +##################################################################### +## tst_styles Test: +##################################################################### + +# Collect test data +file(GLOB_RECURSE test_data_glob + RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/data/*) +list(APPEND test_data ${test_data_glob}) + +qt_internal_add_test(tst_styles + QMLTEST + SOURCES + tst_styles.cpp + DEFINES + TESTDATA_DIR=\\\"${CMAKE_CURRENT_SOURCE_DIR}/data\\\" + PUBLIC_LIBRARIES + Qt::Gui + TESTDATA ${test_data} +) + +#### Keys ignored in scope 1:.:.:styles.pro:: +# DISTFILES = "data/tst_styles.qml" "data/QtQuick/VirtualKeyboard/Styles/test/style.qml" +# OTHER_FILES = "$$PWD/data/tst_styles.qml" +# TEMPLATE = "app" + +## Scopes: +##################################################################### + +qt_internal_extend_target(tst_styles CONDITION static + PUBLIC_LIBRARIES + Qt::Svg +) + +#### Keys ignored in scope 2:.:.:styles.pro:static: +# QTPLUGIN = "qtvirtualkeyboardplugin" diff --git a/tests/manual/quickcontrols2/.prev_CMakeLists.txt b/tests/manual/quickcontrols2/.prev_CMakeLists.txt new file mode 100644 index 00000000..948504c7 --- /dev/null +++ b/tests/manual/quickcontrols2/.prev_CMakeLists.txt @@ -0,0 +1,31 @@ +# Generated from quickcontrols2.pro. + +##################################################################### +## quickcontrols2 Binary: +##################################################################### + +qt_internal_add_executable(quickcontrols2 + GUI + SOURCES + main.cpp + PUBLIC_LIBRARIES + Qt::Gui + Qt::Qml + Qt::Quick +) + +# Resources: +set(main_resource_files + "main.qml" +) + +qt_internal_add_resource(quickcontrols2 "main" + PREFIX + "/" + FILES + ${main_resource_files} +) + + +#### Keys ignored in scope 1:.:.:quickcontrols2.pro:: +# QML_IMPORT_PATH = diff --git a/tests/manual/x11vkbtest/.prev_CMakeLists.txt b/tests/manual/x11vkbtest/.prev_CMakeLists.txt new file mode 100644 index 00000000..b16e51f7 --- /dev/null +++ b/tests/manual/x11vkbtest/.prev_CMakeLists.txt @@ -0,0 +1,31 @@ +# Generated from x11vkbtest.pro. + +##################################################################### +## x11vkbtest Binary: +##################################################################### + +qt_internal_add_executable(x11vkbtest + GUI + SOURCES + colors.h + filehelper.cpp filehelper.h + main.cpp + memorymonitor.cpp memorymonitor.h + mousesimulator.cpp mousesimulator.h + processhandler.cpp processhandler.h + startclose.cpp startclose.h + testbase.cpp testbase.h + testenglishletters.cpp testenglishletters.h + testlanguagechange.cpp testlanguagechange.h + testreporter.cpp testreporter.h + testthread.cpp testthread.h + windowhelper.cpp windowhelper.h + DEFINES + QT_DEPRECATED_WARNINGS + PUBLIC_LIBRARIES + Qt::Charts + Qt::Gui + X11 + Xtst + xdo +) diff --git a/tests/manual/x11vkbtest/CMakeLists.txt b/tests/manual/x11vkbtest/CMakeLists.txt index 4586e656..cd971d9c 100644 --- a/tests/manual/x11vkbtest/CMakeLists.txt +++ b/tests/manual/x11vkbtest/CMakeLists.txt @@ -23,9 +23,9 @@ qt_internal_add_manual_test(x11vkbtest DEFINES QT_DEPRECATED_WARNINGS PUBLIC_LIBRARIES + Qt::Charts Qt::Gui X11 Xtst - charts xdo ) diff --git a/tests/manual/x11vkbwrapper/.prev_CMakeLists.txt b/tests/manual/x11vkbwrapper/.prev_CMakeLists.txt new file mode 100644 index 00000000..9440dc39 --- /dev/null +++ b/tests/manual/x11vkbwrapper/.prev_CMakeLists.txt @@ -0,0 +1,74 @@ +# Generated from x11vkbwrapper.pro. + +##################################################################### +## x11vkbwrapper Binary: +##################################################################### + +qt_internal_add_executable(x11vkbwrapper + GUI + SOURCES + common_defs.h + handleatspievents.cpp handleatspievents.h + handledbusforchrome.cpp handledbusforchrome.h + handlekeyevents.cpp handlekeyevents.h + handlelanguagechange.cpp handlelanguagechange.h + keysymmapsforfakeinput.h + main.cpp + vkbhidetimer.cpp vkbhidetimer.h + xcbkeyboard.h + DEFINES + QT_DEPRECATED_WARNINGS + INCLUDE_DIRECTORIES + /usr/include/X11 + /usr/include/at-spi-2.0 + /usr/include/dbus-1.0 + /usr/include/glib-2.0 + /usr/lib/x86_64-linux-gnu/dbus-1.0/include + /usr/lib/x86_64-linux-gnu/glib-2.0/include + PUBLIC_LIBRARIES + PkgConfig::ATSPI2 + Qt::DBus + Qt::Gui + Qt::Qml + Qt::Quick + Qt::Svg + Qt::VirtualKeyboard + Qt::Widgets + X11 + Xtst + xdo +) + +# Resources: +set(qml_resource_files + "Keyboard.qml" + "graphics/Qt_logo.png" + "main.qml" +) + +qt_internal_add_resource(x11vkbwrapper "qml" + PREFIX + "/" + FILES + ${qml_resource_files} +) + + +#### Keys ignored in scope 1:.:.:x11vkbwrapper.pro:: +# TEMPLATE = "app" + +## Scopes: +##################################################################### + +qt_internal_extend_target(x11vkbwrapper CONDITION static + PUBLIC_LIBRARIES + Qt::Svg +) + +#### Keys ignored in scope 2:.:.:x11vkbwrapper.pro:static: +# QTPLUGIN = "qtvirtualkeyboardplugin" + +qt_internal_extend_target(x11vkbwrapper CONDITION CMAKE_BUILD_TYPE STREQUAL Release + DEFINES + QT_NO_DEBUG_OUTPUT +) diff --git a/tests/manual/x11vkbwrapper/vkbnativehost/.prev_CMakeLists.txt b/tests/manual/x11vkbwrapper/vkbnativehost/.prev_CMakeLists.txt new file mode 100644 index 00000000..53f91b6a --- /dev/null +++ b/tests/manual/x11vkbwrapper/vkbnativehost/.prev_CMakeLists.txt @@ -0,0 +1,19 @@ +# Generated from vkbnativehost.pro. + +##################################################################### +## x11vkbnativehost Binary: +##################################################################### + +qt_internal_add_executable(x11vkbnativehost + SOURCES + common_defs.h + main.cpp + sendertodbus.cpp sendertodbus.h + DEFINES + QT_DEPRECATED_WARNINGS + PUBLIC_LIBRARIES + Qt::DBus +) + +#### Keys ignored in scope 1:.:.:vkbnativehost.pro:: +# DISTFILES = "install_host.sh" "x11vkb.host.json" -- cgit v1.2.3