aboutsummaryrefslogtreecommitdiffstats
path: root/src/settings
diff options
context:
space:
mode:
Diffstat (limited to 'src/settings')
-rw-r--r--src/settings/CMakeLists.txt50
-rw-r--r--src/settings/dependencies.json2
-rw-r--r--src/settings/plugins.qmltypes50
-rw-r--r--src/settings/qmldir5
-rw-r--r--src/settings/qquickvirtualkeyboardsettings.cpp669
-rw-r--r--src/settings/qquickvirtualkeyboardsettings_p.h160
-rw-r--r--src/settings/qtquickvirtualkeyboardsettingsplugin.cpp57
-rw-r--r--src/settings/qtquickvirtualkeyboardsettingsplugin.h50
-rw-r--r--src/settings/settings.pro23
9 files changed, 860 insertions, 206 deletions
diff --git a/src/settings/CMakeLists.txt b/src/settings/CMakeLists.txt
index 32da7913..7ac69291 100644
--- a/src/settings/CMakeLists.txt
+++ b/src/settings/CMakeLists.txt
@@ -1,34 +1,46 @@
-# Generated from settings.pro.
+# Copyright (C) 2022 The Qt Company Ltd.
+# SPDX-License-Identifier: BSD-3-Clause
#####################################################################
-## qtquickvirtualkeyboardsettingsplugin Plugin:
+## qtvkbsettingsplugin Plugin:
#####################################################################
-qt_add_qml_module(qtquickvirtualkeyboardsettingsplugin
+qt_internal_add_qml_module(VirtualKeyboardSettings
URI "QtQuick.VirtualKeyboard.Settings"
- VERSION "2.${CMAKE_PROJECT_VERSION_MINOR}"
- CLASSNAME QtQuickVirtualKeyboardSettingsPlugin
- DEPENDENCIES
- QtQuick/2.0
- SKIP_TYPE_REGISTRATION
+ VERSION "${PROJECT_VERSION}"
+ PAST_MAJOR_VERSIONS 2 1
+ PLUGIN_TARGET qtvkbsettingsplugin
+ NO_PLUGIN_OPTIONAL
SOURCES
- qtquickvirtualkeyboardsettingsplugin.cpp qtquickvirtualkeyboardsettingsplugin.h
- PUBLIC_LIBRARIES
+ qquickvirtualkeyboardsettings.cpp
+ qquickvirtualkeyboardsettings_p.h
+ DEFINES
+ QT_ASCII_CAST_WARNINGS
+ QT_NO_CAST_FROM_ASCII
+ QT_NO_CAST_FROM_BYTEARRAY
+ QT_NO_CAST_TO_ASCII
+ QT_VIRTUALKEYBOARD_DEFAULT_LAYOUTS_DIR="qrc:${VKB_LAYOUTS_PREFIX}"
+ LIBRARIES
Qt::Core
Qt::Gui
Qt::Qml
Qt::Quick
Qt::VirtualKeyboardPrivate
+ NO_GENERATE_CPP_EXPORTS
)
-#### Keys ignored in scope 1:.:.:settings.pro:<TRUE>:
-# IMPORT_VERSION = "2.$$QT_MINOR_VERSION"
-# OTHER_FILES = "plugins.qmltypes" "qmldir"
-# TARGETPATH = "QtQuick/VirtualKeyboard/Settings"
+qt_internal_extend_target(VirtualKeyboardSettings CONDITION QT_FEATURE_vkb_no_builtin_style
+ DEFINES
+ QT_VIRTUALKEYBOARD_DEFAULT_STYLE=""
+)
-## Scopes:
-#####################################################################
+qt_internal_extend_target(VirtualKeyboardSettings CONDITION QT_FEATURE_vkb_retro_style AND NOT QT_FEATURE_vkb_no_builtin_style
+ DEFINES
+ QT_VIRTUALKEYBOARD_DEFAULT_STYLE="retro"
+)
+
+qt_internal_extend_target(VirtualKeyboardSettings CONDITION NOT QT_FEATURE_vkb_no_builtin_style AND NOT QT_FEATURE_vkb_retro_style
+ DEFINES
+ QT_VIRTUALKEYBOARD_DEFAULT_STYLE="default"
+)
-#### Keys ignored in scope 2:.:.:settings.pro:WIN32:
-# QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard for Qt."
-# QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard (Qt $$QT_VERSION)"
diff --git a/src/settings/dependencies.json b/src/settings/dependencies.json
deleted file mode 100644
index 0d4f101c..00000000
--- a/src/settings/dependencies.json
+++ /dev/null
@@ -1,2 +0,0 @@
-[
-]
diff --git a/src/settings/plugins.qmltypes b/src/settings/plugins.qmltypes
deleted file mode 100644
index 8b1402e6..00000000
--- a/src/settings/plugins.qmltypes
+++ /dev/null
@@ -1,50 +0,0 @@
-import QtQuick.tooling 1.2
-
-// This file describes the plugin-supplied types contained in the library.
-// It is used for QML tooling purposes only.
-//
-// This file was auto-generated by:
-// 'qmlplugindump -nonrelocatable -dependencies dependencies.json QtQuick.VirtualKeyboard.Settings 2.14'
-
-Module {
- dependencies: []
- Component {
- name: "QtVirtualKeyboard::VirtualKeyboardSettings"
- prototype: "QObject"
- exports: [
- "QtQuick.VirtualKeyboard.Settings/VirtualKeyboardSettings 1.0",
- "QtQuick.VirtualKeyboard.Settings/VirtualKeyboardSettings 1.1",
- "QtQuick.VirtualKeyboard.Settings/VirtualKeyboardSettings 1.2",
- "QtQuick.VirtualKeyboard.Settings/VirtualKeyboardSettings 2.0",
- "QtQuick.VirtualKeyboard.Settings/VirtualKeyboardSettings 2.1"
- ]
- isCreatable: false
- isSingleton: true
- exportMetaObjectRevisions: [0, 0, 0, 0, 0]
- Property { name: "style"; type: "QUrl"; isReadonly: true }
- Property { name: "layoutPath"; type: "QUrl" }
- Property { name: "styleName"; type: "string" }
- Property { name: "locale"; type: "string" }
- Property { name: "availableLocales"; type: "QStringList"; isReadonly: true }
- Property { name: "activeLocales"; type: "QStringList" }
- Property {
- name: "wordCandidateList"
- type: "WordCandidateListSettings"
- isReadonly: true
- isPointer: true
- }
- Property { name: "fullScreenMode"; type: "bool" }
- }
- Component {
- name: "QtVirtualKeyboard::WordCandidateListSettings"
- prototype: "QObject"
- exports: [
- "QtQuick.VirtualKeyboard.Settings/WordCandidateListSettings 2.2"
- ]
- isCreatable: false
- exportMetaObjectRevisions: [0]
- Property { name: "autoHideDelay"; type: "int" }
- Property { name: "alwaysVisible"; type: "bool" }
- Property { name: "autoCommitWord"; type: "bool" }
- }
-}
diff --git a/src/settings/qmldir b/src/settings/qmldir
deleted file mode 100644
index ac07347d..00000000
--- a/src/settings/qmldir
+++ /dev/null
@@ -1,5 +0,0 @@
-module QtQuick.VirtualKeyboard.Settings
-plugin qtquickvirtualkeyboardsettingsplugin
-classname QtQuickVirtualKeyboardSettingsPlugin
-typeinfo plugins.qmltypes
-depends QtQuick 2.0
diff --git a/src/settings/qquickvirtualkeyboardsettings.cpp b/src/settings/qquickvirtualkeyboardsettings.cpp
new file mode 100644
index 00000000..8a0d529b
--- /dev/null
+++ b/src/settings/qquickvirtualkeyboardsettings.cpp
@@ -0,0 +1,669 @@
+// Copyright (C) 2016 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#include "qquickvirtualkeyboardsettings_p.h"
+#include <QtVirtualKeyboard/private/settings_p.h>
+#include <QtVirtualKeyboard/private/virtualkeyboarddebug_p.h>
+#include <QQmlEngine>
+#include <QQmlContext>
+#include <QFileInfo>
+#include <QDir>
+#include <QRegularExpression>
+#include <QtCore/private/qobject_p.h>
+#include <QtCore/qmutex.h>
+
+QT_BEGIN_NAMESPACE
+namespace QtVirtualKeyboard {
+
+class QQuickVirtualKeyboardSettingsPrivate : public QObjectPrivate
+{
+ Q_DECLARE_PUBLIC(QQuickVirtualKeyboardSettings)
+public:
+ QQuickVirtualKeyboardSettingsPrivate(QQuickVirtualKeyboardSettings *q_ptr, QQmlEngine *engine) :
+ QObjectPrivate(),
+ q_ptr(q_ptr),
+ engine(engine)
+ {}
+
+ QString buildStylePath(const QString &path, const QString &name) const
+ {
+ QString importPath(path + name + QLatin1String("/style.qml"));
+ if (!importPath.startsWith(QLatin1String("qrc:"))) {
+ QUrl url = QUrl::fromLocalFile(importPath);
+ importPath = url.toString();
+ }
+ return importPath;
+ }
+
+ QString buildStyleFilePath(const QString &path, const QString &name) const
+ {
+ QString filePath(path);
+ if (filePath.startsWith(QLatin1String("qrc:")))
+ filePath.remove(0, 3);
+ return filePath + name + QLatin1String("/style.qml");
+ }
+
+ QStringList qmlImportPathList() const
+ {
+ return engine ? engine->importPathList() : QStringList();
+ }
+
+ QString stylePath(const QString &name) const
+ {
+ if (name.isEmpty())
+ return QString();
+
+ QStringList stylePathList;
+ stylePathList << QLatin1String("qrc:/qt-project.org/imports/QtQuick/VirtualKeyboard/Styles/Builtin/");
+ const QStringList importPathList = qmlImportPathList();
+ // Add QML import path (Note: the QML base dir is usually the last entry in the list)
+ for (int i = importPathList.size() - 1; i >= 0; --i) {
+ const QString stylesPath = importPathList.at(i)
+ + QLatin1String("/QtQuick/VirtualKeyboard/Styles/");
+ stylePathList += stylesPath;
+ }
+
+ // Path for backwards compatibility
+ stylePathList << QLatin1String("qrc:/QtQuick/VirtualKeyboard/content/styles/");
+
+ for (const QString &stylePath : std::as_const(stylePathList)) {
+ QString filePath = buildStyleFilePath(stylePath, name);
+ bool pathExist = false;
+ pathExist = QFileInfo::exists(filePath);
+ if (pathExist)
+ return buildStylePath(stylePath, name);
+ }
+ return QString();
+ }
+
+ QQuickVirtualKeyboardSettings *q_ptr;
+ QQmlEngine *engine;
+ QQuickWordCandidateListSettings wordCandidateListSettings;
+};
+
+/*!
+ \qmlmodule QtQuick.VirtualKeyboard.Settings
+ \title Qt Quick Virtual Keyboard Settings QML Types
+ \ingroup qmlmodules
+
+ \brief Provides settings for Qt Virtual Keyboard.
+
+ The QML types can be imported into your application using the following
+ import statements in your .qml file:
+
+ \qml
+ import QtQuick.VirtualKeyboard.Settings
+ \endqml
+*/
+
+/*!
+ \qmltype VirtualKeyboardSettings
+ \inqmlmodule QtQuick.VirtualKeyboard.Settings
+ \ingroup qtvirtualkeyboard-settings-qml
+ \since QtQuick.VirtualKeyboard 1.2
+ \brief Provides settings for virtual keyboard.
+
+ This type provides a VirtualKeyboardSettings singleton instance,
+ which can be used to configure the virtual keyboard settings.
+
+ Please note that the settings have only effect in the current
+ application's lifetime, that is, configuration changes are not
+ permanent.
+
+ For example, to change the keyboard style in application:
+
+ \code
+ Component.onCompleted: VirtualKeyboardSettings.styleName = "retro"
+ \endcode
+*/
+
+/*!
+ \class QtVirtualKeyboard::VirtualKeyboardSettings
+ \internal
+*/
+
+/*!
+ \internal
+*/
+QQuickVirtualKeyboardSettings::QQuickVirtualKeyboardSettings(QQmlEngine *engine, QObject *parent) :
+ QObject(*new QQuickVirtualKeyboardSettingsPrivate(this, engine), parent)
+{
+ Q_D(QQuickVirtualKeyboardSettings);
+ Settings *settings = Settings::instance();
+ if (settings->styleName().isEmpty())
+ resetStyle();
+ if (settings->layoutPath().isEmpty())
+ resetLayoutPath();
+ connect(settings, SIGNAL(styleChanged()), SIGNAL(styleChanged()));
+ connect(settings, SIGNAL(styleNameChanged()), SIGNAL(styleNameChanged()));
+ connect(settings, SIGNAL(localeChanged()), SIGNAL(localeChanged()));
+ connect(settings, SIGNAL(availableLocalesChanged()), SIGNAL(availableLocalesChanged()));
+ connect(settings, SIGNAL(activeLocalesChanged()), SIGNAL(activeLocalesChanged()));
+ connect(settings, SIGNAL(layoutPathChanged()), SIGNAL(layoutPathChanged()));
+ connect(settings, SIGNAL(wclAutoHideDelayChanged()), &d->wordCandidateListSettings, SIGNAL(autoHideDelayChanged()));
+ connect(settings, SIGNAL(wclAlwaysVisibleChanged()), &d->wordCandidateListSettings, SIGNAL(alwaysVisibleChanged()));
+ connect(settings, SIGNAL(wclAutoCommitWordChanged()), &d->wordCandidateListSettings, SIGNAL(autoCommitWordChanged()));
+ connect(settings, SIGNAL(fullScreenModeChanged()), SIGNAL(fullScreenModeChanged()));
+ connect(settings, SIGNAL(userDataPathChanged()), SIGNAL(userDataPathChanged()));
+ settings->connect(this, SIGNAL(userDataReset()), SIGNAL(userDataReset()));
+ connect(settings, SIGNAL(hwrTimeoutForAlphabeticChanged()), SIGNAL(hwrTimeoutForAlphabeticChanged()));
+ connect(settings, SIGNAL(hwrTimeoutForCjkChanged()), SIGNAL(hwrTimeoutForCjkChanged()));
+ connect(settings, SIGNAL(inputMethodHintsChanged()), SIGNAL(inputMethodHintsChanged()));
+ connect(settings, SIGNAL(handwritingModeDisabledChanged()), SIGNAL(handwritingModeDisabledChanged()));
+ connect(settings, SIGNAL(defaultInputMethodDisabledChanged()), SIGNAL(defaultInputMethodDisabledChanged()));
+ connect(settings, SIGNAL(defaultDictionaryDisabledChanged()), SIGNAL(defaultDictionaryDisabledChanged()));
+ connect(settings, SIGNAL(visibleFunctionKeysChanged()), SIGNAL(visibleFunctionKeysChanged()));
+}
+
+/*!
+ \internal
+ TODO: Remove this method when QML stops creating separate singleton instances for each version.
+ */
+QQuickVirtualKeyboardSettings *QQuickVirtualKeyboardSettings::create(
+ QQmlEngine *qmlEngine, QJSEngine *)
+{
+ static QMutex mutex;
+ static QHash<QQmlEngine *, QQuickVirtualKeyboardSettings *> instances;
+ QMutexLocker locker(&mutex);
+ QQuickVirtualKeyboardSettings *&instance = instances[qmlEngine];
+ if (instance == nullptr)
+ instance = new QQuickVirtualKeyboardSettings(qmlEngine);
+ return instance;
+}
+
+/*!
+ \internal
+*/
+QString QQuickVirtualKeyboardSettings::style() const
+{
+ return Settings::instance()->style();
+}
+
+/*!
+ \internal
+*/
+QString QQuickVirtualKeyboardSettings::styleName() const
+{
+ return Settings::instance()->styleName();
+}
+
+/*!
+ \internal
+*/
+void QQuickVirtualKeyboardSettings::setStyleName(const QString &styleName)
+{
+ Q_D(QQuickVirtualKeyboardSettings);
+ Settings *settings = Settings::instance();
+ QString style = d->stylePath(styleName);
+ if (style.isEmpty()) {
+ qWarning() << "WARNING: Cannot find style" << styleName << "- fallback:" << settings->styleName();
+ return;
+ }
+ settings->setStyleName(styleName);
+ settings->setStyle(style);
+}
+
+/*!
+ \internal
+*/
+QUrl QQuickVirtualKeyboardSettings::layoutPath() const
+{
+ return Settings::instance()->layoutPath();
+}
+
+/*!
+ \internal
+*/
+void QQuickVirtualKeyboardSettings::setLayoutPath(const QUrl &layoutPath)
+{
+ Settings *settings = Settings::instance();
+ QDir layoutDirectory(layoutPath.toLocalFile());
+ if (!layoutDirectory.exists()) {
+ qWarning() << "WARNING: Cannot find layout path" << layoutPath;
+ return;
+ }
+ settings->setLayoutPath(layoutPath);
+}
+
+void QQuickVirtualKeyboardSettings::resetLayoutPath()
+{
+ Settings *settings = Settings::instance();
+ QUrl layoutPath(QLatin1String(QT_VIRTUALKEYBOARD_DEFAULT_LAYOUTS_DIR));
+ const QString customLayoutPath(QDir::fromNativeSeparators(qEnvironmentVariable("QT_VIRTUALKEYBOARD_LAYOUT_PATH")));
+ if (!customLayoutPath.isEmpty()) {
+ bool found = false;
+ QDir customLayoutDirectory(customLayoutPath);
+ if (customLayoutDirectory.exists()) {
+ found = true;
+ layoutPath = QUrl::fromLocalFile(customLayoutPath);
+ } else {
+ customLayoutDirectory = QDir(QUrl(customLayoutPath).toLocalFile());
+ if (customLayoutDirectory.exists()) {
+ found = true;
+ layoutPath = QUrl(customLayoutPath);
+ }
+ }
+ if (!found) {
+ qWarning() << "WARNING: Cannot assign custom layout path" << customLayoutPath << "- fallback:" << layoutPath;
+ }
+ }
+ settings->setLayoutPath(layoutPath);
+}
+
+QString QQuickVirtualKeyboardSettings::locale() const
+{
+ return Settings::instance()->locale();
+}
+
+void QQuickVirtualKeyboardSettings::setLocale(const QString &locale)
+{
+ Settings::instance()->setLocale(locale);
+}
+
+QStringList QQuickVirtualKeyboardSettings::availableLocales() const
+{
+ return Settings::instance()->availableLocales();
+}
+
+void QQuickVirtualKeyboardSettings::setActiveLocales(const QStringList &activeLocales)
+{
+ Settings::instance()->setActiveLocales(activeLocales);
+}
+
+QStringList QQuickVirtualKeyboardSettings::activeLocales() const
+{
+ return Settings::instance()->activeLocales();
+}
+
+QQuickWordCandidateListSettings *QQuickVirtualKeyboardSettings::wordCandidateList() const
+{
+ Q_D(const QQuickVirtualKeyboardSettings);
+ return const_cast<QQuickWordCandidateListSettings *>(&d->wordCandidateListSettings);
+}
+
+bool QQuickVirtualKeyboardSettings::fullScreenMode() const
+{
+ return Settings::instance()->fullScreenMode();
+}
+
+void QQuickVirtualKeyboardSettings::setFullScreenMode(bool fullScreenMode)
+{
+ return Settings::instance()->setFullScreenMode(fullScreenMode);
+}
+
+QString QQuickVirtualKeyboardSettings::userDataPath() const
+{
+ return Settings::instance()->userDataPath();
+}
+
+void QQuickVirtualKeyboardSettings::setUserDataPath(const QString &userDataPath)
+{
+ return Settings::instance()->setUserDataPath(userDataPath);
+}
+
+int QQuickVirtualKeyboardSettings::hwrTimeoutForAlphabetic() const
+{
+ return Settings::instance()->hwrTimeoutForAlphabetic();
+}
+
+void QQuickVirtualKeyboardSettings::setHwrTimeoutForAlphabetic(int hwrTimeoutForAlphabetic)
+{
+ return Settings::instance()->setHwrTimeoutForAlphabetic(hwrTimeoutForAlphabetic);
+}
+
+int QQuickVirtualKeyboardSettings::hwrTimeoutForCjk() const
+{
+ return Settings::instance()->hwrTimeoutForCjk();
+}
+
+void QQuickVirtualKeyboardSettings::setHwrTimeoutForCjk(int hwrTimeoutForCjk)
+{
+ return Settings::instance()->setHwrTimeoutForCjk(hwrTimeoutForCjk);
+}
+
+Qt::InputMethodHints QQuickVirtualKeyboardSettings::inputMethodHints() const
+{
+ return Settings::instance()->inputMethodHints();
+}
+
+void QQuickVirtualKeyboardSettings::setInputMethodHints(const Qt::InputMethodHints &inputMethodHints)
+{
+ Settings::instance()->setInputMethodHints(inputMethodHints);
+}
+
+bool QQuickVirtualKeyboardSettings::isHandwritingModeDisabled() const
+{
+ return Settings::instance()->isHandwritingModeDisabled();
+}
+
+void QQuickVirtualKeyboardSettings::setHandwritingModeDisabled(bool handwritingModeDisabled)
+{
+ Settings::instance()->setHandwritingModeDisabled(handwritingModeDisabled);
+}
+
+bool QQuickVirtualKeyboardSettings::isDefaultInputMethodDisabled() const
+{
+ return Settings::instance()->isDefaultInputMethodDisabled();
+}
+
+void QQuickVirtualKeyboardSettings::setDefaultInputMethodDisabled(bool defaultInputMethodDisabled)
+{
+ return Settings::instance()->setDefaultInputMethodDisabled(defaultInputMethodDisabled);
+}
+
+bool QQuickVirtualKeyboardSettings::isDefaultDictionaryDisabled() const
+{
+ return Settings::instance()->isDefaultDictionaryDisabled();
+}
+
+void QQuickVirtualKeyboardSettings::setDefaultDictionaryDisabled(bool defaultDictionaryDisabled)
+{
+ return Settings::instance()->setDefaultDictionaryDisabled(defaultDictionaryDisabled);
+}
+
+QtVirtualKeyboard::KeyboardFunctionKeys QQuickVirtualKeyboardSettings::visibleFunctionKeys() const
+{
+ return Settings::instance()->visibleFunctionKeys();
+}
+
+void QQuickVirtualKeyboardSettings::setVisibleFunctionKeys(QtVirtualKeyboard::KeyboardFunctionKeys newVisibleFunctionKeys)
+{
+ Settings::instance()->setVisibleFunctionKeys(newVisibleFunctionKeys);
+}
+
+bool QQuickVirtualKeyboardSettings::closeOnReturn() const
+{
+ return Settings::instance()->closeOnReturn();
+}
+
+void QQuickVirtualKeyboardSettings::setCloseOnReturn(bool closeOnReturn)
+{
+ Settings::instance()->setCloseOnReturn(closeOnReturn);
+}
+
+void QQuickVirtualKeyboardSettings::resetStyle()
+{
+ Q_D(QQuickVirtualKeyboardSettings);
+ Settings *settings = Settings::instance();
+ QString styleName = QLatin1String(QT_VIRTUALKEYBOARD_DEFAULT_STYLE);
+ QString style = d->stylePath(styleName);
+ QString customStyleName = QString::fromLatin1(qgetenv("QT_VIRTUALKEYBOARD_STYLE"));
+ if (!customStyleName.isEmpty()) {
+ bool found = false;
+ QRegularExpression styleNameValidator(QLatin1String("\\A(?:\\w+)\\z"));
+ QRegularExpressionMatch match = styleNameValidator.match(customStyleName);
+ if (match.hasMatch()) {
+ QString customStyle = d->stylePath(customStyleName);
+ if (!customStyle.isEmpty()) {
+ styleName = customStyleName;
+ style = customStyle;
+ found = true;
+ }
+ }
+ if (!found) {
+ qWarning() << "WARNING: Cannot find style" << customStyleName << "- fallback:" << styleName;
+ }
+ }
+ if (!style.isEmpty()) {
+ settings->setStyleName(styleName);
+ settings->setStyle(style);
+ }
+}
+
+/*!
+ \qmlproperty string VirtualKeyboardSettings::style
+ \internal
+*/
+
+/*!
+ \qmlproperty string VirtualKeyboardSettings::styleName
+
+ This property provides the current style. Application can change
+ the keyboard style by setting the styleName to different value.
+
+ The system wide keyboard style can be affected by setting
+ the QT_VIRTUALKEYBOARD_STYLE environment variable.
+*/
+
+/*!
+ \qmlproperty string VirtualKeyboardSettings::locale
+ \since QtQuick.VirtualKeyboard.Settings 2.0
+
+ This property provides the default locale for the keyboard.
+
+ When the locale is not specified, the default system locale is used instead.
+
+ If the keyboard locale is different from the new default locale, keyboard
+ language is changed immediately to reflect the new locale. If the locale setting
+ is incorrect, or it is not in the list of supported locales, it is ignored and
+ the default setting is used instead.
+
+ A locale is supported if it is included in the list of availableLocales.
+*/
+
+/*!
+ \qmlproperty list<string> VirtualKeyboardSettings::availableLocales
+ \since QtQuick.VirtualKeyboard.Settings 2.0
+ \readonly
+
+ This property contains a list of languages supported by the virtual keyboard.
+
+ This list is read-only and depends on the build-time configuration of the
+ virtual keyboard.
+*/
+
+/*!
+ \qmlproperty list<string> VirtualKeyboardSettings::activeLocales
+ \since QtQuick.VirtualKeyboard.Settings 2.0
+
+ This property contains a list of activated languages of the virtual keyboard.
+
+ The list of active languages is a subset of the available languages, and can be
+ used to limit the list of available languages in the application lifetime.
+
+ The list of languages will be shown based on the specified ordering.
+*/
+
+/*!
+ \qmlproperty bool VirtualKeyboardSettings::fullScreenMode
+ \since QtQuick.VirtualKeyboard.Settings 2.2
+
+ This property enables the fullscreen mode for the virtual keyboard.
+
+ In fullscreen mode, the virtual keyboard replicates the contents of the
+ focused input field to the fullscreen input field located at the top of the
+ keyboard.
+
+ For example, to activate the fullscreen mode when the screen aspect ratio
+ is greater than 16:9:
+
+ \code
+ Binding {
+ target: VirtualKeyboardSettings
+ property: "fullScreenMode"
+ value: (Screen.width / Screen.height) > (16.0 / 9.0)
+ }
+ \endcode
+*/
+
+/*!
+ \qmlproperty bool VirtualKeyboardSettings::userDataPath
+ \since QtQuick.VirtualKeyboard.Settings 6.1
+
+ This property sets the user data path for the virtual keyboard and its plugins.
+
+ By default, the user data path is set to \l {QStandardPaths::GenericConfigLocation}{GenericConfigLocation} + "/qtvirtualkeyboard".
+*/
+
+/*!
+ \qmlsignal VirtualKeyboardSettings::userDataReset()
+
+ The application triggers this signal prior to the user's data being reset to
+ indicate to the virtual keyboard that all files must be closed
+ in the user data directory.
+*/
+
+/*!
+ \qmlproperty bool VirtualKeyboardSettings::hwrTimeoutForAlphabetic
+ \since QtQuick.VirtualKeyboard.Settings 6.1
+
+ This property sets the handwriting recognition timeout for alphabetical languages.
+
+ By default, the timeout is 500 millliseconds.
+*/
+
+/*!
+ \qmlproperty bool VirtualKeyboardSettings::hwrTimeoutForCjk
+ \since QtQuick.VirtualKeyboard.Settings 6.1
+
+ This property sets the handwriting recognition timeout for Chinese / Japanese / Korean languages.
+
+ By default, the timeout is 500 millliseconds.
+*/
+
+/*!
+ \qmlproperty int VirtualKeyboardSettings::inputMethodHints
+ \since QtQuick.VirtualKeyboard.Settings 6.1
+
+ This property allows to set persistent input method hints.
+
+ The value of this property is combined with the input method
+ hints from the input control. For example, to disable predictive
+ text input, this property can be set to \c Qt::ImhNoPredictiveText.
+*/
+
+/*!
+ \qmlproperty bool VirtualKeyboardSettings::handwritingModeDisabled
+ \since QtQuick.VirtualKeyboard.Settings 6.1
+
+ This property allows to disable handwriting input mode, if it is
+ otherwise available in the system.
+
+ When this property is set to \c true, the handwriting button is hidden
+ from the keyboard layout and the user cannot switch to handwriting
+ input mode.
+*/
+
+/*!
+ \qmlproperty bool VirtualKeyboardSettings::defaultInputMethodDisabled
+ \since QtQuick.VirtualKeyboard.Settings 6.1
+
+ This property disables the default input method. The purpose of this setting is to be able to
+ override the default input method with the plain input method, disabling its functionality.
+*/
+
+/*!
+ \qmlproperty bool VirtualKeyboardSettings::defaultDictionaryDisabled
+ \since QtQuick.VirtualKeyboard.Settings 6.1
+
+ This property disables the default dictionary. The purpose of this setting is to be able to
+ use a custom dictionary only instead of the standard dictionary.
+*/
+
+/*!
+ \qmlproperty enumeration VirtualKeyboardSettings::visibleFunctionKeys
+ \since QtQuick.VirtualKeyboard.Settings 6.6
+
+ This setting adjusts the visibility of specific function keys in the keyboard layout, allowing
+ them to be either displayed or hidden. When a function key is not visible, its functionality
+ remains accessible through the gear menu.
+
+ The value can be combination of the following flags:
+
+ \list
+ \li \c QtVirtualKeyboard.KeyboardFunctionKeys.None All function keys are hidden
+ \li \c QtVirtualKeyboard.KeyboardFunctionKeys.Hide Hide function key is visible
+ \li \c QtVirtualKeyboard.KeyboardFunctionKeys.Language Language function key is visible
+ \li \c QtVirtualKeyboard.KeyboardFunctionKeys.All All function keys are visible
+ \endlist
+
+ The default is \c QtVirtualKeyboard.KeyboardFunctionKeys.All.
+*/
+
+/*!
+ \qmlproperty bool VirtualKeyboardSettings::closeOnReturn
+ \since QtQuick.VirtualKeyboard.Settings 6.8
+
+ This property enables hiding of virtual keyboard.
+
+ When this property is set to \c true, the virtual keyboard is hidden when \l Qt::Key_Enter
+ or \l Qt::Key_Return key released. The default is \c false.
+*/
+
+/*!
+ \since QtQuick.VirtualKeyboard.Settings 2.2
+ \qmlproperty int VirtualKeyboardSettings::wordCandidateList.autoHideDelay
+ \qmlproperty bool VirtualKeyboardSettings::wordCandidateList.alwaysVisible
+
+ \table
+ \header
+ \li Name
+ \li Description
+ \row
+ \li autoHideDelay
+ \li This property defines the delay, in milliseconds, after which the
+ word candidate list is hidden if empty.
+
+ If the value is \c 0, the list is immediately hidden when cleared.
+
+ If the value is \c -1, the list is visible until input focus
+ changes, or the input panel is hidden.
+
+ The default value is \c 5000 milliseconds.
+ \row
+ \li alwaysVisible
+ \li This property defines whether the word candidate list should always
+ remain visible.
+
+ The default value is \c false.
+ \row
+ \li autoCommitWord
+ \li This property enables the automatic commit feature that is activated
+ when the word candidate list is narrowed down to a single candidate.
+
+ The automatic commit feature takes effect when the word candidate
+ list initially contains multiple words and is reduced to single word
+ after additional input. This word will be selected and committed
+ automatically without user interaction.
+
+ This property is set to \c false by default.
+ \endtable
+*/
+
+QQuickWordCandidateListSettings::QQuickWordCandidateListSettings(QObject *parent) :
+ QObject(parent)
+{
+}
+
+int QQuickWordCandidateListSettings::autoHideDelay() const
+{
+ return Settings::instance()->wclAutoHideDelay();
+}
+
+void QQuickWordCandidateListSettings::setAutoHideDelay(int autoHideDelay)
+{
+ Settings::instance()->setWclAutoHideDelay(autoHideDelay);
+}
+
+bool QQuickWordCandidateListSettings::alwaysVisible() const
+{
+ return Settings::instance()->wclAlwaysVisible();
+}
+
+void QQuickWordCandidateListSettings::setAlwaysVisible(bool alwaysVisible)
+{
+ Settings::instance()->setWclAlwaysVisible(alwaysVisible);
+}
+
+bool QQuickWordCandidateListSettings::autoCommitWord() const
+{
+ return Settings::instance()->wclAutoCommitWord();
+}
+
+void QQuickWordCandidateListSettings::setAutoCommitWord(bool autoCommitWord)
+{
+ Settings::instance()->setWclAutoCommitWord(autoCommitWord);
+}
+
+} // namespace QtVirtualKeyboard
+QT_END_NAMESPACE
diff --git a/src/settings/qquickvirtualkeyboardsettings_p.h b/src/settings/qquickvirtualkeyboardsettings_p.h
new file mode 100644
index 00000000..3f03ff80
--- /dev/null
+++ b/src/settings/qquickvirtualkeyboardsettings_p.h
@@ -0,0 +1,160 @@
+// Copyright (C) 2021 The Qt Company Ltd.
+// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only
+
+#ifndef VIRTUALKEYBOARDSETTINGS_H
+#define VIRTUALKEYBOARDSETTINGS_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 <QtVirtualKeyboard/private/qvirtualkeyboardnamespace_p.h>
+#include <QtQml/qqml.h>
+#include <QtCore/private/qglobal_p.h>
+
+QT_BEGIN_NAMESPACE
+namespace QtVirtualKeyboard {
+
+class QQuickWordCandidateListSettings;
+class QQuickVirtualKeyboardSettingsPrivate;
+
+class QQuickVirtualKeyboardSettings : public QObject
+{
+ Q_OBJECT
+ Q_DECLARE_PRIVATE(QQuickVirtualKeyboardSettings)
+ Q_PROPERTY(QUrl style READ style NOTIFY styleChanged)
+ Q_PROPERTY(QUrl layoutPath READ layoutPath WRITE setLayoutPath NOTIFY layoutPathChanged)
+ Q_PROPERTY(QString styleName READ styleName WRITE setStyleName NOTIFY styleNameChanged)
+ Q_PROPERTY(QString locale READ locale WRITE setLocale NOTIFY localeChanged)
+ Q_PROPERTY(QStringList availableLocales READ availableLocales NOTIFY availableLocalesChanged)
+ Q_PROPERTY(QStringList activeLocales READ activeLocales WRITE setActiveLocales NOTIFY activeLocalesChanged)
+ Q_PROPERTY(QQuickWordCandidateListSettings *wordCandidateList READ wordCandidateList CONSTANT)
+ Q_PROPERTY(bool fullScreenMode READ fullScreenMode WRITE setFullScreenMode NOTIFY fullScreenModeChanged)
+ Q_PROPERTY(QString userDataPath READ userDataPath WRITE setUserDataPath NOTIFY userDataPathChanged REVISION(6, 1))
+ Q_PROPERTY(int hwrTimeoutForAlphabetic READ hwrTimeoutForAlphabetic WRITE setHwrTimeoutForAlphabetic NOTIFY hwrTimeoutForAlphabeticChanged REVISION(6, 1))
+ Q_PROPERTY(int hwrTimeoutForCjk READ hwrTimeoutForCjk WRITE setHwrTimeoutForCjk NOTIFY hwrTimeoutForCjkChanged REVISION(6, 1))
+ Q_PROPERTY(Qt::InputMethodHints inputMethodHints READ inputMethodHints WRITE setInputMethodHints NOTIFY inputMethodHintsChanged REVISION(6, 1))
+ Q_PROPERTY(bool handwritingModeDisabled READ isHandwritingModeDisabled WRITE setHandwritingModeDisabled NOTIFY handwritingModeDisabledChanged REVISION(6, 1))
+ Q_PROPERTY(bool defaultInputMethodDisabled READ isDefaultInputMethodDisabled WRITE setDefaultInputMethodDisabled NOTIFY defaultInputMethodDisabledChanged REVISION(6, 1))
+ Q_PROPERTY(bool defaultDictionaryDisabled READ isDefaultDictionaryDisabled WRITE setDefaultDictionaryDisabled NOTIFY defaultDictionaryDisabledChanged REVISION(6, 1))
+ Q_PROPERTY(QtVirtualKeyboard::KeyboardFunctionKeys visibleFunctionKeys READ visibleFunctionKeys WRITE setVisibleFunctionKeys NOTIFY visibleFunctionKeysChanged REVISION(6, 6))
+ Q_PROPERTY(bool closeOnReturn READ closeOnReturn WRITE setCloseOnReturn NOTIFY closeOnReturnChanged REVISION(6, 8))
+ QML_NAMED_ELEMENT(VirtualKeyboardSettings)
+ QML_SINGLETON
+ QML_ADDED_IN_VERSION(1, 0)
+ QML_EXTRA_VERSION(2, 0)
+
+ explicit QQuickVirtualKeyboardSettings(QQmlEngine *engine, QObject *parent = nullptr);
+
+public:
+ static QQuickVirtualKeyboardSettings *create(QQmlEngine *qmlEngine, QJSEngine *jsEngine);
+ QString style() const;
+
+ QUrl layoutPath() const;
+ void setLayoutPath(const QUrl &layoutPath);
+
+ QString styleName() const;
+ void setStyleName(const QString &styleName);
+
+ QString locale() const;
+ void setLocale(const QString &locale);
+
+ QStringList availableLocales() const;
+
+ void setActiveLocales(const QStringList &activeLocales);
+ QStringList activeLocales() const;
+
+ QQuickWordCandidateListSettings *wordCandidateList() const;
+
+ bool fullScreenMode() const;
+ void setFullScreenMode(bool fullScreenMode);
+
+ QString userDataPath() const;
+ void setUserDataPath(const QString &userDataPath);
+
+ int hwrTimeoutForAlphabetic() const;
+ void setHwrTimeoutForAlphabetic(int hwrTimeoutForAlphabetic);
+
+ int hwrTimeoutForCjk() const;
+ void setHwrTimeoutForCjk(int hwrTimeoutForCjk);
+
+ Qt::InputMethodHints inputMethodHints() const;
+ void setInputMethodHints(const Qt::InputMethodHints &inputMethodHints);
+
+ bool isHandwritingModeDisabled() const;
+ void setHandwritingModeDisabled(bool handwritingModeDisabled);
+
+ bool isDefaultInputMethodDisabled() const;
+ void setDefaultInputMethodDisabled(bool defaultInputMethodDisabled);
+
+ bool isDefaultDictionaryDisabled() const;
+ void setDefaultDictionaryDisabled(bool defaultDictionaryDisabled);
+
+ QtVirtualKeyboard::KeyboardFunctionKeys visibleFunctionKeys() const;
+ void setVisibleFunctionKeys(QtVirtualKeyboard::KeyboardFunctionKeys newVisibleFunctionKeys);
+
+ bool closeOnReturn() const;
+ void setCloseOnReturn(bool enable);
+
+signals:
+ void styleChanged();
+ void styleNameChanged();
+ void localeChanged();
+ void availableLocalesChanged();
+ void activeLocalesChanged();
+ void layoutPathChanged();
+ void fullScreenModeChanged();
+ Q_REVISION(6, 1) void userDataPathChanged();
+ Q_REVISION(6, 1) void userDataReset();
+ Q_REVISION(6, 1) void hwrTimeoutForAlphabeticChanged();
+ Q_REVISION(6, 1) void hwrTimeoutForCjkChanged();
+ Q_REVISION(6, 1) void inputMethodHintsChanged();
+ Q_REVISION(6, 1) void handwritingModeDisabledChanged();
+ Q_REVISION(6, 1) void defaultInputMethodDisabledChanged();
+ Q_REVISION(6, 1) void defaultDictionaryDisabledChanged();
+ Q_REVISION(6, 6) void visibleFunctionKeysChanged();
+ Q_REVISION(6, 8) void closeOnReturnChanged();
+
+private:
+ void resetStyle();
+ void resetLayoutPath();
+};
+
+class QQuickWordCandidateListSettings : public QObject
+{
+ Q_OBJECT
+ Q_PROPERTY(int autoHideDelay READ autoHideDelay WRITE setAutoHideDelay NOTIFY autoHideDelayChanged)
+ Q_PROPERTY(bool alwaysVisible READ alwaysVisible WRITE setAlwaysVisible NOTIFY alwaysVisibleChanged)
+ Q_PROPERTY(bool autoCommitWord READ autoCommitWord WRITE setAutoCommitWord NOTIFY autoCommitWordChanged)
+ QML_ANONYMOUS
+
+ explicit QQuickWordCandidateListSettings(QObject *parent = nullptr);
+ friend class QQuickVirtualKeyboardSettingsPrivate;
+
+public:
+ int autoHideDelay() const;
+ void setAutoHideDelay(int autoHideDelay);
+
+ bool alwaysVisible() const;
+ void setAlwaysVisible(bool alwaysVisible);
+
+ bool autoCommitWord() const;
+ void setAutoCommitWord(bool autoCommitWord);
+
+signals:
+ void autoHideDelayChanged();
+ void alwaysVisibleChanged();
+ void autoCommitWordChanged();
+};
+
+} // namespace QtVirtualKeyboard
+QT_END_NAMESPACE
+
+#endif // VIRTUALKEYBOARDSETTINGS_H
diff --git a/src/settings/qtquickvirtualkeyboardsettingsplugin.cpp b/src/settings/qtquickvirtualkeyboardsettingsplugin.cpp
deleted file mode 100644
index 06758db8..00000000
--- a/src/settings/qtquickvirtualkeyboardsettingsplugin.cpp
+++ /dev/null
@@ -1,57 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2018 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 "qtquickvirtualkeyboardsettingsplugin.h"
-#include <QtVirtualKeyboard/private/virtualkeyboardsettings_p.h>
-#include <QtVirtualKeyboard/private/qvirtualkeyboard_staticplugin_p.h>
-
-QT_BEGIN_NAMESPACE
-
-using namespace QtVirtualKeyboard;
-
-void QtQuickVirtualKeyboardSettingsPlugin::registerTypes(const char *uri)
-{
-#if defined(QT_STATICPLUGIN)
- Q_VKB_IMPORT_PLUGIN(QtQuick2Plugin)
-#endif
-
- qmlRegisterSingletonType<VirtualKeyboardSettings>(uri, 1, 0, "VirtualKeyboardSettings", VirtualKeyboardSettings::registerSettingsModule);
- qmlRegisterSingletonType<VirtualKeyboardSettings>(uri, 1, 1, "VirtualKeyboardSettings", VirtualKeyboardSettings::registerSettingsModule);
- qmlRegisterSingletonType<VirtualKeyboardSettings>(uri, 1, 2, "VirtualKeyboardSettings", VirtualKeyboardSettings::registerSettingsModule);
- qmlRegisterSingletonType<VirtualKeyboardSettings>(uri, 2, 0, "VirtualKeyboardSettings", VirtualKeyboardSettings::registerSettingsModule);
- qmlRegisterSingletonType<VirtualKeyboardSettings>(uri, 2, 1, "VirtualKeyboardSettings", VirtualKeyboardSettings::registerSettingsModule);
- qRegisterMetaType<WordCandidateListSettings *>("WordCandidateListSettings*");
- qmlRegisterUncreatableType<WordCandidateListSettings>(uri, 2, 2, "WordCandidateListSettings", QLatin1String("Cannot create word candidate list settings"));
-
- // The minor version used to be the current Qt 5 minor. For compatibility it is the last
- // Qt 5 release.
- qmlRegisterModule(uri, 2, 15);
-}
-
-QT_END_NAMESPACE
diff --git a/src/settings/qtquickvirtualkeyboardsettingsplugin.h b/src/settings/qtquickvirtualkeyboardsettingsplugin.h
deleted file mode 100644
index 355a2d66..00000000
--- a/src/settings/qtquickvirtualkeyboardsettingsplugin.h
+++ /dev/null
@@ -1,50 +0,0 @@
-/****************************************************************************
-**
-** Copyright (C) 2018 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 QTQUICKVIRTUALKEYBOARDSETTINGSPLUGIN_H
-#define QTQUICKVIRTUALKEYBOARDSETTINGSPLUGIN_H
-
-#include <QQmlExtensionPlugin>
-
-QT_BEGIN_NAMESPACE
-
-class QtQuickVirtualKeyboardSettingsPlugin : public QQmlExtensionPlugin
-{
- Q_OBJECT
- Q_PLUGIN_METADATA(IID QQmlExtensionInterface_iid)
-
-public:
- QtQuickVirtualKeyboardSettingsPlugin(QObject *parent = nullptr) : QQmlExtensionPlugin(parent) { }
- void registerTypes(const char *uri) override;
-};
-
-QT_END_NAMESPACE
-
-#endif // QTQUICKVIRTUALKEYBOARDSETTINGSPLUGIN_H
-
diff --git a/src/settings/settings.pro b/src/settings/settings.pro
deleted file mode 100644
index c4d97c16..00000000
--- a/src/settings/settings.pro
+++ /dev/null
@@ -1,23 +0,0 @@
-TARGET = qtquickvirtualkeyboardsettingsplugin
-TARGETPATH = QtQuick/VirtualKeyboard/Settings
-IMPORT_VERSION = 2.$$QT_MINOR_VERSION
-QT += qml quick virtualkeyboard-private
-
-CONFIG += no_cxx_module
-
-SOURCES += \
- qtquickvirtualkeyboardsettingsplugin.cpp
-
-HEADERS += \
- qtquickvirtualkeyboardsettingsplugin.h
-
-OTHER_FILES += \
- plugins.qmltypes \
- qmldir
-
-win32 {
- QMAKE_TARGET_PRODUCT = "Qt Virtual Keyboard (Qt $$QT_VERSION)"
- QMAKE_TARGET_DESCRIPTION = "Virtual Keyboard for Qt."
-}
-
-load(qml_plugin)