Warning, file /office/marknote/src/documenthandler.h was not indexed or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).

0001 // SPDX-FileCopyrightText: 2017 The Qt Company Ltd.
0002 // SPDX-License-Identifier: BSD-3-Clause
0003 
0004 #ifndef DOCUMENTHANDLER_H
0005 #define DOCUMENTHANDLER_H
0006 
0007 #include <QFont>
0008 #include <QObject>
0009 #include <QQuickTextDocument>
0010 #include <QTextCursor>
0011 #include <QUrl>
0012 
0013 class QTextDocument;
0014 
0015 class DocumentHandler : public QObject
0016 {
0017     Q_OBJECT
0018 
0019     Q_PROPERTY(QQuickTextDocument *document READ document WRITE setDocument NOTIFY documentChanged)
0020     Q_PROPERTY(int cursorPosition READ cursorPosition WRITE setCursorPosition NOTIFY cursorPositionChanged)
0021     Q_PROPERTY(int selectionStart READ selectionStart WRITE setSelectionStart NOTIFY selectionStartChanged)
0022     Q_PROPERTY(int selectionEnd READ selectionEnd WRITE setSelectionEnd NOTIFY selectionEndChanged)
0023 
0024     Q_PROPERTY(QColor textColor READ textColor WRITE setTextColor NOTIFY textColorChanged)
0025     Q_PROPERTY(QString fontFamily READ fontFamily WRITE setFontFamily NOTIFY fontFamilyChanged)
0026     Q_PROPERTY(Qt::Alignment alignment READ alignment WRITE setAlignment NOTIFY alignmentChanged)
0027 
0028     Q_PROPERTY(bool bold READ bold WRITE setBold NOTIFY boldChanged)
0029     Q_PROPERTY(bool italic READ italic WRITE setItalic NOTIFY italicChanged)
0030     Q_PROPERTY(bool underline READ underline WRITE setUnderline NOTIFY underlineChanged)
0031 
0032     // Q_PROPERTY(bool list READ list WRITE setList NOTIFY listChanged)
0033 
0034     Q_PROPERTY(int fontSize READ fontSize WRITE setFontSize NOTIFY fontSizeChanged)
0035 
0036     Q_PROPERTY(QString fileName READ fileName NOTIFY fileUrlChanged)
0037     Q_PROPERTY(QString fileType READ fileType NOTIFY fileUrlChanged)
0038     Q_PROPERTY(QUrl fileUrl READ fileUrl NOTIFY fileUrlChanged)
0039 
0040     Q_PROPERTY(bool modified READ modified WRITE setModified NOTIFY modifiedChanged)
0041 
0042 public:
0043     explicit DocumentHandler(QObject *parent = nullptr);
0044 
0045     QQuickTextDocument *document() const;
0046     void setDocument(QQuickTextDocument *document);
0047 
0048     int cursorPosition() const;
0049     void setCursorPosition(int position);
0050 
0051     int selectionStart() const;
0052     void setSelectionStart(int position);
0053 
0054     int selectionEnd() const;
0055     void setSelectionEnd(int position);
0056 
0057     QString fontFamily() const;
0058     void setFontFamily(const QString &family);
0059 
0060     QColor textColor() const;
0061     void setTextColor(const QColor &color);
0062 
0063     Qt::Alignment alignment() const;
0064     void setAlignment(Qt::Alignment alignment);
0065 
0066     bool bold() const;
0067     void setBold(bool bold);
0068 
0069     bool italic() const;
0070     void setItalic(bool italic);
0071 
0072     bool underline() const;
0073     void setUnderline(bool underline);
0074 
0075     // bool list() const;
0076     // void setList(bool list);
0077 
0078     int fontSize() const;
0079     void setFontSize(int size);
0080 
0081     QString fileName() const;
0082     QString fileType() const;
0083     QUrl fileUrl() const;
0084 
0085     bool modified() const;
0086     void setModified(bool m);
0087 
0088 public Q_SLOTS:
0089     void load(const QUrl &fileUrl);
0090     void saveAs(const QUrl &fileUrl);
0091 
0092 Q_SIGNALS:
0093     void documentChanged();
0094     void cursorPositionChanged();
0095     void selectionStartChanged();
0096     void selectionEndChanged();
0097 
0098     void fontFamilyChanged();
0099     void textColorChanged();
0100     void alignmentChanged();
0101 
0102     void boldChanged();
0103     void italicChanged();
0104     void underlineChanged();
0105 
0106     // void listChanged();
0107 
0108     void fontSizeChanged();
0109 
0110     void textChanged();
0111     void fileUrlChanged();
0112 
0113     void loaded(const QString &text, int format);
0114     void error(const QString &message);
0115 
0116     void modifiedChanged();
0117 
0118 private:
0119     void reset();
0120     QTextCursor textCursor() const;
0121     QTextDocument *textDocument() const;
0122     void mergeFormatOnWordOrSelection(const QTextCharFormat &format);
0123 
0124     QQuickTextDocument *m_document;
0125 
0126     int m_cursorPosition;
0127     int m_selectionStart;
0128     int m_selectionEnd;
0129 
0130     QFont m_font;
0131     QUrl m_fileUrl;
0132 };
0133 
0134 #endif // DOCUMENTHANDLER_H