From 753c26d320e894069157bd401f7779ad07073d7c Mon Sep 17 00:00:00 2001 From: rtk0c Date: Mon, 27 Jun 2022 00:09:44 +0000 Subject: (From git) Initial Qt GUI setup git-svn-id: file:///home/arch/svn/epistmool/trunk@2 71f44415-077c-4ad7-a976-72ddbf76608f --- ui.qt/source/document.hpp | 62 +++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 62 insertions(+) create mode 100644 ui.qt/source/document.hpp (limited to 'ui.qt/source/document.hpp') 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 +#include +#include +#include + +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 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 roleNames() const override; +}; -- cgit v1.2.3-70-g09d2