4#include <QtCore/qstringlist.h>
5#include <QtGui/private/qinternalmimedata_p.h>
6#include <qohosmimedata.h>
7#include <qohosplugincore.h>
17 return [baseSupplier = std::move(baseSupplier), value =
QOhosOptional<T>()]()
mutable {
18 if (!value.hasValue()) {
19 value.emplace(baseSupplier());
20 baseSupplier =
nullptr;
48 return m_mimeValuesSuppliers->find(mimeType) != m_mimeValuesSuppliers->end();
54 for (
const auto &entry : *m_mimeValuesSuppliers)
55 formats.append(entry.first);
61 auto supplierIter = m_mimeValuesSuppliers->find(mimeType);
62 return supplierIter != m_mimeValuesSuppliers->end()
63 ? (supplierIter->second)()
72 auto memoizingSuppliers = std::make_shared<std::map<QString, QOhosSupplier<QVariant>>>();
73 for (
auto &entry : mimeValuesSuppliers)
74 memoizingSuppliers->emplace(entry.first, makeMemoizingSupplier(std::move(entry.second)));
76 return [memoizingSuppliers]() {
77 return std::make_unique<SuppliersBasedMimeData>(memoizingSuppliers);
83 auto mimeValuesSuppliers = std::make_shared<std::map<QString, QOhosSupplier<QVariant>>>();
84 for (
auto &entry : mimeValues) {
85 mimeValuesSuppliers->emplace(
87 [value = entry.second]() {
92 return [mimeValuesSuppliers]() {
93 return std::make_unique<SuppliersBasedMimeData>(mimeValuesSuppliers);
std::enable_if_t< qohosplugincore_h_detail::isQOhosOptional< QOhosInvokeResult< Func, T > >, QOhosInvokeResult< Func, T > > andThen(Func &&func) const
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)