1 | /* |
2 | This file is part of the KDE project |
3 | SPDX-FileCopyrightText: 2009 Harald Hvaal <haraldhv@stud.ntnu.no> |
4 | |
5 | SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only |
6 | */ |
7 | #ifndef _KIO_DNDPOPUPMENUPLUGIN_H_ |
8 | #define |
9 | |
10 | #include "kiogui_export.h" |
11 | #include <QList> |
12 | #include <QObject> |
13 | |
14 | class KFileItemListProperties; |
15 | class QUrl; |
16 | class QAction; |
17 | |
18 | namespace KIO |
19 | { |
20 | /** |
21 | * @class KIO::DndPopupMenuPlugin dndpopupmenuplugin.h <KIO/DndPopupMenuPlugin> |
22 | * |
23 | * Base class for drag and drop popup menus |
24 | * |
25 | * This can be used for adding dynamic menu items to the normal copy/move/link |
26 | * here menu appearing in KIO-based file managers. In the setup method you may check |
27 | * the properties of the dropped files, and if applicable, append your own |
28 | * QAction that the user may trigger in the menu. |
29 | * |
30 | * The plugin should have Json metadata and be installed into kf6/kio_dnd/. |
31 | * |
32 | * @author Harald Hvaal <metellius@gmail.com> |
33 | * @since 5.6 |
34 | */ |
35 | class KIOGUI_EXPORT : public QObject |
36 | { |
37 | Q_OBJECT |
38 | public: |
39 | /** |
40 | * Constructor. |
41 | */ |
42 | (QObject *parent); |
43 | () override; |
44 | |
45 | /** |
46 | * Implement the setup method in the plugin in order to create actions |
47 | * in the given actionCollection and add it to the menu using menu->addAction(). |
48 | * The popup menu will be set as parent of the actions. |
49 | * |
50 | * @param popupMenuInfo all the information about the source URLs being dropped |
51 | * @param destination the URL to where the file(s) were dropped |
52 | * @return a QList with the QActions that will be plugged into the menu. |
53 | */ |
54 | virtual QList<QAction *> (const KFileItemListProperties &, const QUrl &destination) = 0; |
55 | }; |
56 | |
57 | } |
58 | |
59 | #endif |
60 | |