File indexing completed on 2024-05-19 05:21:44
0001 /* 0002 SPDX-FileCopyrightText: 2015-2024 Laurent Montel <montel@kde.org> 0003 0004 SPDX-License-Identifier: LGPL-2.0-or-later 0005 */ 0006 0007 #pragma once 0008 0009 #include "kpimtextedit_export.h" 0010 #include "richtextcomposer.h" 0011 #include <QObject> 0012 #include <memory> 0013 namespace KPIMTextEdit 0014 { 0015 class RichTextComposer; 0016 class NestedListHelper; 0017 class RichTextComposerImages; 0018 /** 0019 * @brief The RichTextComposerControler class 0020 * @author Laurent Montel <montel@kde.org> 0021 */ 0022 class KPIMTEXTEDIT_EXPORT RichTextComposerControler : public QObject 0023 { 0024 Q_OBJECT 0025 public: 0026 explicit RichTextComposerControler(RichTextComposer *richtextComposer, QObject *parent = nullptr); 0027 ~RichTextComposerControler() override; 0028 0029 [[nodiscard]] RichTextComposer *richTextComposer() const; 0030 0031 [[nodiscard]] QString currentLinkUrl() const; 0032 0033 [[nodiscard]] QString currentLinkText() const; 0034 void selectLinkText() const; 0035 [[nodiscard]] QString toCleanHtml() const; 0036 0037 [[nodiscard]] bool canIndentList() const; 0038 [[nodiscard]] bool canDedentList() const; 0039 0040 [[nodiscard]] NestedListHelper *nestedListHelper() const; 0041 void insertLink(const QString &url); 0042 void setCursorPositionFromStart(unsigned int pos); 0043 void ensureCursorVisible(); 0044 0045 RichTextComposerImages *composerImages() const; 0046 [[nodiscard]] bool painterActive() const; 0047 void disablePainter(); 0048 [[nodiscard]] bool isFormattingUsed() const; 0049 0050 void setFontForWholeText(const QFont &font); 0051 void textModeChanged(KPIMTextEdit::RichTextComposer::Mode mode); 0052 void updateLink(const QString &linkUrl, const QString &linkText); 0053 [[nodiscard]] QString toWrappedPlainText(QTextDocument *doc) const; 0054 [[nodiscard]] QString toWrappedPlainText() const; 0055 [[nodiscard]] QString toCleanPlainText(const QString &plainText = QString()) const; 0056 void addQuotes(const QString &defaultQuote); 0057 public Q_SLOTS: 0058 void addCheckbox(bool add = true); 0059 void insertHorizontalRule(); 0060 void setHeadingLevel(int level); 0061 void alignLeft(); 0062 void alignCenter(); 0063 void alignRight(); 0064 void alignJustify(); 0065 void makeRightToLeft(); 0066 void makeLeftToRight(); 0067 void setTextBold(bool bold); 0068 void setTextItalic(bool italic); 0069 void setTextUnderline(bool underline); 0070 void setTextStrikeOut(bool strikeOut); 0071 void setTextForegroundColor(const QColor &color); 0072 void setTextBackgroundColor(const QColor &color); 0073 void setFontFamily(const QString &fontFamily); 0074 void setFontSize(int size); 0075 void setFont(const QFont &font); 0076 void setTextSuperScript(bool superscript); 0077 void setTextSubScript(bool subscript); 0078 void setChangeTextForegroundColor(); 0079 void setChangeTextBackgroundColor(); 0080 void manageLink(); 0081 void indentListMore(); 0082 void indentListLess(); 0083 void setListStyle(int styleIndex); 0084 void slotAddEmoticon(const QString &text); 0085 void slotInsertHtml(); 0086 void slotFormatReset(); 0087 void slotPasteWithoutFormatting(); 0088 void slotPasteAsQuotation(); 0089 void slotRemoveQuotes(); 0090 void slotAddQuotes(); 0091 void slotAddImage(); 0092 void slotFormatPainter(bool active); 0093 void ensureCursorVisibleDelayed(); 0094 0095 protected: 0096 bool event(QEvent *ev) override; 0097 0098 private: 0099 KPIMTEXTEDIT_NO_EXPORT void regenerateColorScheme(); 0100 class RichTextComposerControllerPrivate; 0101 std::unique_ptr<RichTextComposerControllerPrivate> const d; 0102 }; 0103 }