QStringList QWindowsInternalMimeData::formats_sys() const { IDataObject *pDataObj = retrieveDataObject(); if (!pDataObj) return QStringList(); const QWindowsMimeConverter &mc = QWindowsContext::instance()->mimeConverter(); const QStringList fmts = mc.allMimesForFormats(pDataObj); releaseDataObject(pDataObj); qCDebug(lcQpaMime) << __FUNCTION__ << fmts; return fmts; }
bool QWindowsInternalMimeData::hasFormat_sys(const QString &mime) const { IDataObject *pDataObj = retrieveDataObject(); if (!pDataObj) return false; const QWindowsMimeConverter &mc = QWindowsContext::instance()->mimeConverter(); const bool has = mc.converterToMime(mime, pDataObj) != 0; releaseDataObject(pDataObj); qCDebug(lcQpaMime) << __FUNCTION__ << mime << has; return has; }
QVariant QWindowsInternalMimeData::retrieveData_sys(const QString &mimeType, QVariant::Type type) const { IDataObject *pDataObj = retrieveDataObject(); if (!pDataObj) return QVariant(); QVariant result; const QWindowsMimeConverter &mc = QWindowsContext::instance()->mimeConverter(); if (const QWindowsMime *converter = mc.converterToMime(mimeType, pDataObj)) result = converter->convertToMime(mimeType, pDataObj, type); releaseDataObject(pDataObj); if (QWindowsContext::verbose) { qCDebug(lcQpaMime) <<__FUNCTION__ << ' ' << mimeType << ' ' << type << " returns " << result.type() << (result.type() != QVariant::ByteArray ? result.toString() : QStringLiteral("<data>")); } return result; }
QVariant QWindowsInternalMimeData::retrieveData_sys(const QString &mimeType, QVariant::Type type) const { IDataObject *pDataObj = retrieveDataObject(); if (!pDataObj) return QVariant(); QVariant result; const QWindowsMimeConverter &mc = QWindowsContext::instance()->mimeConverter(); if (const QWindowsMime *converter = mc.converterToMime(mimeType, pDataObj)) result = converter->convertToMime(mimeType, pDataObj, type); releaseDataObject(pDataObj); if (QWindowsContext::verboseOLE) { QDebug nospace = qDebug().nospace(); nospace << __FUNCTION__ << ' ' << mimeType << ' ' << type << " returns " << result.type(); if (result.type() != QVariant::ByteArray) nospace << ' ' << result; } return result; }