KPluginMetaData Class
Header: | #include <KPluginMetaData> |
CMake: | find_package(KF6 REQUIRED COMPONENTS CoreAddons) target_link_libraries(mytarget PRIVATE KF6::CoreAddons) |
Since: | 5.1 |
Public Types
(since 5.91) enum | KPluginMetaDataOption { AllowEmptyMetaData, CacheMetaData } |
flags | KPluginMetaDataOptions |
Public Functions
KPluginMetaData() | |
(since 6.0) | KPluginMetaData(const QJsonObject &metaData, const QString &fileName) |
KPluginMetaData(const QPluginLoader &loader, KPluginMetaData::KPluginMetaDataOptions options = {}) | |
KPluginMetaData(const QString &pluginFile, KPluginMetaData::KPluginMetaDataOptions options = {}) | |
QList<KAboutPerson> | authors() const |
(since 5.99) QString | bugReportUrl() const |
QString | category() const |
(since 5.18) QString | copyrightText() const |
QString | description() const |
QString | fileName() const |
(since 5.12) QStringList | formFactors() const |
QString | iconName() const |
(since 5.89) bool | isEnabled(const T &config) const |
bool | isEnabledByDefault() const |
(since 5.8) bool | isHidden() const |
(since 5.89) bool | isStaticPlugin() const |
bool | isValid() const |
QString | license() const |
(since 5.73) QString | licenseText() const |
(since 5.16) QStringList | mimeTypes() const |
QString | name() const |
(since 5.18) QList<KAboutPerson> | otherContributors() const |
QString | pluginId() const |
QJsonObject | rawData() const |
(since 5.66) bool | supportsMimeType(const QString &mimeType) const |
(since 5.18) QList<KAboutPerson> | translators() const |
QString | value(const QString &key, const QString &defaultValue = QString()) const |
(since 5.88) bool | value(const QString &key, bool defaultValue) const |
(since 5.88) QStringList | value(const QString &key, const QStringList &defaultValue) const |
(since 5.88) int | value(const QString &key, int defaultValue) const |
QString | version() const |
QString | website() const |
Static Public Members
(since 5.84) KPluginMetaData | findPluginById(const QString &directory, const QString &pluginId, KPluginMetaData::KPluginMetaDataOptions options = {}) |
(since 5.86) QList<KPluginMetaData> | findPlugins(const QString &directory, std::function<bool (const KPluginMetaData &)> filter = {}, KPluginMetaData::KPluginMetaDataOptions options = {}) |
(since 5.91) KPluginMetaData | fromJsonFile(const QString &jsonFile) |
Detailed Description
This class allows easily accessing some standardized values from the JSON metadata that can be embedded into Qt plugins. Additional plugin-specific metadata can be retrieved by directly reading from the QJsonObject returned by KPluginMetaData::rawData.
For embedded metadata, you should not specify an id manually. Instead the id will be derived from the file basename.
The following keys will be read from an object "KPlugin" inside the metadata JSON:
Key | Accessor function | JSON Type |
---|---|---|
Name | name() | string |
Description | description() | string |
Icon | iconName() | string |
Authors | authors() | object array (KAboutPerson) |
Category | category() | string |
License | license() | string |
Copyright | copyrightText() | string |
Id | pluginId() | string |
Version | version() | string |
Website | website() | string |
BugReportUrl | bugReportUrl() | string |
EnabledByDefault | isEnabledByDefault() | bool |
MimeTypes | mimeTypes() | string array |
FormFactors | formFactors() | string array |
Translators | translators() | object array (KAboutPerson) |
OtherContributors | otherContributors() | object array (KAboutPerson) |
The Authors, Translators and OtherContributors keys are expected to be list of objects that match the structure expected by KAboutPerson::fromJSON.
An example metadata json file could look like this:
{ "KPlugin": { "Name": "Date and Time", "Description": "Date and time by timezone", "Icon": "preferences-system-time", "Authors": [ { "Name": "Aaron Seigo", "Email": "aseigo@kde.org" } ], "Category": "Date and Time", "EnabledByDefault": "true", "License": "LGPL", "Version": "1.0", "Website": "https://plasma.kde.org/" } }
See also KAboutPerson::fromJSON().
Member Type Documentation
[since 5.91]
enum KPluginMetaData::KPluginMetaDataOption
flags KPluginMetaData::KPluginMetaDataOptions
Options for creating a KPluginMetaData object.
Constant | Value | Description |
---|---|---|
KPluginMetaData::AllowEmptyMetaData | 1 | Plugins with empty metaData are considered valid |
KPluginMetaData::CacheMetaData (since KCoreAddons 6.0) | 2 | If KCoreAddons should keep metadata in cache. This makes querying the namespace again faster. Consider using this if you need revalidation of plugins |
This enum was introduced in 5.91.
The KPluginMetaDataOptions type is a typedef for QFlags<KPluginMetaDataOption>. It stores an OR combination of KPluginMetaDataOption values.
Member Function Documentation
KPluginMetaData::KPluginMetaData()
Creates an invalid KPluginMetaData instance
[since 6.0]
KPluginMetaData::KPluginMetaData(const QJsonObject &metaData, const QString &fileName)
Creates a KPluginMetaData from a QJsonObject holding the metadata and a file name This can be used if the data is not retrieved from a Qt C++ plugin library but from some other source.
metaData the JSON metadata to use for this object
pluginFile the file that the plugin can be loaded from
This function was introduced in 6.0.
KPluginMetaData::KPluginMetaData(const QPluginLoader &loader, KPluginMetaData::KPluginMetaDataOptions options = {})
Reads the plugin metadata from a QPluginLoader instance. You must call QPluginLoader::setFileName() or use the appropriate constructor on loader before calling this.
option Added in 6.0, see enum docs
KPluginMetaData::KPluginMetaData(const QString &pluginFile, KPluginMetaData::KPluginMetaDataOptions options = {})
Reads the plugin metadata from a plugin which can be loaded from file.
Platform-specific library suffixes may be omitted since file will be resolved using the same logic as QPluginLoader.
See also QPluginLoader::setFileName().
QList<KAboutPerson> KPluginMetaData::authors() const
Returns the author(s) of this plugin.
Note: Getter function for property authors.
[since 5.99]
QString KPluginMetaData::bugReportUrl() const
Returns the website where people can report a bug found in this plugin
Note: Getter function for property bugReportUrl.
This function was introduced in 5.99.
QString KPluginMetaData::category() const
Returns the categories of this plugin (e.g. "playlist/skin").
Note: Getter function for property category.
[since 5.18]
QString KPluginMetaData::copyrightText() const
Returns a short copyright statement
Note: Getter function for property copyrightText.
This function was introduced in 5.18.
QString KPluginMetaData::description() const
Returns a short description of the plugin.
Note: Getter function for property description.
QString KPluginMetaData::fileName() const
Returns the path to the plugin. When the KPluginMetaData(QJsonObject, QString) constructor is used, the string is not modified. Otherwise, the path is resolved using QPluginLoader. For static plugins the fileName is the namespace and pluginId concatenated
Note: It is not guaranteed that this is a valid path to a shared library (i.e. loadable by QPluginLoader) since the metadata could also refer to a non-C++ plugin.
Note: Getter function for property fileName.
[static, since 5.84]
KPluginMetaData KPluginMetaData::findPluginById(const QString &directory, const QString &pluginId, KPluginMetaData::KPluginMetaDataOptions options = {})
directory The directory to search for plugins. If a relative path is given for directory, all entries of QCoreApplication::libraryPaths() will be checked with directory appended as a subdirectory. If an absolute path is given only that directory will be searched. @note Check if the returned KPluginMetaData is valid before continuing to use it.
pluginId The Id of the plugin. The id should be the same as the filename, see KPluginMetaData::pluginId()
option Added in 6.0, see enum docs
This function was introduced in 5.84.
[static, since 5.86]
QList<KPluginMetaData> KPluginMetaData::findPlugins(const QString &directory, std::function<bool (const KPluginMetaData &)> filter = {}, KPluginMetaData::KPluginMetaDataOptions options = {})
Find all plugins inside directory. Only plugins which have JSON metadata will be considered.
directory The directory to search for plugins. If a relative path is given for directory, all entries of QCoreApplication::libraryPaths() will be checked with directory appended as a subdirectory. If an absolute path is given only that directory will be searched.
filter a callback function that returns true
if the found plugin should be loaded and false
if it should be skipped. If this argument is omitted all plugins will be loaded
option Weather or not allow plugins with empty metadata to be considered valid
Returns all plugins found in directory that fulfil the constraints of filter
This function was introduced in 5.86.
[since 5.12]
QStringList KPluginMetaData::formFactors() const
Returns A string list of formfactors this plugin is useful for, e.g. desktop, handset or mediacenter. The keys for this are not formally defined, though the above-mentioned values should be used when applicable.
Note: Getter function for property formFactors.
This function was introduced in 5.12.
[static, since 5.91]
KPluginMetaData KPluginMetaData::fromJsonFile(const QString &jsonFile)
Load a KPluginMetaData instance from a .json file. Unlike the constructor with a single file argument, this ensure that only JSON format plugins are loaded and any other type is rejected.
jsonFile the .json file to load
This function was introduced in 5.91.
QString KPluginMetaData::iconName() const
Returns the icon name for this plugin
Note: Getter function for property iconName.
See also QIcon::fromTheme().
[since 5.89]
template <typename T> bool KPluginMetaData::isEnabled(const T &config) const
Returns true
if the plugin is enabled in config, otherwise returns isEnabledByDefault(). This can be used in conjunction with KPluginWidget.
The config param should be a KConfigGroup object, because KCoreAddons can not depend on KConfig directly, this parameter is a template.
config KConfigGroup where the enabled state is stored
This function was introduced in 5.89.
bool KPluginMetaData::isEnabledByDefault() const
Returns whether the plugin should be enabled by default. This is only a recommendation, applications can ignore this value if they want to.
Note: Getter function for property isEnabledByDefault.
[since 5.8]
bool KPluginMetaData::isHidden() const
Returns whether this object should be hidden
Note: Getter function for property isHidden.
This function was introduced in 5.8.
[since 5.89]
bool KPluginMetaData::isStaticPlugin() const
Returns true if the instance represents a static plugin
Note: for loading plugin the plugin independently of it being static/dynamic use KPluginFactory::loadFactory or KPluginFactory::instantiatePlugin.
This function was introduced in 5.89.
bool KPluginMetaData::isValid() const
Returns whether this object holds valid information about a plugin. If this is true
pluginId() will return a non-empty string.
Note: Getter function for property isValid.
QString KPluginMetaData::license() const
Returns the short license identifier (e.g. LGPL). See KAboutLicense::byKeyword() for retrieving the full license information
Note: Getter function for property license.
[since 5.73]
QString KPluginMetaData::licenseText() const
Returns the text of the license, equivalent to KAboutLicense::byKeyword(license()).text()
Note: Getter function for property licenseText.
This function was introduced in 5.73.
[since 5.16]
QStringList KPluginMetaData::mimeTypes() const
Returns a list of MIME types this plugin can handle (e.g. "application/pdf", "image/png", etc.)
Note: Getter function for property mimeTypes.
This function was introduced in 5.16.
QString KPluginMetaData::name() const
Returns the user visible name of the plugin.
Note: Getter function for property name.
[since 5.18]
QList<KAboutPerson> KPluginMetaData::otherContributors() const
Returns a list of people that contributed to this plugin (other than the authors and translators).
Note: Getter function for property otherContributors.
This function was introduced in 5.18.
QString KPluginMetaData::pluginId() const
Returns the unique identifier within the namespace of the plugin
For C++ plugins, this ID is derived from the filename. It should not be set in the metadata explicitly.
When using KPluginMetaData::fromJsonFile or KPluginMetaData(QJsonObject, QString), the "Id" of the "KPlugin" object will be used. If unset, it will be derived from the filename.
Note: Getter function for property pluginId.
QJsonObject KPluginMetaData::rawData() const
Returns the full metadata stored inside the plugin file.
Note: Getter function for property rawData.
[since 5.66]
bool KPluginMetaData::supportsMimeType(const QString &mimeType) const
Returns true if this plugin can handle the given mimetype This is more accurate than mimeTypes().contains(mimeType) because it also takes MIME type inheritance into account.
This function was introduced in 5.66.
[since 5.18]
QList<KAboutPerson> KPluginMetaData::translators() const
Returns the translator(s) of this plugin.
Note: Getter function for property translators.
This function was introduced in 5.18.
QString KPluginMetaData::value(const QString &key, const QString &defaultValue = QString()) const
Returns the string value for key from the metadata or defaultValue if the key does not exist
if QString is not the correct type for key you should use the other overloads or KPluginMetaData::rawData
[since 5.88]
bool KPluginMetaData::value(const QString &key, bool defaultValue) const
This is an overloaded function.
This function was introduced in 5.88.
[since 5.88]
QStringList KPluginMetaData::value(const QString &key, const QStringList &defaultValue) const
Returns the value for key from the metadata or defaultValue if the key does not exist. If the type of key is string, a list containing just that string will be returned. If the type is array, the list will contain one entry for each array member.
This is an overloaded function.
This function was introduced in 5.88.
[since 5.88]
int KPluginMetaData::value(const QString &key, int defaultValue) const
This is an overloaded function.
This function was introduced in 5.88.
QString KPluginMetaData::version() const
Returns the version of the plugin.
Note: Getter function for property version.
QString KPluginMetaData::website() const
Returns the website of the plugin.
Note: Getter function for property website.