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 }