| 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 |