21 #include "texthtmlbuilder.h"
23 #include <QtCore/QList>
24 #include <QtGui/QTextDocument>
34 QList<QTextListFormat::Style> currentListItemStyles;
45 TextHTMLBuilder::TextHTMLBuilder()
50 TextHTMLBuilder::~TextHTMLBuilder() {
delete d_ptr; }
56 d->m_text.append(QStringLiteral(
"<strong>"));
62 d->m_text.append(QStringLiteral(
"</strong>"));
68 d->m_text.append(QStringLiteral(
"<em>"));
74 d->m_text.append(QStringLiteral(
"</em>"));
80 d->m_text.append(QStringLiteral(
"<u>"));
86 d->m_text.append(QStringLiteral(
"</u>"));
92 d->m_text.append(QStringLiteral(
"<s>"));
98 d->m_text.append(QStringLiteral(
"</s>"));
105 QStringLiteral(
"<span style=\"color:%1;\">").arg(brush.color().name()));
111 d->m_text.append(QStringLiteral(
"</span>"));
117 d->m_text.append(QStringLiteral(
"<span style=\"background-color:%1;\">")
118 .arg(brush.color().name()));
124 d->m_text.append(QStringLiteral(
"</span>"));
130 if (!href.isEmpty()) {
131 if (!name.isEmpty()) {
133 QStringLiteral(
"<a href=\"%1\" name=\"%2\">").arg(href, name));
135 d->m_text.append(QStringLiteral(
"<a href=\"%1\">").arg(href));
138 if (!name.isEmpty()) {
139 d->m_text.append(QStringLiteral(
"<a name=\"%1\">").arg(name));
147 d->m_text.append(QStringLiteral(
"</a>"));
154 QStringLiteral(
"<span style=\"font-family:%1;\">").arg(family));
160 d->m_text.append(QStringLiteral(
"</span>"));
166 d->m_text.append(QStringLiteral(
"<span style=\"font-size:%1pt;\">")
167 .arg(QString::number(size)));
173 d->m_text.append(QStringLiteral(
"</span>"));
177 qreal bottomMargin, qreal leftMargin,
185 if (topMargin != 0) {
186 styleString.append(QStringLiteral(
"margin-top:%1;").arg(topMargin));
188 if (bottomMargin != 0) {
189 styleString.append(QStringLiteral(
"margin-bottom:%1;").arg(bottomMargin));
191 if (leftMargin != 0) {
192 styleString.append(QStringLiteral(
"margin-left:%1;").arg(leftMargin));
194 if (rightMargin != 0) {
195 styleString.append(QStringLiteral(
"margin-right:%1;").arg(rightMargin));
202 if (al & Qt::AlignRight) {
203 d->m_text.append(QStringLiteral(
"<p align=\"right\" "));
204 }
else if (al & Qt::AlignHCenter) {
205 d->m_text.append(QStringLiteral(
"<p align=\"center\" "));
206 }
else if (al & Qt::AlignJustify) {
207 d->m_text.append(QStringLiteral(
"<p align=\"justify\" "));
208 }
else if (al & Qt::AlignLeft) {
209 d->m_text.append(QStringLiteral(
"<p"));
211 d->m_text.append(QStringLiteral(
"<p"));
214 if (!styleString.isEmpty()) {
215 d->m_text.append(QStringLiteral(
" \"") + styleString + QLatin1Char(
'"'));
217 d->m_text.append(QLatin1Char(
'>'));
226 d->m_text.append(QStringLiteral(
"<h1>"));
229 d->m_text.append(QStringLiteral(
"<h2>"));
232 d->m_text.append(QStringLiteral(
"<h3>"));
235 d->m_text.append(QStringLiteral(
"<h4>"));
238 d->m_text.append(QStringLiteral(
"<h5>"));
241 d->m_text.append(QStringLiteral(
"<h6>"));
253 d->m_text.append(QStringLiteral(
"</h1>"));
256 d->m_text.append(QStringLiteral(
"</h2>"));
259 d->m_text.append(QStringLiteral(
"</h3>"));
262 d->m_text.append(QStringLiteral(
"</h4>"));
265 d->m_text.append(QStringLiteral(
"</h5>"));
268 d->m_text.append(QStringLiteral(
"</h6>"));
278 d->m_text.append(QStringLiteral(
"</p>\n"));
284 d->m_text.append(QStringLiteral(
"<p> "));
291 d->m_text.append(QStringLiteral(
"<hr width=\"%1\" />\n").arg(width));
293 d->m_text.append(QStringLiteral(
"<hr />\n"));
299 d->m_text.append(QStringLiteral(
"<img src=\"%1\" ").arg(src));
301 d->m_text.append(QStringLiteral(
"width=\"%2\" ").arg(width));
303 d->m_text.append(QStringLiteral(
"height=\"%2\" ").arg(height));
304 d->m_text.append(QStringLiteral(
"/>"));
310 d->currentListItemStyles.append(type);
312 case QTextListFormat::ListDisc:
313 d->m_text.append(QStringLiteral(
"<ul type=\"disc\">\n"));
315 case QTextListFormat::ListCircle:
316 d->m_text.append(QStringLiteral(
"\n<ul type=\"circle\">\n"));
318 case QTextListFormat::ListSquare:
319 d->m_text.append(QStringLiteral(
"\n<ul type=\"square\">\n"));
321 case QTextListFormat::ListDecimal:
322 d->m_text.append(QStringLiteral(
"\n<ol type=\"1\">\n"));
324 case QTextListFormat::ListLowerAlpha:
325 d->m_text.append(QStringLiteral(
"\n<ol type=\"a\">\n"));
327 case QTextListFormat::ListUpperAlpha:
328 d->m_text.append(QStringLiteral(
"\n<ol type=\"A\">\n"));
330 case QTextListFormat::ListLowerRoman:
331 d->m_text.append(QStringLiteral(
"\n<ol type=\"i\">\n"));
333 case QTextListFormat::ListUpperRoman:
334 d->m_text.append(QStringLiteral(
"\n<ol type=\"I\">\n"));
343 switch (d->currentListItemStyles.last()) {
344 case QTextListFormat::ListDisc:
345 case QTextListFormat::ListCircle:
346 case QTextListFormat::ListSquare:
347 d->m_text.append(QStringLiteral(
"</ul>\n"));
349 case QTextListFormat::ListDecimal:
350 case QTextListFormat::ListLowerAlpha:
351 case QTextListFormat::ListUpperAlpha:
352 case QTextListFormat::ListLowerRoman:
353 case QTextListFormat::ListUpperRoman:
354 d->m_text.append(QStringLiteral(
"</ol>\n"));
359 d->currentListItemStyles.removeLast();
364 d->m_text.append(QStringLiteral(
"<li>"));
370 d->m_text.append(QStringLiteral(
"</li>\n"));
376 d->m_text.append(QStringLiteral(
"<sup>"));
382 d->m_text.append(QStringLiteral(
"</sup>"));
388 d->m_text.append(QStringLiteral(
"<sub>"));
394 d->m_text.append(QStringLiteral(
"</sub>"));
402 QStringLiteral(
"<table cellpadding=\"%1\" cellspacing=\"%2\" "
403 "width=\"%3\" border=\"1\">")
412 d->m_text.append(QStringLiteral(
"<tr>"));
420 QStringLiteral(
"<th width=\"%1\" colspan=\"%2\" rowspan=\"%3\">")
431 QStringLiteral(
"<td width=\"%1\" colspan=\"%2\" rowspan=\"%3\">")
440 d->m_text.append(QStringLiteral(
"</table>"));
446 d->m_text.append(QStringLiteral(
"</tr>"));
452 d->m_text.append(QStringLiteral(
"</th>"));
458 d->m_text.append(QStringLiteral(
"</td>"));
464 d->m_text.append(text.toHtmlEscaped());
470 d->m_text.append(text);
476 auto ret = d->m_text;
Interface for creating marked-up text output.
The TextHTMLBuilder creates a clean html markup output.
void beginTableCell(const QString &width, int colspan, int rowspan) override
void beginEmph() override
void beginTable(qreal cellpadding, qreal cellspacing, const QString &width) override
void appendRawText(const QString &text) override
void beginSubscript() override
void beginSuperscript() override
void beginTableRow() override
void endParagraph() override
void endSuperscript() override
QString getResult() override
void beginAnchor(const QString &href={}, const QString &name={}) override
void endStrong() override
void endAnchor() override
void beginListItem() override
void beginForeground(const QBrush &brush) override
void endBackground() override
void beginBackground(const QBrush &brush) override
void appendLiteralText(const QString &text) override
void beginStrikeout() override
void beginHeader(int level) override
void endHeader(int level) override
void endTableHeaderCell() override
void beginTableHeaderCell(const QString &width, int colspan, int rowspan) override
void endFontFamily() override
void endStrikeout() override
void endFontPointSize() override
void insertHorizontalRule(int width=-1) override
void endTableCell() override
void endForeground() override
void insertImage(const QString &src, qreal width, qreal height) override
void beginStrong() override
void beginUnderline() override
void beginList(QTextListFormat::Style type) override
void beginFontFamily(const QString &family) override
void endUnderline() override
void beginFontPointSize(int size) override
void endTableRow() override
void addNewline() override
void endSubscript() override
void endListItem() override
void beginParagraph(Qt::Alignment al=Qt::AlignLeft, qreal topMargin=0.0, qreal bottomMargin=0.0, qreal leftMargin=0.0, qreal rightMargin=0.0) override
The Cutelee namespace holds all public Cutelee API.