File indexing completed on 2024-05-19 05:32:33
0001 /* 0002 SPDX-FileCopyrightText: 2014 Martin Gräßlin <mgraesslin@kde.org> 0003 SPDX-FileCopyrightText: 2020 David Edmundson <davidedmundson@kde.org> 0004 0005 SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL 0006 */ 0007 #pragma once 0008 0009 #include "kwin_export.h" 0010 0011 #include "abstract_data_source.h" 0012 #include "datadevicemanager.h" 0013 0014 namespace KWin 0015 { 0016 class DataSourceInterfacePrivate; 0017 class XdgToplevelDragV1Interface; 0018 0019 /** 0020 * @brief Represents the Resource for the wl_data_source interface. 0021 */ 0022 class KWIN_EXPORT DataSourceInterface : public AbstractDataSource 0023 { 0024 Q_OBJECT 0025 public: 0026 virtual ~DataSourceInterface(); 0027 0028 void accept(const QString &mimeType) override; 0029 void requestData(const QString &mimeType, qint32 fd) override; 0030 void cancel() override; 0031 0032 QStringList mimeTypes() const override; 0033 0034 static DataSourceInterface *get(wl_resource *native); 0035 0036 /** 0037 * @returns The Drag and Drop actions supported by this DataSourceInterface. 0038 */ 0039 DataDeviceManagerInterface::DnDActions supportedDragAndDropActions() const override; 0040 DataDeviceManagerInterface::DnDAction selectedDndAction() const override; 0041 void dropPerformed() override; 0042 void dndFinished() override; 0043 void dndAction(DataDeviceManagerInterface::DnDAction action) override; 0044 void dndCancelled() override; 0045 0046 bool isDndCancelled() const; 0047 bool isDropPerformed() const; 0048 0049 wl_resource *resource() const; 0050 0051 wl_client *client() const override; 0052 0053 bool isAccepted() const override; 0054 void setAccepted(bool accepted); 0055 0056 XdgToplevelDragV1Interface *xdgToplevelDrag() const; 0057 0058 private: 0059 friend class DataDeviceManagerInterfacePrivate; 0060 friend class DataSourceInterfacePrivate; 0061 explicit DataSourceInterface(wl_resource *resource); 0062 0063 std::unique_ptr<DataSourceInterfacePrivate> d; 0064 }; 0065 0066 } 0067 0068 Q_DECLARE_METATYPE(KWin::DataSourceInterface *)