aboutsummaryrefslogtreecommitdiff
path: root/ui.qt/src/Document.hpp
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2022-07-01 18:12:31 +0000
committerrtk0c <[email protected]>2022-07-01 18:12:31 +0000
commitb992ae0fa4d792002ffae10a9ef893ef4fa42ac4 (patch)
treeb3bfd176df672eefd9a6a627bfeddd03f22cf458 /ui.qt/src/Document.hpp
parentfa744c91b0b15d5978e915816e712e388ead7e64 (diff)
Convert hardcoding files in CMakeLists.txt to file(GLOB)
git-svn-id: file:///home/arch/svn/epistmool/trunk@8 71f44415-077c-4ad7-a976-72ddbf76608f
Diffstat (limited to 'ui.qt/src/Document.hpp')
-rw-r--r--ui.qt/src/Document.hpp72
1 files changed, 72 insertions, 0 deletions
diff --git a/ui.qt/src/Document.hpp b/ui.qt/src/Document.hpp
new file mode 100644
index 0000000..5ef1bba
--- /dev/null
+++ b/ui.qt/src/Document.hpp
@@ -0,0 +1,72 @@
+#pragma once
+
+#include "fwd.hpp"
+
+#include <QAbstractItemModel>
+#include <QDateTime>
+#include <QObject>
+#include <QQuickTextDocument>
+#include <QTextCharFormat>
+
+// To be instanciated in QML as the logic backend to some TextArea
+class DocumentHandler : public QObject
+{
+ Q_OBJECT
+ QML_ELEMENT
+
+ Q_PROPERTY(QQuickTextDocument* document READ getDoc WRITE setDoc NOTIFY docChanged)
+ Q_PROPERTY(QDateTime modifyTime READ getModifyTime NOTIFY modificationChanged)
+
+ Q_PROPERTY(int cursorPos READ getCursorPos WRITE setCursorPos NOTIFY cursorPosChanged)
+ Q_PROPERTY(int selectionBegin READ getSelectionBegin WRITE setSelectionBegin NOTIFY selectionBeginChanged)
+ Q_PROPERTY(int selectionEnd READ getSelectionEnd WRITE setSelectionEnd NOTIFY selectionEndChanged)
+
+ Q_PROPERTY(QFont activeFont READ getActiveFont WRITE setActiveFont NOTIFY activeFontChanged)
+ Q_PROPERTY(QColor activeTextColor READ getActiveTextColor WRITE setActiveTextColor NOTIFY activeTextColorChanged)
+
+private:
+ QQuickTextDocument* mDoc = nullptr;
+ QDateTime mModifyTime;
+
+ int mCursorPos;
+ int mSelectionBegin;
+ int mSelectionEnd;
+
+public:
+ explicit DocumentHandler(QObject* parent = nullptr);
+
+ QQuickTextDocument* getDoc() const;
+ void setDoc(QQuickTextDocument* newDoc);
+
+ const QDateTime& getModifyTime() const;
+
+ int getCursorPos() const;
+ void setCursorPos(int newCursorPos);
+
+ int getSelectionBegin() const;
+ void setSelectionBegin(int newSelectionBegin);
+
+ int getSelectionEnd() const;
+ void setSelectionEnd(int newSelectionEnd);
+
+ QFont getActiveFont() const;
+ void setActiveFont(const QFont& font);
+
+ QColor getActiveTextColor() const;
+ void setActiveTextColor(const QColor& color);
+
+signals:
+ void docChanged(QQuickTextDocument* oldDoc);
+ void modificationChanged(); // Redirected from the currently bound document
+
+ void cursorPosChanged();
+ void selectionBeginChanged();
+ void selectionEndChanged();
+
+ void activeFontChanged();
+ void activeTextColorChanged();
+
+private:
+ QTextCursor makeTextCursor() const;
+ void mergeFormatOnWordOrSelection(const QTextCharFormat& format);
+};