File indexing completed on 2025-04-27 08:18:11
0001 /* 0002 * SPDX-FileCopyrightText: 2017 Peifeng Yu <aetf@unlimitedcodeworks.xyz> 0003 * 0004 * SPDX-License-Identifier: GPL-2.0-only OR GPL-3.0-only OR LicenseRef-KDE-Accepted-GPL 0005 * 0006 */ 0007 0008 #include "mousehelper.h" 0009 0010 #include <QCursor> 0011 #include <QMimeData> 0012 #include <QUrl> 0013 0014 using namespace Milou; 0015 0016 MouseHelper::MouseHelper(QObject *parent) 0017 : QObject(parent) 0018 { 0019 } 0020 0021 MouseHelper::~MouseHelper() 0022 { 0023 } 0024 0025 QPointF MouseHelper::globalMousePosition() const 0026 { 0027 return QCursor::pos(); 0028 } 0029 0030 QVariantMap MouseHelper::generateMimeDataMap(QMimeData *data) const 0031 { 0032 QVariantMap dataMap; 0033 0034 QStringList formats = data->formats(); 0035 auto it = std::find(formats.cbegin(), formats.cend(), QLatin1String("text/plain")); 0036 if (it != formats.cend()) { 0037 dataMap.insert(*it, data->text()); 0038 formats.erase(it); 0039 } 0040 0041 it = std::find(formats.cbegin(), formats.cend(), QLatin1String("text/html")); 0042 if (it != formats.cend()) { 0043 dataMap.insert(*it, data->html()); 0044 formats.erase(it); 0045 } 0046 0047 it = std::find(formats.cbegin(), formats.cend(), QLatin1String("text/uri-list")); 0048 if (it != formats.cend()) { 0049 const QList<QUrl> urls = data->urls(); 0050 dataMap.insert(*it, QVariantList(urls.cbegin(), urls.cend())); 0051 } 0052 0053 it = std::find_if(formats.cbegin(), formats.cend(), [](const QString &format) { 0054 return format.startsWith(QLatin1String("image/")); 0055 }); 0056 if (it != formats.cend()) { 0057 dataMap.insert(*it, data->imageData()); 0058 formats.erase(it); 0059 } 0060 0061 for (const QString &format : std::as_const(formats)) { 0062 dataMap.insert(format, data->data(format)); 0063 } 0064 0065 return dataMap; 0066 }