21#include "texthtmlbuilder.h"
23#include <QtCore/QList>
24#include <QtGui/QTextDocument>
29class TextHTMLBuilderPrivate
45TextHTMLBuilder::TextHTMLBuilder()
50TextHTMLBuilder::~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>"));
103 Q_D(TextHTMLBuilder);
105 QStringLiteral(
"<span style=\"color:%1;\">").arg(brush.
color().
name()));
110 Q_D(TextHTMLBuilder);
111 d->m_text.append(QStringLiteral(
"</span>"));
116 Q_D(TextHTMLBuilder);
117 d->m_text.append(QStringLiteral(
"<span style=\"background-color:%1;\">")
123 Q_D(TextHTMLBuilder);
124 d->m_text.append(QStringLiteral(
"</span>"));
129 Q_D(TextHTMLBuilder);
133 QStringLiteral(
"<a href=\"%1\" name=\"%2\">").arg(href, name));
135 d->m_text.append(QStringLiteral(
"<a href=\"%1\">").arg(href));
139 d->m_text.append(QStringLiteral(
"<a name=\"%1\">").arg(name));
146 Q_D(TextHTMLBuilder);
147 d->m_text.append(QStringLiteral(
"</a>"));
152 Q_D(TextHTMLBuilder);
154 QStringLiteral(
"<span style=\"font-family:%1;\">").arg(family));
159 Q_D(TextHTMLBuilder);
160 d->m_text.append(QStringLiteral(
"</span>"));
165 Q_D(TextHTMLBuilder);
166 d->m_text.append(QStringLiteral(
"<span style=\"font-size:%1pt;\">")
172 Q_D(TextHTMLBuilder);
173 d->m_text.append(QStringLiteral(
"</span>"));
177 qreal bottomMargin, qreal leftMargin,
180 Q_D(TextHTMLBuilder);
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));
203 d->m_text.append(QStringLiteral(
"<p align=\"right\" "));
205 d->m_text.append(QStringLiteral(
"<p align=\"center\" "));
207 d->m_text.append(QStringLiteral(
"<p align=\"justify\" "));
209 d->m_text.append(QStringLiteral(
"<p"));
211 d->m_text.append(QStringLiteral(
"<p"));
215 d->m_text.append(QStringLiteral(
" \"") + styleString +
QLatin1Char(
'"'));
223 Q_D(TextHTMLBuilder);
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>"));
250 Q_D(TextHTMLBuilder);
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>"));
277 Q_D(TextHTMLBuilder);
278 d->m_text.append(QStringLiteral(
"</p>\n"));
283 Q_D(TextHTMLBuilder);
284 d->m_text.append(QStringLiteral(
"<p> "));
289 Q_D(TextHTMLBuilder);
291 d->m_text.append(QStringLiteral(
"<hr width=\"%1\" />\n").arg(width));
293 d->m_text.append(QStringLiteral(
"<hr />\n"));
298 Q_D(TextHTMLBuilder);
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(
"/>"));
309 Q_D(TextHTMLBuilder);
310 d->currentListItemStyles.append(type);
313 d->m_text.append(QStringLiteral(
"<ul type=\"disc\">\n"));
316 d->m_text.append(QStringLiteral(
"\n<ul type=\"circle\">\n"));
319 d->m_text.append(QStringLiteral(
"\n<ul type=\"square\">\n"));
322 d->m_text.append(QStringLiteral(
"\n<ol type=\"1\">\n"));
325 d->m_text.append(QStringLiteral(
"\n<ol type=\"a\">\n"));
328 d->m_text.append(QStringLiteral(
"\n<ol type=\"A\">\n"));
331 d->m_text.append(QStringLiteral(
"\n<ol type=\"i\">\n"));
334 d->m_text.append(QStringLiteral(
"\n<ol type=\"I\">\n"));
342 Q_D(TextHTMLBuilder);
343 switch (d->currentListItemStyles.last()) {
347 d->m_text.append(QStringLiteral(
"</ul>\n"));
354 d->m_text.append(QStringLiteral(
"</ol>\n"));
359 d->currentListItemStyles.removeLast();
363 Q_D(TextHTMLBuilder);
364 d->m_text.append(QStringLiteral(
"<li>"));
369 Q_D(TextHTMLBuilder);
370 d->m_text.append(QStringLiteral(
"</li>\n"));
375 Q_D(TextHTMLBuilder);
376 d->m_text.append(QStringLiteral(
"<sup>"));
381 Q_D(TextHTMLBuilder);
382 d->m_text.append(QStringLiteral(
"</sup>"));
387 Q_D(TextHTMLBuilder);
388 d->m_text.append(QStringLiteral(
"<sub>"));
393 Q_D(TextHTMLBuilder);
394 d->m_text.append(QStringLiteral(
"</sub>"));
400 Q_D(TextHTMLBuilder);
402 QStringLiteral(
"<table cellpadding=\"%1\" cellspacing=\"%2\" "
403 "width=\"%3\" border=\"1\">")
411 Q_D(TextHTMLBuilder);
412 d->m_text.append(QStringLiteral(
"<tr>"));
418 Q_D(TextHTMLBuilder);
420 QStringLiteral(
"<th width=\"%1\" colspan=\"%2\" rowspan=\"%3\">")
429 Q_D(TextHTMLBuilder);
431 QStringLiteral(
"<td width=\"%1\" colspan=\"%2\" rowspan=\"%3\">")
439 Q_D(TextHTMLBuilder);
440 d->m_text.append(QStringLiteral(
"</table>"));
445 Q_D(TextHTMLBuilder);
446 d->m_text.append(QStringLiteral(
"</tr>"));
451 Q_D(TextHTMLBuilder);
452 d->m_text.append(QStringLiteral(
"</th>"));
457 Q_D(TextHTMLBuilder);
458 d->m_text.append(QStringLiteral(
"</td>"));
463 Q_D(TextHTMLBuilder);
469 Q_D(TextHTMLBuilder);
470 d->m_text.append(text);
475 Q_D(TextHTMLBuilder);
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.
const QColor & color() const const
QString name() const const
QString & append(QChar ch)
bool isEmpty() const const
QString number(int n, int base)
QString toHtmlEscaped() const const