4#include <QtCore/qstringlist.h>
5#include <QtGui/private/qinternalmimedata_p.h>
7#include <qohosmimedata.h>
16 return [baseSupplier = std::move(baseSupplier), value =
std::optional<T>()]()
mutable {
17 if (!value.has_value()) {
18 value.emplace(baseSupplier());
19 baseSupplier =
nullptr;
47 return m_mimeValuesSuppliers->find(mimeType) != m_mimeValuesSuppliers->end();
53 for (
const auto &entry : *m_mimeValuesSuppliers)
54 formats.append(entry.first);
60 auto supplierIter = m_mimeValuesSuppliers->find(mimeType);
61 return supplierIter != m_mimeValuesSuppliers->end()
62 ? (supplierIter->second)()
71 auto memoizingSuppliers = std::make_shared<std::map<QString, QOhosSupplier<QVariant>>>();
72 for (
auto &entry : mimeValuesSuppliers)
73 memoizingSuppliers->emplace(entry.first, makeMemoizingSupplier(std::move(entry.second)));
75 return [memoizingSuppliers]() {
76 return std::make_unique<SuppliersBasedMimeData>(memoizingSuppliers);
82 auto mimeValuesSuppliers = std::make_shared<std::map<QString, QOhosSupplier<QVariant>>>();
83 for (
auto &entry : mimeValues) {
84 mimeValuesSuppliers->emplace(
86 [value = entry.second]() {
91 return [mimeValuesSuppliers]() {
92 return std::make_unique<SuppliersBasedMimeData>(mimeValuesSuppliers);
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< T > makeMemoizingSupplier(QOhosSupplier< T > baseSupplier)
QOhosSupplier< std::unique_ptr< QMimeData > > makeQOhosMimeDataFactory(std::map< QString, QVariant > mimeValues)
QOhosSupplier< std::unique_ptr< QMimeData > > makeQOhosLazyFetchMimeDataFactory(std::map< QString, QOhosSupplier< QVariant > > mimeValuesSuppliers)