1 | /* |
2 | This file is part of the KDE project |
3 | SPDX-FileCopyrightText: 2015 Olivier Goffart <ogoffart@woboq.com> |
4 | |
5 | SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL |
6 | */ |
7 | |
8 | #ifndef KOVERLAYICONPLUGIN_H |
9 | #define KOVERLAYICONPLUGIN_H |
10 | |
11 | #include "kiocore_export.h" |
12 | #include <QObject> |
13 | |
14 | class QUrl; |
15 | |
16 | /** |
17 | * @class KOverlayIconPlugin koverlayiconplugin.h <KOverlayIconPlugin> |
18 | * |
19 | * @brief Base class for overlay icon plugins. |
20 | * Enables file managers to show custom overlay icons on files. |
21 | * |
22 | * This plugin can be created and installed through kcoreaddons_add_plugin |
23 | * @code |
24 | * kcoreaddons_add_plugin(myoverlayplugin SOURCES myoverlayplugin.cpp INSTALL_NAMESPACE "kf6/overlayicon") |
25 | * target_link_libraries(myoverlayplugin KF6::KIOCore) |
26 | * @endcode |
27 | * The C++ file should look like this: |
28 | * @code |
29 | #include <KOverlayIconPlugin> |
30 | |
31 | class MyOverlayPlugin : public KOverlayIconPlugin |
32 | { |
33 | Q_PLUGIN_METADATA(IID "org.kde.overlayicon.myplugin") |
34 | Q_OBJECT |
35 | |
36 | public: |
37 | MyOverlayPlugin() { |
38 | } |
39 | |
40 | QStringList getOverlays(const QUrl &url) override { |
41 | // Implement your logic |
42 | } |
43 | }; |
44 | |
45 | #include "myoverlayplugin.moc" |
46 | * @endcode |
47 | * @since 5.16 |
48 | */ |
49 | class KIOCORE_EXPORT KOverlayIconPlugin : public QObject |
50 | { |
51 | Q_OBJECT |
52 | public: |
53 | explicit KOverlayIconPlugin(QObject *parent = nullptr); |
54 | ~KOverlayIconPlugin() override; |
55 | |
56 | /** |
57 | * Returns a list of overlay icons to add to a file |
58 | * This can be a path to an icon, or the icon name |
59 | * |
60 | * This function is called from the main thread and must not block. |
61 | * It is recommended to have a cache. And if the item is not in cache |
62 | * just return an empty list and call the overlaysChanged when the |
63 | * information is available. |
64 | */ |
65 | virtual QStringList getOverlays(const QUrl &item) = 0; |
66 | Q_SIGNALS: |
67 | /** |
68 | * Emit this signal when the list of overlay icons changed for a given URL |
69 | */ |
70 | void overlaysChanged(const QUrl &url, const QStringList &overlays); |
71 | }; |
72 | |
73 | #endif |
74 | |