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
)
22 KFileItemClipboard
*KFileItemClipboard::instance()
24 return &s_KFileItemClipboard
->instance
;
27 bool KFileItemClipboard::isCut(const QUrl
&url
) const
29 return m_cutItems
.contains(url
);
32 QList
<QUrl
> KFileItemClipboard::cutItems() const
34 return m_cutItems
.values();
37 KFileItemClipboard::~KFileItemClipboard()
41 void KFileItemClipboard::updateCutItems()
43 const QMimeData
*mimeData
= QApplication::clipboard()->mimeData();
45 // mimeData can be 0 according to https://bugs.kde.org/show_bug.cgi?id=335053
48 Q_EMIT
cutItemsChanged();
52 const QByteArray data
= mimeData
->data(QStringLiteral("application/x-kde-cutselection"));
53 const bool isCutSelection
= (!data
.isEmpty() && data
.at(0) == QLatin1Char('1'));
55 const auto urlsFromMimeData
= KUrlMimeData::urlsFromMimeData(mimeData
);
56 m_cutItems
= QSet
<QUrl
>(urlsFromMimeData
.constBegin(), urlsFromMimeData
.constEnd());
60 Q_EMIT
cutItemsChanged();
63 KFileItemClipboard::KFileItemClipboard()
69 connect(QApplication::clipboard(), &QClipboard::dataChanged
, this, &KFileItemClipboard::updateCutItems
);