47 QTextDocument *doc =
new QTextDocument(
this);
49 QImage thumb =
index.data(Qt::DecorationRole).value<QImage>();
56 if (!thumb.isNull()) {
58 Qt::AspectRatioMode aspectRatioMode = thumb.height() == 1 ? Qt::IgnoreAspectRatio : Qt::KeepAspectRatio;
62 Qt::TransformationMode transformationMode = (thumb.width() < pixelSize || thumb.height() < pixelSize) ? Qt::FastTransformation : Qt::SmoothTransformation;
66 * devicePixelRatioF(),
73 QImage image(thumb.size(), QImage::Format_ARGB32);
78 gc.drawImage(QPoint(), thumb);
84 thumb.setDevicePixelRatio(devicePixelRatioF());
85 doc->addResource(QTextDocument::ImageResource, QUrl(
"data:thumbnail"), thumb);
87 QString name =
index.data(Qt::DisplayRole).toString();
90 if (!presetDisplayName.isEmpty()) {
91 name = presetDisplayName;
98 if (!tagsData.isEmpty()) {
99 const QString list = QString(
"<ul style=\"list-style-type: none; margin: 0px;\">%1</ul> ").arg(tagsData);
100 tagsRow = QString(
"<tr><td>%1:</td><td style=\"text-align: right;\">%2</td></tr>").arg(i18n(
"Tags"), list);
104 const QString brokenRow =
105 !brokenReason.isEmpty()
106 ? QString(
"<tr><td colspan=\"2\"><b>%1</b></td></tr>"
107 "<tr><td colspan=\"2\">%2</td></tr>")
108 .arg(i18n(
"Resource is broken!"), brokenReason)
112 if (location.isEmpty()) {
113 location = i18nc(
"a placeholder name for the default storage of resources",
"resource folder");
116 const QString locationRow = QString(
"<tr><td>%1:</td><td style=\"text-align: right;\">%2</td></tr>").arg(i18n(
"Location"), location);
118 const QString footerTable = QString(
"<p><table>%1%2%3</table></p>").arg(brokenRow).arg(tagsRow).arg(locationRow);
120 const QString image = QString(
"<center><img src=\"data:thumbnail\"></center>");
121 QString body = QString(
"<h3 align=\"center\">%1</h3>%2%3").arg(name, image, footerTable);
122 if (translatedName != name) {
123 body = QString(
"<h3 align=\"center\">%1</h3><h4 align=\"center\">%2</h4>%3%4").arg(name, translatedName, image, footerTable);
125 const QString html = QString(
"<html><body>%1</body></html>").arg(body);
129 const int margin = 16;
130 doc->setTextWidth(qMin(doc->size().width() + 2 * margin, qreal(500.0)));
131 doc->setDocumentMargin(margin);
132 doc->setUseDesignMetrics(
true);