File indexing completed on 2024-12-01 12:36:31
0001 /* 0002 This file is part of the KDE project 0003 SPDX-FileCopyrightText: 2009 Harald Hvaal <haraldhv@stud.ntnu.no> 0004 0005 SPDX-License-Identifier: LGPL-2.0-only OR LGPL-3.0-only 0006 */ 0007 #ifndef _KIO_DNDPOPUPMENUPLUGIN_H_ 0008 #define _KIO_DNDPOPUPMENUPLUGIN_H_ 0009 0010 #include "kiowidgets_export.h" 0011 #include <QList> 0012 #include <QObject> 0013 0014 class KFileItemListProperties; 0015 class QUrl; 0016 class QAction; 0017 0018 namespace KIO 0019 { 0020 /** 0021 * @class KIO::DndPopupMenuPlugin dndpopupmenuplugin.h <KIO/DndPopupMenuPlugin> 0022 * 0023 * Base class for drag and drop popup menus 0024 * 0025 * This can be used for adding dynamic menu items to the normal copy/move/link 0026 * here menu appearing in KIO-based file managers. In the setup method you may check 0027 * the properties of the dropped files, and if applicable, append your own 0028 * QAction that the user may trigger in the menu. 0029 * 0030 * The plugin should have Json metadata and be installed into kf5/kio_dnd/. 0031 * 0032 * @author Harald Hvaal <metellius@gmail.com> 0033 * @since 5.6 0034 */ 0035 class KIOWIDGETS_EXPORT DndPopupMenuPlugin : public QObject 0036 { 0037 Q_OBJECT 0038 public: 0039 /** 0040 * Constructor. 0041 */ 0042 DndPopupMenuPlugin(QObject *parent); 0043 ~DndPopupMenuPlugin() override; 0044 0045 /** 0046 * Implement the setup method in the plugin in order to create actions 0047 * in the given actionCollection and add it to the menu using menu->addAction(). 0048 * The popup menu will be set as parent of the actions. 0049 * 0050 * @param popupMenuInfo all the information about the source URLs being dropped 0051 * @param destination the URL to where the file(s) were dropped 0052 * @return a QList with the QActions that will be plugged into the menu. 0053 */ 0054 virtual QList<QAction *> setup(const KFileItemListProperties &popupMenuInfo, const QUrl &destination) = 0; 0055 }; 0056 0057 } 0058 0059 #endif