KApplicationTrader Namespace

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

Functions

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

Detailed Description

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

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.

Function Documentation

[since KService 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 KService 5.68.

[since KService 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 KService 5.68.

See also setPreferredService().

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

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

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

Returns a list of services that satisfy the query

This function was introduced in KService 5.68.

[since KService 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'

filter 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 KService 5.68.

[since KService 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 KService 5.101.

See also preferredService().