aboutsummaryrefslogtreecommitdiff
path: root/ui.qt/source/document.hpp
diff options
context:
space:
mode:
authorrtk0c <[email protected]>2022-06-27 00:09:44 +0000
committerrtk0c <[email protected]>2022-06-27 00:09:44 +0000
commit753c26d320e894069157bd401f7779ad07073d7c (patch)
tree8dc49b0b68285396c6b619db6c1443b1ecc5abd5 /ui.qt/source/document.hpp
parent21aa12d231ab70529322bab325df8293da63dc8d (diff)
(From git) Initial Qt GUI setup
git-svn-id: file:///home/arch/svn/epistmool/trunk@2 71f44415-077c-4ad7-a976-72ddbf76608f
Diffstat (limited to 'ui.qt/source/document.hpp')
-rw-r--r--ui.qt/source/document.hpp62
1 files changed, 62 insertions, 0 deletions
diff --git a/ui.qt/source/document.hpp b/ui.qt/source/document.hpp
new file mode 100644
index 0000000..ba11e26
--- /dev/null
+++ b/ui.qt/source/document.hpp
@@ -0,0 +1,62 @@
+#pragma once
+
+#include "fwd.hpp"
+
+#include <QAbstractItemModel>
+#include <QDateTime>
+#include <QObject>
+#include <QQuickTextDocument>
+
+class DocumentBlock : public QObject
+{
+ Q_OBJECT
+ QML_ELEMENT
+
+ Q_PROPERTY(QQuickTextDocument* textDocument READ getDoc WRITE setDoc NOTIFY docChanged)
+
+private:
+ DocumentModel* mModel;
+ QQuickTextDocument* mDoc = nullptr;
+ QDateTime mModifyTime;
+
+public:
+ explicit DocumentBlock(QObject* parent = nullptr);
+
+ DocumentModel* getModel() const;
+ void setModel(DocumentModel* newModel);
+
+ QQuickTextDocument* getDoc() const;
+ void setDoc(QQuickTextDocument* newDoc);
+
+ const QDateTime& getModifyTime() const;
+
+signals:
+ void docChanged();
+ void modificationChanged();
+};
+
+class DocumentModel : public QAbstractItemModel
+{
+ Q_OBJECT
+ QML_ELEMENT
+
+private:
+ std::vector<DocumentBlock*> mBlocks;
+
+public:
+ enum DocumentRoles {
+ ModifyTimeRole = Qt::UserRole + 1,
+ };
+
+ DocumentModel(QObject* parent = nullptr);
+
+ void appendBlock(DocumentBlock* block);
+ // TODO
+ // void moveBlock()
+
+ int rowCount(const QModelIndex& parent = QModelIndex()) const override;
+ QVariant data(const QModelIndex& index, int role = Qt::DisplayRole) const override;
+
+protected:
+ QHash<int, QByteArray> roleNames() const override;
+};