aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugin/plugin.cpp
Commit message (Collapse)AuthorAgeFilesLines
* Remove the use of QT_IM_MODULEJiDe Zhang2024-04-101-2/+2
| | | | | | | | | | Sync from QPlatformInputContextFactory::requested in 8596998cb025a8338c9403f5ef9db5a23f5cc682 of qtbase to QPlatformInputContextFactory. Change-Id: I37f9762610f91a93583a67cfade029079bb2a239 Reviewed-by: Johannes Kauffmann <johanneskauffmann@hotmail.com> Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
* Purge remaining usage of Q_NULLPTRJohannes Kauffmann2022-08-281-2/+2
| | | | | | Pick-to: 6.4 Change-Id: I61aa2bbfc5131eac1fc357255ed3acaa6c24a8af Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io>
* Use SPDX license identifiersLucie Gérard2022-06-141-28/+2
| | | | | | | | | | | Replace the current license disclaimer in files by a SPDX-License-Identifier. License files are organized under LICENSES directory. Pick-to: 6.4 Task-number: QTBUG-67283 Change-Id: Iaeb3cb05cd781031a35e40f712805fa265116076 Reviewed-by: Jörg Bornemann <joerg.bornemann@qt.io>
* Port qtvirtualkeyboard to declarative type registrationJarkko Koivikko2022-04-071-75/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | - Port settings plugin to declarative type registration - Port styles plugin to declarative type registration - Dissect Components QML module from QtQuick.VirtualKeyboard Previously the QML components included in this module were located in the resources of virtualkeyboard Qt module and registered via manual type registration. Since migrating away from manual type registration, it is time to move these components out of the QtQuick.VirtualKeyboard namespace where they did not belong in the first place. They are implementation detail of the VirtualKeyboard and the VirtualKeyboard layouts. There is no use for them outside of this scope. - Add QtQuick.VirtualKeyboard.Plugins QML module - Port hangul to declarative type registrations - Port openwnn to declarative type registrations - Port tcime to declarative type registrations - Port thai to declarative type registrations - Port hunspell to declarative type registrations - Port pinyin to declarative type registrations - Port cerence to declarative type registrations - Port myscript to declarative type registrations - Add VirtualKeyboardFeatures namespace for feature detection - Remove QVirtualKeyboardInputContextPrivate::inputMethods property This is no longer needed (and cannot be supported) because of the new QML module based extensions model. Runtime feature detection is happens on the VirtualKeyboardFeatures namespace. - Remove Q_VKB_IMPORT_PLUGIN - Remove extensionloader (replaced with QML modules) This is no longer needed as all the extensions have been ported to QML modules. - Remove QML dependency from platforminputcontext plugin Since all the extra functionality (extensions, qml types registrations) have been moved out of this plugin, we can remove the dependency to QML module too. - Move keyboard layouts to Layouts plugin (but keep them as resources) Previously the keyboard layouts were located in the resources of the QtQuick.VirtualKeyboard plugin. This change moves them to new QtQuick.VirtualKeyboard.Layouts QML module. This module is loaded by explicit (qmldir) import at QtQuick.VirtualKeyboard plugin. We cannot make the layouts as compiled qml, because it will prevent from using resource path overload currently used by vendor plugins to override keyboard layouts. - Move builtin styles to new module QtQuick.VirtualKeyboard.Styles.Builtin No changes to style loading mechanism - the styles are still loaded using Loader. The internal resource path for builtin styles changed from :/QtQuick/VirtualKeyboard/content/styles to :/QtQuick/VirtualKeyboard/Styles/Builtin This has no impact on external users, because it can already specify custom style path using settings API. [ChangeLog] Virtual Keyboard extension mechanism was replaced with QML modules. Previously the virtual keyboard was using plugin mechanism with custom interface to load extensions. With the introduction of declarative type registration, this interface became obsolete. All of the existing virtual keyboard extensions are now registered as standard QML modules, loaded implicitly by the QtQuick.VirtualKeyboard module. This change does not impact the users of the virtual keyboard public API. Task-number: QTBUG-100783 Fixes: QTBUG-92212 Fixes: QTBUG-100705 Fixes: QTBUG-95680 Fixes: QTBUG-95660 Change-Id: Id2f87670d2678fa0b18bae56ee172bf206d99d3a Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Plugins: Fix the port to QPluginParsedMetaData and CBORThiago Macieira2021-11-091-4/+4
| | | | | | | | | Commit c78599e1777168050d03f76e93f653669c94c023 was incomplete. Change-Id: I3eb1bd30e0124f89a052fffd16a6f2d82ad568af Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Volker Hilsheimer <volker.hilsheimer@qt.io> Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi>
* Disable Windows IME when Qt Virtual Keyboard plugin is loadedJarkko Koivikko2021-06-151-0/+9
| | | | | | | | | | | | | | Windows IME (TSF) causes a crash when used together with Qt Virtual Keyboard. [ChangeLog] Disable Windows IME when Qt Virtual Keyboard plugin is loaded Fixes: QTBUG-93042 Pick-to: 6.2 6.1 5.15 Change-Id: If3d4d192147b316e198fc060863c615c12f7a3a1 Reviewed-by: Friedemann Kleint <Friedemann.Kleint@qt.io> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Allow multiple input methods in the extension metadataJarkko Koivikko2021-02-041-8/+30
| | | | | | | | | | Allow the InputMethod property of the metadata to contain either a string value, or an array of strings. This allows the extension to host multiple input methods. Pick-to: 6.1 Change-Id: Id4041c26e365b9c604b068c9e43dca2114b5c27f Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Fix static build when using disable-layouts and no-builtin-styleMitch Curtis2020-05-061-0/+4
| | | | | | | | | | | When building the keyboard statically with CONFIG+=disable-layouts and CONFIG+=no-builtin-style, there would be linker errors due to Q_INIT_RESOURCE being defined unconditionally. Put these lines behind Change-Id: Id181cf078237abb54893675c9efaf06b4860678d Fixes: QTBUG-83187 Reviewed-by: Risto Avila <risto.avila@qt.io> Reviewed-by: Andy Shaw <andy.shaw@qt.io>
* ExtensionLoader: Use a QMultiHashFriedemann Kleint2020-01-031-1/+1
| | | | | | | | | | | Fix deprecation warnings: extensionloader.cpp:65:84: warning: ‘QList<ValueType> QHash<K, V>::values(const Key&) const [with Key = QString; T = QJsonObject]’ is deprecated: Use QMultiHash for hashes storing multiple values with the same key. [-Wdeprecated-declarations] extensionloader.cpp:108:44: warning: ‘QHash<K, V>::iterator QHash<K, V>::insertMulti(const Key&, const T&) [with Key = QString; T = QJsonObject]’ is deprecated: Use QMultiHash for hashes storing multiple values with the same key. [-Wdeprecated-declarations] plugin.cpp:82:63: warning: 'QList<T> QHash<K, V>::uniqueKeys() const [with Key = QString; T = QJsonObject]' is deprecated: Use QMultiHash for hashes storing multiple values with the same key. [-Wdeprecated-declarations] Change-Id: I55d3fdd1d46cb61ba7eee3b9f261acf2dfcda7ea Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Lars Knoll <lars.knoll@qt.io>
* QtQuick.VirtualKeyboard.Plugins: automatically register latest versionMitch Curtis2019-12-041-0/+3
| | | | | | | | | Follow up to 67e497ff407441515761b312599cb4ad6b61adad, and a pre-requisite for bumping all versions in QML import statements. Change-Id: I1f8d788d7c52c979dde2b3fb3141583cece7a286 Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Register QtQuick.VirtualKeyboard.Plugins version 2.3Andy Shaw2019-01-101-0/+1
| | | | | | | | | | Since the virtual keyboard is still usable even without the plugins, then it should have the latest version registered here instead of depending on the plugins to do it for us. Change-Id: I109e2f452341defbd78831235a35c494d5e44ff6 Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Fix string castJarkko Koivikko2018-09-071-2/+2
| | | | | | | | Enforce proper string cast using QT_NO_CAST_TO_ASCII and friends. Change-Id: I039b23144c8d57f12aad1c27f29654b382078222 Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Fix resource initialization in static buildJarkko Koivikko2018-09-061-0/+4
| | | | | | | | | | | | | | | | | Resources used by qtvirtualkeyboard must (still) be initialized manually in static build. The reason for this is that the resources are located in the virtualkeyboard module, not in the plugin. Layouts resources in plugins must have unique name. This change renames the layouts resource file in each plugin. Otherwise the Q_INIT_RESOURCE does not work, since all use the same name. Finally, rename the static resource files to avoid using too generic name and clash with the user application. Change-Id: I53054605f14ff8a7b61ce2736f61e456b6c3ee88 Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Move QML types registration to import modulesJarkko Koivikko2018-09-061-136/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | This change moves the QML type registration from platform input context plugin to respective QML plugins: QtQuick.VirtualKeyboard (import.pro) QtQuick.VirtualKeyboard.Settings (settings.pro) Input method types (e.g. from the virtual keyboard plugins) are still registered in the qtvirtualkeyboard module, but with new URI: QtQuick.VirtualKeyboard.Plugins (plugin.pro) This change is necessary, because the Quick.VirtualKeyboard URI is now reserved for the QML module. Like before, the Quick.VirtualKeyboard module cannot be used without setting QT_IM_MODULE=qtvirtualkeyboard environment variable. The main motivation for this change was to make plugins.qmltypes generation possible for C++ based QML types. Change-Id: Ieb449eb73e0fa33e9a1686d471cc4284982ea1bd Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Prefix non-namespaced header file names with qvirtualkeyboardJarkko Koivikko2018-08-271-5/+5
| | | | | | Change-Id: Idf2447736ef72fa0fb4dfeacc3386ed7b4fe41c9 Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* Remove QtVirtualKeyboard namespace from the public APIJarkko Koivikko2018-08-271-17/+12
| | | | | | | | | | | | | | | | | This change removes the QtVirtualKeyboard namespace from the public API. This change was suggested in the API review. Use of namespace is uncommon in a public Qt module. Prefixed names are preferred instead. [ChangeLog] Removed QtVirtualKeyboard namespace from the public C++ API and prefixed class names with QVirtualKeyboard. The new class names are QVirtualKeyboardAbstractInputMethod, QVirtualKeyboardInputContext, QVirtualKeyboardInputEngine, QVirtualKeyboardSelectionListModel and QVirtualKeyboardTrace. Change-Id: I52d35090b544dc7e8c8c8e5632ce24c455730755 Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* Trim InputContext APIJarkko Koivikko2018-08-271-0/+3
| | | | | | | | | | | | | | | | | The purpose of this change is to reduce the number of public API in the virtual keyboard. This change moves a lot of stuff from InputContext to ShiftHandler and InputContextPrivate and exposes the private API to QML through InputContext.priv property. Almost all the unrelevant APIs were moved away, except some properties and methods needed by selection control. These were left intact because moving them is not trivial. Change-Id: I1f23f5f54bc21c68996cb220a66d16d34b5d14ce Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Frederik Gladhorn <frederik.gladhorn@qt.io>
* Add user dictionary and learning for HunspellJarkko Koivikko2018-08-161-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This change adds user dictionary and learning function for Hunspell. Learning happens when the user selects the first candidate from the word candidate list (or presses the space key while the first candidate is selected) and the word does not exist in the default dictionary. User can remove a word from user dictionary by long pressing an item on the word candidate list (and selecting from the menu). This also allows the user to block words originating from the system dictionary. The Hunspell user dictionary is hard limited to 100 words. However, when user enters a word again (which exists in the user dictionary), it will be prioritized in the dictionary, so the most frequent words stay in the dictionary. The dictionaries are language and locale specific and are stored in: QStandardPaths::GenericConfigLocation + "/qtvirtualkeyboard/hunspell" The dictionaries are UTF-8 encoded text files and contain one word per line. The same directory also contains the blacklist files (which also exist per language and locale). These files contain words which are blacklisted from the default dictionary. [ChangeLog] Added user dictionary and learning for Hunspell Change-Id: Ib0fc70f7eaa14ec49b74000144a75c59313ac0fb Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Add support for making Trace transparentYuntaek Rim2018-08-161-0/+2
| | | | | | | | | | Added new property "opacity" for Trace. [ChangeLog][Trace] Added opacity property. Change-Id: Ie1cc5fe2567e4223bfc64c67c6ead11e38e46193 Reviewed-by: Jarkko Koivikko <jarkko.koivikko@code-q.fi> Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
* Modularize virtual keyboard and add an extension interfaceJarkko Koivikko2018-08-061-0/+221
With the extension interface it is possible to add new input method and/or languages without recompiling the Qt Virtual Keyboard plugin itself. The existing input methods are now isolated into plugins. So installing a new input method is a matter of copying the corresponding extension plugin to the plugins/virtualkeyboard directory (and any collateral required by the extension plugin itself). This change also renames the HunspellInputMethod to DefaultInputMethod. This change is necessary because some other extension plugin may want to provide the default input method instead. Implementation plan =================== [x] Create virtualkeyboard-private module [x] Create plugin library [x] Define interface for input method plugin [x] Define interface for keyboard layouts [x] Move existing input methods and layouts to plugins [x] HangulInputMethod [x] HunspellInputMethod [x] Maybe create a private library for sharing between HunspellInputMethod and LipiInputMethod [x] LipiInputMethod [x] OpenWnnInputMethod [x] PinyinInputMethod [x] T9WriteInputMethod [x] TCInputMethod [o] Rename some C++ classes (too generic name?) [x] Think again replacing the QtVirtualKeyboard namespace [x] Update documentation [x] General instructions for creating a plugin [x] For the C++ interfaces too (previously removed) [ChangeLog][Important Behavior Changes] Introduce an extension interface for the virtual keyboard. All the current input methods and some special keyboard layouts (e.g. Hunspell, OpenWnn, etc.) have been moved to extensions. The extension interface allows third party to create a new input method without having to modify or rebuild the virtual keyboard. In addition, this change makes it possible to add features and languages independently by copying the desired extension to the system. [ChangeLog][Important Behavior Changes] Introduce a virtualkeyboard module, which can be linked against an extension plugin. This module provides the C++ API necessary for creating an input method. [ChangeLog][Important Behavior Changes] Wrap the entire virtual keyboard API into Qt namespace (e.g. QT_BEGIN_NAMESPACE/QT_END_NAMESPACE). Task-number: QTBUG-57602 Change-Id: I449f4429109f596a7a1df7517c81f97d4aada27c Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>