2 * SPDX-FileCopyrightText: 2011 Peter Penz <peter.penz19@gmail.com>
4 * SPDX-License-Identifier: GPL-2.0-or-later
7 #include "kfileitemclipboard.h"
9 #include <KUrlMimeData>
11 #include <QApplication>
15 class KFileItemClipboardSingleton
18 KFileItemClipboard instance
;
20 Q_GLOBAL_STATIC(KFileItemClipboardSingleton
, s_KFileItemClipboard
)
24 KFileItemClipboard
* KFileItemClipboard::instance()
26 return &s_KFileItemClipboard
->instance
;
29 bool KFileItemClipboard::isCut(const QUrl
& url
) const
31 return m_cutItems
.contains(url
);
34 QList
<QUrl
> KFileItemClipboard::cutItems() const
36 return m_cutItems
.values();
39 KFileItemClipboard::~KFileItemClipboard()
43 void KFileItemClipboard::updateCutItems()
45 const QMimeData
* mimeData
= QApplication::clipboard()->mimeData();
47 // mimeData can be 0 according to https://bugs.kde.org/show_bug.cgi?id=335053
50 Q_EMIT
cutItemsChanged();
54 const QByteArray data
= mimeData
->data(QStringLiteral("application/x-kde-cutselection"));
55 const bool isCutSelection
= (!data
.isEmpty() && data
.at(0) == QLatin1Char('1'));
57 const auto urlsFromMimeData
= KUrlMimeData::urlsFromMimeData(mimeData
);
58 m_cutItems
= QSet
<QUrl
>(urlsFromMimeData
.constBegin(), urlsFromMimeData
.constEnd());
62 Q_EMIT
cutItemsChanged();
65 KFileItemClipboard::KFileItemClipboard() :
71 connect(QApplication::clipboard(), &QClipboard::dataChanged
,
72 this, &KFileItemClipboard::updateCutItems
);