Qt
Internal/Contributor docs for the Qt SDK. Note: These are NOT official API docs; those are found at https://doc.qt.io/
Loading...
Searching...
No Matches
qohosmimedata.cpp
Go to the documentation of this file.
1// Copyright (C) 2025 The Qt Company Ltd.
2// SPDX-License-Identifier: LicenseRef-Qt-Commercial OR LGPL-3.0-only OR GPL-2.0-only OR GPL-3.0-only
3
4#include <QtCore/qstringlist.h>
5#include <QtGui/private/qinternalmimedata_p.h>
6#include <qohosmimedata.h>
7#include <qohosutils.h>
8
10
11namespace {
12
14{
15public:
17
18protected:
19 bool hasFormat_sys(const QString &mimeType) const override;
20 QStringList formats_sys() const override;
21 QVariant retrieveData_sys(const QString &mimeType, QMetaType type) const override;
22
23private:
25};
26
32
33bool SuppliersBasedMimeData::hasFormat_sys(const QString &mimeType) const
34{
35 return m_mimeValuesSuppliers->find(mimeType) != m_mimeValuesSuppliers->end();
36}
37
39{
40 QStringList formats;
41 for (const auto &entry : *m_mimeValuesSuppliers)
42 formats.append(entry.first);
43 return formats;
44}
45
47{
48 auto supplierIter = m_mimeValuesSuppliers->find(mimeType);
49 return supplierIter != m_mimeValuesSuppliers->end()
50 ? (supplierIter->second)()
51 : QVariant();
52}
53
54}
55
58{
59 auto memoizingSuppliers = std::make_shared<std::map<QString, QOhosSupplier<QVariant>>>();
60 for (auto &entry : mimeValuesSuppliers)
61 memoizingSuppliers->emplace(
62 entry.first, QtOhos::makeMemoizingSupplier(std::move(entry.second)));
63
64 return [memoizingSuppliers]() {
65 return std::make_unique<SuppliersBasedMimeData>(memoizingSuppliers);
66 };
67}
68
69QOhosSupplier<std::unique_ptr<QMimeData>> makeQOhosMimeDataFactory(std::map<QString, QVariant> mimeValues)
70{
71 auto mimeValuesSuppliers = std::make_shared<std::map<QString, QOhosSupplier<QVariant>>>();
72 for (auto &entry : mimeValues) {
73 mimeValuesSuppliers->emplace(
74 entry.first,
75 [value = entry.second]() {
76 return value;
77 });
78 }
79
80 return [mimeValuesSuppliers]() {
81 return std::make_unique<SuppliersBasedMimeData>(mimeValuesSuppliers);
82 };
83}
84
85QT_END_NAMESPACE
QStringList formats_sys() const override
SuppliersBasedMimeData(std::shared_ptr< const std::map< QString, QOhosSupplier< QVariant > > > mimeValuesSuppliers)
QVariant retrieveData_sys(const QString &mimeType, QMetaType type) const override
bool hasFormat_sys(const QString &mimeType) const override
Combined button and popup list for selecting options.
QOhosSupplier< std::unique_ptr< QMimeData > > makeQOhosMimeDataFactory(std::map< QString, QVariant > mimeValues)
QOhosSupplier< std::unique_ptr< QMimeData > > makeQOhosLazyFetchMimeDataFactory(std::map< QString, QOhosSupplier< QVariant > > mimeValuesSuppliers)