KWayland

dataoffer.h
1 /*
2  SPDX-FileCopyrightText: 2014 Martin Gräßlin <[email protected]>
3 
4  SPDX-License-Identifier: LGPL-2.1-only OR LGPL-3.0-only OR LicenseRef-KDE-Accepted-LGPL
5 */
6 #ifndef WAYLAND_DATAOFFER_H
7 #define WAYLAND_DATAOFFER_H
8 
9 #include <QObject>
10 
11 #include "KWayland/Client/kwaylandclient_export.h"
12 
13 #include "datadevicemanager.h"
14 
15 struct wl_data_offer;
16 
17 class QMimeType;
18 
19 namespace KWayland
20 {
21 namespace Client
22 {
23 class DataDevice;
24 
25 /**
26  * @short Wrapper for the wl_data_offer interface.
27  *
28  * This class is a convenient wrapper for the wl_data_offer interface.
29  * The DataOffer gets created by DataDevice.
30  *
31  * @see DataOfferManager
32  **/
33 class KWAYLANDCLIENT_EXPORT DataOffer : public QObject
34 {
35  Q_OBJECT
36 public:
37  ~DataOffer() override;
38 
39  /**
40  * Releases the wl_data_offer interface.
41  * After the interface has been released the DataOffer instance is no
42  * longer valid and can be setup with another wl_data_offer interface.
43  **/
44  void release();
45  /**
46  * Destroys the data held by this DataOffer.
47  * This method is supposed to be used when the connection to the Wayland
48  * server goes away. If the connection is not valid anymore, it's not
49  * possible to call release anymore as that calls into the Wayland
50  * connection and the call would fail. This method cleans up the data, so
51  * that the instance can be deleted or set up to a new wl_data_offer interface
52  * once there is a new connection available.
53  *
54  * This method is automatically invoked when the Registry which created this
55  * DataOffer gets destroyed.
56  *
57  * @see release
58  **/
59  void destroy();
60  /**
61  * @returns @c true if managing a wl_data_offer.
62  **/
63  bool isValid() const;
64 
65  QList<QMimeType> offeredMimeTypes() const;
66 
67  /**
68  * Indicates that the client can accept data of the given @a mimeType.
69  * The @a serial parameter specifies the serial number of the corresponding
70  * dragEntered() event.
71  *
72  * @see DataDevice::dragEntered
73  */
74  void accept(const QMimeType &mimeType, quint32 serial);
75  /**
76  * Indicates that the client can accept data of the given @a mimeType.
77  * The @a serial parameter specifies the serial number of the corresponding
78  * dragEntered() event.
79  *
80  * @see DataDevice::dragEntered
81  */
82  void accept(const QString &mimeType, quint32 serial);
83 
84  void receive(const QMimeType &mimeType, qint32 fd);
85  void receive(const QString &mimeType, qint32 fd);
86 
87  /**
88  * Notifies the compositor that the drag destination successfully
89  * finished the drag-and-drop operation.
90  *
91  * After this operation it is only allowed to release the DataOffer.
92  *
93  * @since 5.42
94  **/
95  void dragAndDropFinished();
96 
97  /**
98  * The actions offered by the DataSource.
99  * @since 5.42
100  * @see sourceDragAndDropActionsChanged
101  **/
102  DataDeviceManager::DnDActions sourceDragAndDropActions() const;
103 
104  /**
105  * Sets the @p supported and @p preferred Drag and Drop actions.
106  * @since 5.42
107  **/
108  void setDragAndDropActions(DataDeviceManager::DnDActions supported, DataDeviceManager::DnDAction preferred);
109 
110  /**
111  * The currently selected drag and drop action by the compositor.
112  * @see selectedDragAndDropActionChanged
113  * @since 5.42
114  **/
115  DataDeviceManager::DnDAction selectedDragAndDropAction() const;
116 
117  operator wl_data_offer *();
118  operator wl_data_offer *() const;
119 
120 Q_SIGNALS:
121  void mimeTypeOffered(const QString &);
122  /**
123  * Emitted whenever the @link{sourceDragAndDropActions} changed, e.g. on enter or when
124  * the DataSource changes the supported actions.
125  * @see sourceDragAndDropActions
126  * @since 5.42
127  **/
128  void sourceDragAndDropActionsChanged();
129  /**
130  * Emitted whenever the selected drag and drop action changes.
131  * @see selectedDragAndDropAction
132  * @since 5.42
133  **/
134  void selectedDragAndDropActionChanged();
135 
136 private:
137  friend class DataDevice;
138  explicit DataOffer(DataDevice *parent, wl_data_offer *dataOffer);
139  class Private;
141 };
142 
143 }
144 }
145 
146 Q_DECLARE_METATYPE(KWayland::Client::DataOffer *)
147 
148 #endif
virtual void release(quint64 objid)
DnDAction
Drag and Drop actions supported by DataSource and DataOffer.
DataDevice allows clients to share data by copy-and-paste and drag-and-drop.
Definition: datadevice.h:32
Wrapper for the wl_data_offer interface.
Definition: dataoffer.h:33
This file is part of the KDE documentation.
Documentation copyright © 1996-2023 The KDE developers.
Generated on Tue Feb 7 2023 03:56:21 by doxygen 1.8.17 written by Dimitri van Heesch, © 1997-2006

KDE's Doxygen guidelines are available online.