29 QTextDocument *doc =
new QTextDocument(
this);
31 int size = 250*devicePixelRatioF();
33 thumb.setDevicePixelRatio(devicePixelRatioF());
34 doc->addResource(QTextDocument::ImageResource, QUrl(
"data:thumbnail"), thumb);
36 QString name =
index.data(Qt::DisplayRole).toString();
41 const QString row = QString(
"<tr><td align=\"right\"><p style=\"white-space:pre\">%1:</p></td><td align=\"left\">%2</td></tr>");
43 for(
int i = 0, n = properties.count(); i < n; ++i) {
47 if (properties[i].isMutable)
48 value = properties[i].state.toBool() ? i18n(
"Yes") : i18n(
"No");
50 value = properties[i].state.toString();
52 rows.append(row.arg(properties[i].name).arg(
value));
57 if (!dropReason.isEmpty()) {
58 dropReason = QString(
"<p align=\"center\"><b>%1</b></p>").arg(dropReason);
63 auto addWarningProperty = [&] (
const QString &propertyId) {
64 auto it = std::find_if(properties.begin(), properties.end(),
68 if (it != properties.end()) {
69 doc->addResource(QTextDocument::ImageResource, QUrl(QString(
"data:symbol_%1").arg(it->id)), it->onIcon.pixmap(QSize(32,32)).toImage());
70 errorMessage += QString(
"<table align=\"center\" border=\"0\"><tr valign=\"middle\"><td align=\"right\"><img src=\"data:symbol_%2\"></td><td align=\"left\"><b>%1</b></td></tr></table>").arg(it->state.toString(), it->id);
78 rows = QString(
"<table>%1</table>").arg(rows);
80 const QString image = QString(
"<table border=\"1\"><tr><td><img src=\"data:thumbnail\"></td></tr></table>");
81 const QString body = QString(
"<h3 align=\"center\">%1</h3>").arg(name)
84 + QString(
"<p><table><tr><td>%1</td><td>%2</td></tr></table></p>").arg(image).arg(rows);
85 const QString html = QString(
"<html><body>%1</body></html>").arg(body);
89 const int margin = 16;
90 doc->setTextWidth(qMin(doc->size().width() + 2 * margin, qreal(600.0)));
92 doc->setDocumentMargin(margin);
93 doc->setUseDesignMetrics(
true);