File indexing completed on 2024-05-19 05:21:46
0001 /* 0002 SPDX-FileCopyrightText: 2019-2021 Montel Laurent <montel@kde.org> 0003 based on grantlee PlainTextMarkupBuilder 0004 0005 SPDX-License-Identifier: LGPL-2.0-or-later 0006 0007 */ 0008 0009 #pragma once 0010 #include "abstractmarkupbuilder.h" 0011 #include "kpimtextedit_export.h" 0012 0013 #define LETTERSINALPHABET 26 0014 #define DIGITSOFFSET 10 0015 0016 namespace KPIMTextEdit 0017 { 0018 class PlainTextMarkupBuilderPrivate; 0019 class KPIMTEXTEDIT_EXPORT PlainTextMarkupBuilder : virtual public KPIMTextEdit::AbstractMarkupBuilder 0020 { 0021 public: 0022 /** Construct a new PlainTextHTMLMarkupBuilder. */ 0023 PlainTextMarkupBuilder(); 0024 0025 ~PlainTextMarkupBuilder() override; 0026 0027 void setQuotePrefix(const QString &prefix); 0028 0029 void beginStrong() override; 0030 void endStrong() override; 0031 void beginEmph() override; 0032 void endEmph() override; 0033 void beginUnderline() override; 0034 void endUnderline() override; 0035 void beginStrikeout() override; 0036 void endStrikeout() override; 0037 0038 void beginAnchor(const QString &href = QString(), const QString &name = QString()) override; 0039 0040 void endAnchor() override; 0041 0042 void beginParagraph(Qt::Alignment a = Qt::AlignLeft, qreal top = 0.0, qreal bottom = 0.0, qreal left = 0.0, qreal right = 0.0, bool leftToRightText = false) 0043 override; 0044 0045 void endParagraph() override; 0046 void addNewline() override; 0047 0048 void insertHorizontalRule(int width = -1) override; 0049 0050 void insertImage(const QString &src, qreal width, qreal height) override; 0051 0052 void beginList(QTextListFormat::Style style) override; 0053 0054 void endList() override; 0055 0056 void beginListItem() override; 0057 0058 void endListItem() override; 0059 0060 void beginSuperscript() override; 0061 0062 void endSuperscript() override; 0063 0064 void beginSubscript() override; 0065 0066 void endSubscript() override; 0067 0068 void beginTable(qreal cellpadding, qreal cellspacing, const QString &width) override; 0069 0070 void beginTableRow() override; 0071 0072 void beginTableHeaderCell(const QString &width, int colSpan, int rowSpan) override; 0073 0074 void beginTableCell(const QString &width, int colSpan, int rowSpan) override; 0075 0076 void appendLiteralText(const QString &text) override; 0077 0078 void appendRawText(const QString &text) override; 0079 0080 /** 0081 Adds a reference to @p reference to the internal list of references in the 0082 document. 0083 */ 0084 [[nodiscard]] int addReference(const QString &reference); 0085 0086 /** 0087 Returns the finalised plain text markup, including references at the end. 0088 */ 0089 [[nodiscard]] QString getResult() override; 0090 0091 [[nodiscard]] bool isQuoteBlock(qreal top, qreal bottom, qreal left, qreal right) const; 0092 0093 void beginForeground(const QBrush &brush) override; 0094 void endForeground() override; 0095 void beginBackground(const QBrush &brush) override; 0096 void endBackground() override; 0097 void beginFontFamily(const QString &family) override; 0098 void endFontFamily() override; 0099 void beginFontPointSize(int size) override; 0100 void endFontPointSize() override; 0101 void endTable() override; 0102 void endTableRow() override; 0103 void endTableHeaderCell() override; 0104 void endTableCell() override; 0105 void beginHeader(int level) override; 0106 void endHeader(int level) override; 0107 void addSingleBreakLine() override; 0108 0109 private: 0110 PlainTextMarkupBuilderPrivate *const d_ptr; 0111 Q_DECLARE_PRIVATE(PlainTextMarkupBuilder) 0112 }; 0113 }