KAbstractFileItemActionPlugin Class
Base class for KFileItemAction plugins. More...
Header: | #include <KAbstractFileItemActionPlugin> |
CMake: | find_package(KF6 REQUIRED COMPONENTS KIO) target_link_libraries(mytarget PRIVATE KF6::KIOWidgets) |
Since: | 4.6.1 |
Inherits: | QObject |
Public Functions
virtual QList<QAction *> | actions(const KFileItemListProperties &fileItemInfos, QWidget *parentWidget) = 0 |
Signals
(since 5.82) void | error(const QString &errorMessage) |
Detailed Description
KFileItemAction plugins allow dynamic features to be added to the context menus for files and directories when browsing.
Most filetype-based popup menu items can be implemented using servicemenus linked to MIME types, and that should be the preferred way of doing this. However, complex scenarios such as showing submenus with a variable number of actions or only showing an item if exactly two files are selected need to be implemented as a KFileItemAction plugin.
To create such a plugin, subclass KAbstractFileItemActionPlugin and implement actions() to return the actions to want to add to the context menu. Then create a plugin in the usual KPluginFactory based way:
K_PLUGIN_CLASS_WITH_JSON(MyActionPlugin, "myactionplugin.json") #include <thisfile.moc>
A desktop file is necessary to register the plugin with the KDE plugin system:
[Desktop Entry] Type=Service Name=My fancy action plugin X-KDE-Library=myactionplugin X-KDE-ServiceTypes=KFileItemAction/Plugin MimeType=some/mimetype;
Note the KFileItemAction/Plugin service type which is used by KFileItemActions::addServicePluginActionsTo() to load all available plugins and the MimeType field which specifies for which types of file items the setup() method should be called.
The desktop file contents must also be compiled into the plugin as JSON data. The following CMake code builds and installs the plugin:
kcoreaddons_add_plugin(myactionplugin SOURCES myactionplugin.cpp INSTALL_NAMESPACE "kf5/kfileitemaction") kcoreaddons_desktop_to_json(myactionplugin myactionplugin.desktop) # generate the json file target_link_libraries(myactionplugin KF5::KIOWidgets)
Note: The plugin should be installed in the "kf5/kfileitemaction" subfolder of $QT_PLUGIN_PATH.
Note: If the plugin has a lower priority and should show up in the "Actions" submenu, you can set the X-KDE-Show-In-Submenu property to true.
Member Function Documentation
[pure virtual]
QList<QAction *> KAbstractFileItemActionPlugin::actions(const KFileItemListProperties &fileItemInfos, QWidget *parentWidget)
Implement the actions method in the plugin in order to create actions.
fileItemInfos Information about the selected file items.
parentWidget To be used as parent for the returned QActions
Returns a list of actions to be added to a contextual menu for the file items.
[signal, since 5.82]
void KAbstractFileItemActionPlugin::error(const QString &errorMessage)
Emits an error which will be displayed to the user
This function was introduced in 5.82.