Absolute File Name: | /home/qt/qt5_coco/qt5/qtbase/src/gui/kernel/qclipboard.cpp |
Source code | Switch to Preprocessed file |
Line | Source | Count | ||||||
---|---|---|---|---|---|---|---|---|
1 | /**************************************************************************** | - | ||||||
2 | ** | - | ||||||
3 | ** Copyright (C) 2016 The Qt Company Ltd. | - | ||||||
4 | ** Contact: https://www.qt.io/licensing/ | - | ||||||
5 | ** | - | ||||||
6 | ** This file is part of the QtGui module of the Qt Toolkit. | - | ||||||
7 | ** | - | ||||||
8 | ** $QT_BEGIN_LICENSE:LGPL$ | - | ||||||
9 | ** Commercial License Usage | - | ||||||
10 | ** Licensees holding valid commercial Qt licenses may use this file in | - | ||||||
11 | ** accordance with the commercial license agreement provided with the | - | ||||||
12 | ** Software or, alternatively, in accordance with the terms contained in | - | ||||||
13 | ** a written agreement between you and The Qt Company. For licensing terms | - | ||||||
14 | ** and conditions see https://www.qt.io/terms-conditions. For further | - | ||||||
15 | ** information use the contact form at https://www.qt.io/contact-us. | - | ||||||
16 | ** | - | ||||||
17 | ** GNU Lesser General Public License Usage | - | ||||||
18 | ** Alternatively, this file may be used under the terms of the GNU Lesser | - | ||||||
19 | ** General Public License version 3 as published by the Free Software | - | ||||||
20 | ** Foundation and appearing in the file LICENSE.LGPL3 included in the | - | ||||||
21 | ** packaging of this file. Please review the following information to | - | ||||||
22 | ** ensure the GNU Lesser General Public License version 3 requirements | - | ||||||
23 | ** will be met: https://www.gnu.org/licenses/lgpl-3.0.html. | - | ||||||
24 | ** | - | ||||||
25 | ** GNU General Public License Usage | - | ||||||
26 | ** Alternatively, this file may be used under the terms of the GNU | - | ||||||
27 | ** General Public License version 2.0 or (at your option) the GNU General | - | ||||||
28 | ** Public license version 3 or any later version approved by the KDE Free | - | ||||||
29 | ** Qt Foundation. The licenses are as published by the Free Software | - | ||||||
30 | ** Foundation and appearing in the file LICENSE.GPL2 and LICENSE.GPL3 | - | ||||||
31 | ** included in the packaging of this file. Please review the following | - | ||||||
32 | ** information to ensure the GNU General Public License requirements will | - | ||||||
33 | ** be met: https://www.gnu.org/licenses/gpl-2.0.html and | - | ||||||
34 | ** https://www.gnu.org/licenses/gpl-3.0.html. | - | ||||||
35 | ** | - | ||||||
36 | ** $QT_END_LICENSE$ | - | ||||||
37 | ** | - | ||||||
38 | ****************************************************************************/ | - | ||||||
39 | - | |||||||
40 | #include "qclipboard.h" | - | ||||||
41 | - | |||||||
42 | #ifndef QT_NO_CLIPBOARD | - | ||||||
43 | - | |||||||
44 | #include "qmimedata.h" | - | ||||||
45 | #include "qpixmap.h" | - | ||||||
46 | #include "qvariant.h" | - | ||||||
47 | #include "qbuffer.h" | - | ||||||
48 | #include "qimage.h" | - | ||||||
49 | #include "qtextcodec.h" | - | ||||||
50 | - | |||||||
51 | #include "private/qguiapplication_p.h" | - | ||||||
52 | #include <qpa/qplatformintegration.h> | - | ||||||
53 | #include <qpa/qplatformclipboard.h> | - | ||||||
54 | - | |||||||
55 | QT_BEGIN_NAMESPACE | - | ||||||
56 | - | |||||||
57 | /*! | - | ||||||
58 | \class QClipboard | - | ||||||
59 | \brief The QClipboard class provides access to the window system clipboard. | - | ||||||
60 | \inmodule QtGui | - | ||||||
61 | - | |||||||
62 | The clipboard offers a simple mechanism to copy and paste data | - | ||||||
63 | between applications. | - | ||||||
64 | - | |||||||
65 | QClipboard supports the same data types that QDrag does, and uses | - | ||||||
66 | similar mechanisms. For advanced clipboard usage read \l{Drag and | - | ||||||
67 | Drop}. | - | ||||||
68 | - | |||||||
69 | There is a single QClipboard object in an application, accessible | - | ||||||
70 | as QGuiApplication::clipboard(). | - | ||||||
71 | - | |||||||
72 | Example: | - | ||||||
73 | \snippet code/src_gui_kernel_qclipboard.cpp 0 | - | ||||||
74 | - | |||||||
75 | QClipboard features some convenience functions to access common | - | ||||||
76 | data types: setText() allows the exchange of Unicode text and | - | ||||||
77 | setPixmap() and setImage() allows the exchange of QPixmaps and | - | ||||||
78 | QImages between applications. The setMimeData() function is the | - | ||||||
79 | ultimate in flexibility: it allows you to add any QMimeData into | - | ||||||
80 | the clipboard. There are corresponding getters for each of these, | - | ||||||
81 | e.g. text(), image() and pixmap(). You can clear the clipboard by | - | ||||||
82 | calling clear(). | - | ||||||
83 | - | |||||||
84 | A typical example of the use of these functions follows: | - | ||||||
85 | - | |||||||
86 | \snippet droparea.cpp 0 | - | ||||||
87 | - | |||||||
88 | \section1 Notes for X11 Users | - | ||||||
89 | - | |||||||
90 | \list | - | ||||||
91 | - | |||||||
92 | \li The X11 Window System has the concept of a separate selection | - | ||||||
93 | and clipboard. When text is selected, it is immediately available | - | ||||||
94 | as the global mouse selection. The global mouse selection may | - | ||||||
95 | later be copied to the clipboard. By convention, the middle mouse | - | ||||||
96 | button is used to paste the global mouse selection. | - | ||||||
97 | - | |||||||
98 | \li X11 also has the concept of ownership; if you change the | - | ||||||
99 | selection within a window, X11 will only notify the owner and the | - | ||||||
100 | previous owner of the change, i.e. it will not notify all | - | ||||||
101 | applications that the selection or clipboard data changed. | - | ||||||
102 | - | |||||||
103 | \li Lastly, the X11 clipboard is event driven, i.e. the clipboard | - | ||||||
104 | will not function properly if the event loop is not running. | - | ||||||
105 | Similarly, it is recommended that the contents of the clipboard | - | ||||||
106 | are stored or retrieved in direct response to user-input events, | - | ||||||
107 | e.g. mouse button or key presses and releases. You should not | - | ||||||
108 | store or retrieve the clipboard contents in response to timer or | - | ||||||
109 | non-user-input events. | - | ||||||
110 | - | |||||||
111 | \li Since there is no standard way to copy and paste files between | - | ||||||
112 | applications on X11, various MIME types and conventions are currently | - | ||||||
113 | in use. For instance, Nautilus expects files to be supplied with a | - | ||||||
114 | \c{x-special/gnome-copied-files} MIME type with data beginning with | - | ||||||
115 | the cut/copy action, a newline character, and the URL of the file. | - | ||||||
116 | - | |||||||
117 | \endlist | - | ||||||
118 | - | |||||||
119 | \section1 Notes for \macos Users | - | ||||||
120 | - | |||||||
121 | \macos supports a separate find buffer that holds the current | - | ||||||
122 | search string in Find operations. This find clipboard can be accessed | - | ||||||
123 | by specifying the FindBuffer mode. | - | ||||||
124 | - | |||||||
125 | \section1 Notes for Windows and \macos Users | - | ||||||
126 | - | |||||||
127 | \list | - | ||||||
128 | - | |||||||
129 | \li Windows and \macos do not support the global mouse | - | ||||||
130 | selection; they only supports the global clipboard, i.e. they | - | ||||||
131 | only add text to the clipboard when an explicit copy or cut is | - | ||||||
132 | made. | - | ||||||
133 | - | |||||||
134 | \li Windows and \macos does not have the concept of ownership; | - | ||||||
135 | the clipboard is a fully global resource so all applications are | - | ||||||
136 | notified of changes. | - | ||||||
137 | - | |||||||
138 | \endlist | - | ||||||
139 | - | |||||||
140 | \sa QGuiApplication | - | ||||||
141 | */ | - | ||||||
142 | - | |||||||
143 | /*! | - | ||||||
144 | \internal | - | ||||||
145 | - | |||||||
146 | Constructs a clipboard object. | - | ||||||
147 | - | |||||||
148 | Do not call this function. | - | ||||||
149 | - | |||||||
150 | Call QGuiApplication::clipboard() instead to get a pointer to the | - | ||||||
151 | application's global clipboard object. | - | ||||||
152 | - | |||||||
153 | There is only one clipboard in the window system, and creating | - | ||||||
154 | more than one object to represent it is almost certainly an error. | - | ||||||
155 | */ | - | ||||||
156 | - | |||||||
157 | QClipboard::QClipboard(QObject *parent) | - | ||||||
158 | : QObject(parent) | - | ||||||
159 | { | - | ||||||
160 | // nothing | - | ||||||
161 | } never executed: end of block | 0 | ||||||
162 | - | |||||||
163 | /*! | - | ||||||
164 | \internal | - | ||||||
165 | - | |||||||
166 | Destroys the clipboard. | - | ||||||
167 | - | |||||||
168 | You should never delete the clipboard. QGuiApplication will do this | - | ||||||
169 | when the application terminates. | - | ||||||
170 | */ | - | ||||||
171 | QClipboard::~QClipboard() | - | ||||||
172 | { | - | ||||||
173 | } | - | ||||||
174 | - | |||||||
175 | /*! | - | ||||||
176 | \fn void QClipboard::changed(QClipboard::Mode mode) | - | ||||||
177 | \since 4.2 | - | ||||||
178 | - | |||||||
179 | This signal is emitted when the data for the given clipboard \a | - | ||||||
180 | mode is changed. | - | ||||||
181 | - | |||||||
182 | \sa dataChanged(), selectionChanged(), findBufferChanged() | - | ||||||
183 | */ | - | ||||||
184 | - | |||||||
185 | /*! | - | ||||||
186 | \fn void QClipboard::dataChanged() | - | ||||||
187 | - | |||||||
188 | This signal is emitted when the clipboard data is changed. | - | ||||||
189 | - | |||||||
190 | On \macos and with Qt version 4.3 or higher, clipboard | - | ||||||
191 | changes made by other applications will only be detected | - | ||||||
192 | when the application is activated. | - | ||||||
193 | - | |||||||
194 | \sa findBufferChanged(), selectionChanged(), changed() | - | ||||||
195 | */ | - | ||||||
196 | - | |||||||
197 | /*! | - | ||||||
198 | \fn void QClipboard::selectionChanged() | - | ||||||
199 | - | |||||||
200 | This signal is emitted when the selection is changed. This only | - | ||||||
201 | applies to windowing systems that support selections, e.g. X11. | - | ||||||
202 | Windows and \macos don't support selections. | - | ||||||
203 | - | |||||||
204 | \sa dataChanged(), findBufferChanged(), changed() | - | ||||||
205 | */ | - | ||||||
206 | - | |||||||
207 | /*! | - | ||||||
208 | \fn void QClipboard::findBufferChanged() | - | ||||||
209 | \since 4.2 | - | ||||||
210 | - | |||||||
211 | This signal is emitted when the find buffer is changed. This only | - | ||||||
212 | applies to \macos. | - | ||||||
213 | - | |||||||
214 | With Qt version 4.3 or higher, clipboard changes made by other | - | ||||||
215 | applications will only be detected when the application is activated. | - | ||||||
216 | - | |||||||
217 | \sa dataChanged(), selectionChanged(), changed() | - | ||||||
218 | */ | - | ||||||
219 | - | |||||||
220 | - | |||||||
221 | /*! \enum QClipboard::Mode | - | ||||||
222 | \keyword clipboard mode | - | ||||||
223 | - | |||||||
224 | This enum type is used to control which part of the system clipboard is | - | ||||||
225 | used by QClipboard::mimeData(), QClipboard::setMimeData() and related functions. | - | ||||||
226 | - | |||||||
227 | \value Clipboard indicates that data should be stored and retrieved from | - | ||||||
228 | the global clipboard. | - | ||||||
229 | - | |||||||
230 | \value Selection indicates that data should be stored and retrieved from | - | ||||||
231 | the global mouse selection. Support for \c Selection is provided only on | - | ||||||
232 | systems with a global mouse selection (e.g. X11). | - | ||||||
233 | - | |||||||
234 | \value FindBuffer indicates that data should be stored and retrieved from | - | ||||||
235 | the Find buffer. This mode is used for holding search strings on \macos. | - | ||||||
236 | - | |||||||
237 | \omitvalue LastMode | - | ||||||
238 | - | |||||||
239 | \sa QClipboard::supportsSelection() | - | ||||||
240 | */ | - | ||||||
241 | - | |||||||
242 | - | |||||||
243 | /*! | - | ||||||
244 | \overload | - | ||||||
245 | - | |||||||
246 | Returns the clipboard text in subtype \a subtype, or an empty string | - | ||||||
247 | if the clipboard does not contain any text. If \a subtype is null, | - | ||||||
248 | any subtype is acceptable, and \a subtype is set to the chosen | - | ||||||
249 | subtype. | - | ||||||
250 | - | |||||||
251 | The \a mode argument is used to control which part of the system | - | ||||||
252 | clipboard is used. If \a mode is QClipboard::Clipboard, the | - | ||||||
253 | text is retrieved from the global clipboard. If \a mode is | - | ||||||
254 | QClipboard::Selection, the text is retrieved from the global | - | ||||||
255 | mouse selection. | - | ||||||
256 | - | |||||||
257 | Common values for \a subtype are "plain" and "html". | - | ||||||
258 | - | |||||||
259 | Note that calling this function repeatedly, for instance from a | - | ||||||
260 | key event handler, may be slow. In such cases, you should use the | - | ||||||
261 | \c dataChanged() signal instead. | - | ||||||
262 | - | |||||||
263 | \sa setText(), mimeData() | - | ||||||
264 | */ | - | ||||||
265 | QString QClipboard::text(QString &subtype, Mode mode) const | - | ||||||
266 | { | - | ||||||
267 | const QMimeData *const data = mimeData(mode); | - | ||||||
268 | if (!data)
| 0 | ||||||
269 | return QString(); never executed: return QString(); | 0 | ||||||
270 | - | |||||||
271 | const QStringList formats = data->formats(); | - | ||||||
272 | if (subtype.isEmpty()) {
| 0 | ||||||
273 | if (formats.contains(QLatin1String("text/plain")))
| 0 | ||||||
274 | subtype = QLatin1String("plain"); never executed: subtype = QLatin1String("plain"); | 0 | ||||||
275 | else { | - | ||||||
276 | for (int i = 0; i < formats.size(); ++i)
| 0 | ||||||
277 | if (formats.at(i).startsWith(QLatin1String("text/"))) {
| 0 | ||||||
278 | subtype = formats.at(i).mid(5); | - | ||||||
279 | break; never executed: break; | 0 | ||||||
280 | } | - | ||||||
281 | if (subtype.isEmpty())
| 0 | ||||||
282 | return QString(); never executed: return QString(); | 0 | ||||||
283 | } never executed: end of block | 0 | ||||||
284 | } else if (!formats.contains(QLatin1String("text/") + subtype)) {
| 0 | ||||||
285 | return QString(); never executed: return QString(); | 0 | ||||||
286 | } | - | ||||||
287 | - | |||||||
288 | const QByteArray rawData = data->data(QLatin1String("text/") + subtype); | - | ||||||
289 | - | |||||||
290 | #ifndef QT_NO_TEXTCODEC | - | ||||||
291 | QTextCodec* codec = QTextCodec::codecForMib(106); // utf-8 is default | - | ||||||
292 | if (subtype == QLatin1String("html"))
| 0 | ||||||
293 | codec = QTextCodec::codecForHtml(rawData, codec); never executed: codec = QTextCodec::codecForHtml(rawData, codec); | 0 | ||||||
294 | else | - | ||||||
295 | codec = QTextCodec::codecForUtfText(rawData, codec); never executed: codec = QTextCodec::codecForUtfText(rawData, codec); | 0 | ||||||
296 | return codec->toUnicode(rawData); never executed: return codec->toUnicode(rawData); | 0 | ||||||
297 | #else //QT_NO_TEXTCODEC | - | ||||||
298 | return rawData; | - | ||||||
299 | #endif //QT_NO_TEXTCODEC | - | ||||||
300 | } | - | ||||||
301 | - | |||||||
302 | /*! | - | ||||||
303 | Returns the clipboard text as plain text, or an empty string if the | - | ||||||
304 | clipboard does not contain any text. | - | ||||||
305 | - | |||||||
306 | The \a mode argument is used to control which part of the system | - | ||||||
307 | clipboard is used. If \a mode is QClipboard::Clipboard, the | - | ||||||
308 | text is retrieved from the global clipboard. If \a mode is | - | ||||||
309 | QClipboard::Selection, the text is retrieved from the global | - | ||||||
310 | mouse selection. If \a mode is QClipboard::FindBuffer, the | - | ||||||
311 | text is retrieved from the search string buffer. | - | ||||||
312 | - | |||||||
313 | \sa setText(), mimeData() | - | ||||||
314 | */ | - | ||||||
315 | QString QClipboard::text(Mode mode) const | - | ||||||
316 | { | - | ||||||
317 | const QMimeData *data = mimeData(mode); | - | ||||||
318 | return data ? data->text() : QString(); never executed: return data ? data->text() : QString(); | 0 | ||||||
319 | } | - | ||||||
320 | - | |||||||
321 | /*! | - | ||||||
322 | Copies \a text into the clipboard as plain text. | - | ||||||
323 | - | |||||||
324 | The \a mode argument is used to control which part of the system | - | ||||||
325 | clipboard is used. If \a mode is QClipboard::Clipboard, the | - | ||||||
326 | text is stored in the global clipboard. If \a mode is | - | ||||||
327 | QClipboard::Selection, the text is stored in the global | - | ||||||
328 | mouse selection. If \a mode is QClipboard::FindBuffer, the | - | ||||||
329 | text is stored in the search string buffer. | - | ||||||
330 | - | |||||||
331 | \sa text(), setMimeData() | - | ||||||
332 | */ | - | ||||||
333 | void QClipboard::setText(const QString &text, Mode mode) | - | ||||||
334 | { | - | ||||||
335 | QMimeData *data = new QMimeData; | - | ||||||
336 | data->setText(text); | - | ||||||
337 | setMimeData(data, mode); | - | ||||||
338 | } never executed: end of block | 0 | ||||||
339 | - | |||||||
340 | /*! | - | ||||||
341 | Returns the clipboard image, or returns a null image if the | - | ||||||
342 | clipboard does not contain an image or if it contains an image in | - | ||||||
343 | an unsupported image format. | - | ||||||
344 | - | |||||||
345 | The \a mode argument is used to control which part of the system | - | ||||||
346 | clipboard is used. If \a mode is QClipboard::Clipboard, the | - | ||||||
347 | image is retrieved from the global clipboard. If \a mode is | - | ||||||
348 | QClipboard::Selection, the image is retrieved from the global | - | ||||||
349 | mouse selection. | - | ||||||
350 | - | |||||||
351 | \sa setImage(), pixmap(), mimeData(), QImage::isNull() | - | ||||||
352 | */ | - | ||||||
353 | QImage QClipboard::image(Mode mode) const | - | ||||||
354 | { | - | ||||||
355 | const QMimeData *data = mimeData(mode); | - | ||||||
356 | if (!data)
| 0 | ||||||
357 | return QImage(); never executed: return QImage(); | 0 | ||||||
358 | return qvariant_cast<QImage>(data->imageData()); never executed: return qvariant_cast<QImage>(data->imageData()); | 0 | ||||||
359 | } | - | ||||||
360 | - | |||||||
361 | /*! | - | ||||||
362 | Copies the \a image into the clipboard. | - | ||||||
363 | - | |||||||
364 | The \a mode argument is used to control which part of the system | - | ||||||
365 | clipboard is used. If \a mode is QClipboard::Clipboard, the | - | ||||||
366 | image is stored in the global clipboard. If \a mode is | - | ||||||
367 | QClipboard::Selection, the data is stored in the global | - | ||||||
368 | mouse selection. | - | ||||||
369 | - | |||||||
370 | This is shorthand for: | - | ||||||
371 | - | |||||||
372 | \snippet code/src_gui_kernel_qclipboard.cpp 1 | - | ||||||
373 | - | |||||||
374 | \sa image(), setPixmap(), setMimeData() | - | ||||||
375 | */ | - | ||||||
376 | void QClipboard::setImage(const QImage &image, Mode mode) | - | ||||||
377 | { | - | ||||||
378 | QMimeData *data = new QMimeData; | - | ||||||
379 | data->setImageData(image); | - | ||||||
380 | setMimeData(data, mode); | - | ||||||
381 | } never executed: end of block | 0 | ||||||
382 | - | |||||||
383 | /*! | - | ||||||
384 | Returns the clipboard pixmap, or null if the clipboard does not | - | ||||||
385 | contain a pixmap. Note that this can lose information. For | - | ||||||
386 | example, if the image is 24-bit and the display is 8-bit, the | - | ||||||
387 | result is converted to 8 bits, and if the image has an alpha | - | ||||||
388 | channel, the result just has a mask. | - | ||||||
389 | - | |||||||
390 | The \a mode argument is used to control which part of the system | - | ||||||
391 | clipboard is used. If \a mode is QClipboard::Clipboard, the | - | ||||||
392 | pixmap is retrieved from the global clipboard. If \a mode is | - | ||||||
393 | QClipboard::Selection, the pixmap is retrieved from the global | - | ||||||
394 | mouse selection. | - | ||||||
395 | - | |||||||
396 | \sa setPixmap(), image(), mimeData(), QPixmap::convertFromImage() | - | ||||||
397 | */ | - | ||||||
398 | QPixmap QClipboard::pixmap(Mode mode) const | - | ||||||
399 | { | - | ||||||
400 | const QMimeData *data = mimeData(mode); | - | ||||||
401 | return data ? qvariant_cast<QPixmap>(data->imageData()) : QPixmap(); never executed: return data ? qvariant_cast<QPixmap>(data->imageData()) : QPixmap(); | 0 | ||||||
402 | } | - | ||||||
403 | - | |||||||
404 | /*! | - | ||||||
405 | Copies \a pixmap into the clipboard. Note that this is slower | - | ||||||
406 | than setImage() because it needs to convert the QPixmap to a | - | ||||||
407 | QImage first. | - | ||||||
408 | - | |||||||
409 | The \a mode argument is used to control which part of the system | - | ||||||
410 | clipboard is used. If \a mode is QClipboard::Clipboard, the | - | ||||||
411 | pixmap is stored in the global clipboard. If \a mode is | - | ||||||
412 | QClipboard::Selection, the pixmap is stored in the global | - | ||||||
413 | mouse selection. | - | ||||||
414 | - | |||||||
415 | \sa pixmap(), setImage(), setMimeData() | - | ||||||
416 | */ | - | ||||||
417 | void QClipboard::setPixmap(const QPixmap &pixmap, Mode mode) | - | ||||||
418 | { | - | ||||||
419 | QMimeData *data = new QMimeData; | - | ||||||
420 | data->setImageData(pixmap); | - | ||||||
421 | setMimeData(data, mode); | - | ||||||
422 | } never executed: end of block | 0 | ||||||
423 | - | |||||||
424 | - | |||||||
425 | /*! | - | ||||||
426 | \fn QMimeData *QClipboard::mimeData(Mode mode) const | - | ||||||
427 | - | |||||||
428 | Returns a pointer to a QMimeData representation of the current | - | ||||||
429 | clipboard data (can be NULL if the given \a mode is not | - | ||||||
430 | supported by the platform). | - | ||||||
431 | - | |||||||
432 | The \a mode argument is used to control which part of the system | - | ||||||
433 | clipboard is used. If \a mode is QClipboard::Clipboard, the | - | ||||||
434 | data is retrieved from the global clipboard. If \a mode is | - | ||||||
435 | QClipboard::Selection, the data is retrieved from the global | - | ||||||
436 | mouse selection. If \a mode is QClipboard::FindBuffer, the | - | ||||||
437 | data is retrieved from the search string buffer. | - | ||||||
438 | - | |||||||
439 | The text(), image(), and pixmap() functions are simpler | - | ||||||
440 | wrappers for retrieving text, image, and pixmap data. | - | ||||||
441 | - | |||||||
442 | \sa setMimeData() | - | ||||||
443 | */ | - | ||||||
444 | const QMimeData* QClipboard::mimeData(Mode mode) const | - | ||||||
445 | { | - | ||||||
446 | QPlatformClipboard *clipboard = QGuiApplicationPrivate::platformIntegration()->clipboard(); | - | ||||||
447 | if (!clipboard->supportsMode(mode)) return 0; never executed: return 0;
| 0 | ||||||
448 | return clipboard->mimeData(mode); never executed: return clipboard->mimeData(mode); | 0 | ||||||
449 | } | - | ||||||
450 | - | |||||||
451 | /*! | - | ||||||
452 | \fn void QClipboard::setMimeData(QMimeData *src, Mode mode) | - | ||||||
453 | - | |||||||
454 | Sets the clipboard data to \a src. Ownership of the data is | - | ||||||
455 | transferred to the clipboard. If you want to remove the data | - | ||||||
456 | either call clear() or call setMimeData() again with new data. | - | ||||||
457 | - | |||||||
458 | The \a mode argument is used to control which part of the system | - | ||||||
459 | clipboard is used. If \a mode is QClipboard::Clipboard, the | - | ||||||
460 | data is stored in the global clipboard. If \a mode is | - | ||||||
461 | QClipboard::Selection, the data is stored in the global | - | ||||||
462 | mouse selection. If \a mode is QClipboard::FindBuffer, the | - | ||||||
463 | data is stored in the search string buffer. | - | ||||||
464 | - | |||||||
465 | The setText(), setImage() and setPixmap() functions are simpler | - | ||||||
466 | wrappers for setting text, image and pixmap data respectively. | - | ||||||
467 | - | |||||||
468 | \sa mimeData() | - | ||||||
469 | */ | - | ||||||
470 | void QClipboard::setMimeData(QMimeData* src, Mode mode) | - | ||||||
471 | { | - | ||||||
472 | QPlatformClipboard *clipboard = QGuiApplicationPrivate::platformIntegration()->clipboard(); | - | ||||||
473 | if (!clipboard->supportsMode(mode)) {
| 0 | ||||||
474 | if (src != 0) {
| 0 | ||||||
475 | qWarning("Data set on unsupported clipboard mode. QMimeData object will be deleted."); | - | ||||||
476 | src->deleteLater(); | - | ||||||
477 | } never executed: end of block | 0 | ||||||
478 | } else { never executed: end of block | 0 | ||||||
479 | clipboard->setMimeData(src,mode); | - | ||||||
480 | } never executed: end of block | 0 | ||||||
481 | } | - | ||||||
482 | - | |||||||
483 | /*! | - | ||||||
484 | \fn void QClipboard::clear(Mode mode) | - | ||||||
485 | Clear the clipboard contents. | - | ||||||
486 | - | |||||||
487 | The \a mode argument is used to control which part of the system | - | ||||||
488 | clipboard is used. If \a mode is QClipboard::Clipboard, this | - | ||||||
489 | function clears the global clipboard contents. If \a mode is | - | ||||||
490 | QClipboard::Selection, this function clears the global mouse | - | ||||||
491 | selection contents. If \a mode is QClipboard::FindBuffer, this | - | ||||||
492 | function clears the search string buffer. | - | ||||||
493 | - | |||||||
494 | \sa QClipboard::Mode, supportsSelection() | - | ||||||
495 | */ | - | ||||||
496 | void QClipboard::clear(Mode mode) | - | ||||||
497 | { | - | ||||||
498 | setMimeData(0, mode); | - | ||||||
499 | } never executed: end of block | 0 | ||||||
500 | - | |||||||
501 | /*! | - | ||||||
502 | Returns \c true if the clipboard supports mouse selection; otherwise | - | ||||||
503 | returns \c false. | - | ||||||
504 | */ | - | ||||||
505 | bool QClipboard::supportsSelection() const | - | ||||||
506 | { | - | ||||||
507 | return supportsMode(Selection); never executed: return supportsMode(Selection); | 0 | ||||||
508 | } | - | ||||||
509 | - | |||||||
510 | /*! | - | ||||||
511 | Returns \c true if the clipboard supports a separate search buffer; otherwise | - | ||||||
512 | returns \c false. | - | ||||||
513 | */ | - | ||||||
514 | bool QClipboard::supportsFindBuffer() const | - | ||||||
515 | { | - | ||||||
516 | return supportsMode(FindBuffer); never executed: return supportsMode(FindBuffer); | 0 | ||||||
517 | } | - | ||||||
518 | - | |||||||
519 | /*! | - | ||||||
520 | Returns \c true if this clipboard object owns the clipboard data; | - | ||||||
521 | otherwise returns \c false. | - | ||||||
522 | */ | - | ||||||
523 | bool QClipboard::ownsClipboard() const | - | ||||||
524 | { | - | ||||||
525 | return ownsMode(Clipboard); never executed: return ownsMode(Clipboard); | 0 | ||||||
526 | } | - | ||||||
527 | - | |||||||
528 | /*! | - | ||||||
529 | Returns \c true if this clipboard object owns the mouse selection | - | ||||||
530 | data; otherwise returns \c false. | - | ||||||
531 | */ | - | ||||||
532 | bool QClipboard::ownsSelection() const | - | ||||||
533 | { | - | ||||||
534 | return ownsMode(Selection); never executed: return ownsMode(Selection); | 0 | ||||||
535 | } | - | ||||||
536 | - | |||||||
537 | /*! | - | ||||||
538 | \since 4.2 | - | ||||||
539 | - | |||||||
540 | Returns \c true if this clipboard object owns the find buffer data; | - | ||||||
541 | otherwise returns \c false. | - | ||||||
542 | */ | - | ||||||
543 | bool QClipboard::ownsFindBuffer() const | - | ||||||
544 | { | - | ||||||
545 | return ownsMode(FindBuffer); never executed: return ownsMode(FindBuffer); | 0 | ||||||
546 | } | - | ||||||
547 | - | |||||||
548 | /*! | - | ||||||
549 | \internal | - | ||||||
550 | \fn bool QClipboard::supportsMode(Mode mode) const; | - | ||||||
551 | Returns \c true if the clipboard supports the clipboard mode speacified by \a mode; | - | ||||||
552 | otherwise returns \c false. | - | ||||||
553 | */ | - | ||||||
554 | bool QClipboard::supportsMode(Mode mode) const | - | ||||||
555 | { | - | ||||||
556 | QPlatformClipboard *clipboard = QGuiApplicationPrivate::platformIntegration()->clipboard(); | - | ||||||
557 | return clipboard->supportsMode(mode); never executed: return clipboard->supportsMode(mode); | 0 | ||||||
558 | } | - | ||||||
559 | - | |||||||
560 | /*! | - | ||||||
561 | \internal | - | ||||||
562 | \fn bool QClipboard::ownsMode(Mode mode) const; | - | ||||||
563 | Returns \c true if the clipboard supports the clipboard data speacified by \a mode; | - | ||||||
564 | otherwise returns \c false. | - | ||||||
565 | */ | - | ||||||
566 | bool QClipboard::ownsMode(Mode mode) const | - | ||||||
567 | { | - | ||||||
568 | QPlatformClipboard *clipboard = QGuiApplicationPrivate::platformIntegration()->clipboard(); | - | ||||||
569 | return clipboard->ownsMode(mode); never executed: return clipboard->ownsMode(mode); | 0 | ||||||
570 | } | - | ||||||
571 | - | |||||||
572 | /*! | - | ||||||
573 | \internal | - | ||||||
574 | Emits the appropriate changed signal for \a mode. | - | ||||||
575 | */ | - | ||||||
576 | void QClipboard::emitChanged(Mode mode) | - | ||||||
577 | { | - | ||||||
578 | switch (mode) { | - | ||||||
579 | case Clipboard: never executed: case Clipboard: | 0 | ||||||
580 | emit dataChanged(); | - | ||||||
581 | break; never executed: break; | 0 | ||||||
582 | case Selection: never executed: case Selection: | 0 | ||||||
583 | emit selectionChanged(); | - | ||||||
584 | break; never executed: break; | 0 | ||||||
585 | case FindBuffer: never executed: case FindBuffer: | 0 | ||||||
586 | emit findBufferChanged(); | - | ||||||
587 | break; never executed: break; | 0 | ||||||
588 | default: never executed: default: | 0 | ||||||
589 | break; never executed: break; | 0 | ||||||
590 | } | - | ||||||
591 | emit changed(mode); | - | ||||||
592 | } never executed: end of block | 0 | ||||||
593 | - | |||||||
594 | QT_END_NAMESPACE | - | ||||||
595 | - | |||||||
596 | #endif // QT_NO_CLIPBOARD | - | ||||||
Source code | Switch to Preprocessed file |