KApplicationTrader Namespace

The application trader is a convenient way to find installed applications based on specific criteria (association with a MIME type, name contains Foo, etc.). More...

Header: #include <KApplicationTrader>
CMake: find_package(KF6 REQUIRED COMPONENTS Service)
target_link_libraries(mytarget PRIVATE KF6::Service)

Types

Functions

(since 5.68) bool isSubsequence(const QString &pattern, const QString &text, Qt::CaseSensitivity cs = Qt::CaseSensitive)
(since 5.68) KService::Ptr preferredService(const QString &mimeType)
(since 5.68) KService::List query(KApplicationTrader::FilterFunc filterFunc)
(since 5.68) KService::List queryByMimeType(const QString &mimeType, KApplicationTrader::FilterFunc filterFunc = {})
(since 5.101) void setPreferredService(const QString &mimeType, const KService::Ptr service)

Detailed Description

Example: say that you want to get the list of all applications that can handle PNG images. The code would look like:

KService::List lst = KApplicationTrader::queryByMimeType("image/png");

If you want to get the preferred application for image/png you would use:

KService::Ptr service = KApplicationTrader::preferredService("image/png");

See also KService.

Type Documentation

[alias] KApplicationTrader::FilterFunc

Filter function, used for filtering results of query and queryByMimeType.

Function Documentation

[since 5.68] bool KApplicationTrader::isSubsequence(const QString &pattern, const QString &text, Qt::CaseSensitivity cs = Qt::CaseSensitive)

Returns true if pattern matches a subsequence of the string text. For instance the pattern "libremath" matches the text "LibreOffice Math", assuming cs is Qt::CaseInsensitive.

This can be useful from your filter function, e.g. with text being service->name().

This function was introduced in 5.68.

[since 5.68] KService::Ptr KApplicationTrader::preferredService(const QString &mimeType)

Returns the preferred service for mimeType

This a convenience method for queryByMimeType(mimeType).at(0), with a check for empty.

mimeType the MIME type (see query())

Returns the preferred service, or nullptr if no service is available

This function was introduced in 5.68.

See also setPreferredService().

[since 5.68] KService::List KApplicationTrader::query(KApplicationTrader::FilterFunc filterFunc)

This method returns a list of services (applications) that match a given filter.

filterFunc a callback function that returns true if the application should be selected and false if it should be skipped.

Returns a list of services that satisfy the query

This function was introduced in 5.68.

[since 5.68] KService::List KApplicationTrader::queryByMimeType(const QString &mimeType, KApplicationTrader::FilterFunc filterFunc = {})

This method returns a list of services (applications) which are associated with a given MIME type.

mimeType a MIME type like 'text/plain' or 'text/html'

filterFunc a callback function that returns true if the application should be selected and false if it should be skipped. Do not return true for all services, this would return the complete list of all installed applications (slow).

Returns a list of services that satisfy the query, sorted by preference (preferred service first)

This function was introduced in 5.68.

[since 5.101] void KApplicationTrader::setPreferredService(const QString &mimeType, const KService::Ptr service)

Changes the preferred service for mimeType to service

You may need to rebuild KSyCoca for the change to be reflected

mimeType the MIME type

service the service to set as the preferred one

This function was introduced in 5.101.

See also preferredService().