]> cloud.milkyroute.net Git - dolphin.git/blob - src/kitemviews/private/kfileitemclipboard.cpp
Add clang-format and format code as in Frameworks
[dolphin.git] / src / kitemviews / private / kfileitemclipboard.cpp
1 /*
2 * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
3 *
4 * SPDX-License-Identifier: GPL-2.0-or-later
5 */
6
7 #include "kfileitemclipboard.h"
8
9 #include <KUrlMimeData>
10
11 #include <QApplication>
12 #include <QClipboard>
13 #include <QMimeData>
14
15 class KFileItemClipboardSingleton
16 {
17 public:
18 KFileItemClipboard instance;
19 };
20 Q_GLOBAL_STATIC(KFileItemClipboardSingleton, s_KFileItemClipboard)
21
22 KFileItemClipboard *KFileItemClipboard::instance()
23 {
24 return &s_KFileItemClipboard->instance;
25 }
26
27 bool KFileItemClipboard::isCut(const QUrl &url) const
28 {
29 return m_cutItems.contains(url);
30 }
31
32 QList<QUrl> KFileItemClipboard::cutItems() const
33 {
34 return m_cutItems.values();
35 }
36
37 KFileItemClipboard::~KFileItemClipboard()
38 {
39 }
40
41 void KFileItemClipboard::updateCutItems()
42 {
43 const QMimeData *mimeData = QApplication::clipboard()->mimeData();
44
45 // mimeData can be 0 according to https://bugs.kde.org/show_bug.cgi?id=335053
46 if (!mimeData) {
47 m_cutItems.clear();
48 Q_EMIT cutItemsChanged();
49 return;
50 }
51
52 const QByteArray data = mimeData->data(QStringLiteral("application/x-kde-cutselection"));
53 const bool isCutSelection = (!data.isEmpty() && data.at(0) == QLatin1Char('1'));
54 if (isCutSelection) {
55 const auto urlsFromMimeData = KUrlMimeData::urlsFromMimeData(mimeData);
56 m_cutItems = QSet<QUrl>(urlsFromMimeData.constBegin(), urlsFromMimeData.constEnd());
57 } else {
58 m_cutItems.clear();
59 }
60 Q_EMIT cutItemsChanged();
61 }
62
63 KFileItemClipboard::KFileItemClipboard()
64 : QObject(nullptr)
65 , m_cutItems()
66 {
67 updateCutItems();
68
69 connect(QApplication::clipboard(), &QClipboard::dataChanged, this, &KFileItemClipboard::updateCutItems);
70 }