9#include <idoc/IUndoManager.h>
10#include <iser/ISerializable.h>
11#include <imod/IObserver.h>
18class IDocumentManager :
virtual public iser::ISerializable
23 CF_NEW_DOCUMENT_CREATED = 170000,
27 CF_DOCUMENT_UNDO_CHANGED,
31 CF_DOCUMENT_DATA_LOADED
38 OS_INVALID_DOCUMENT_ID,
39 OS_INVALID_DOCUMENT_DATA,
49 bool hasNameProvider =
false;
50 bool isLoading =
false;
53 struct DocumentListItem :
public DocumentInfo
55 QByteArray documentId;
57 typedef QList<DocumentListItem> DocumentList;
59 struct DocumentNotification :
public DocumentListItem
63 typedef std::shared_ptr<DocumentNotification> DocumentNotificationPtr;
65 struct DocumentUndoRedoNotification
68 QByteArray documentId;
70 int availableUndoSteps = 0;
71 int availableRedoSteps = 0;
72 QStringList undoLevelDescriptions;
73 QStringList redoLevelDescriptions;
76 struct DocumentClosedNotification
79 QByteArray documentId;
82 static const QByteArray CN_NEW_DOCUMENT_CREATED;
83 typedef DocumentNotification NewDocumentCreatedInfo;
85 static const QByteArray CN_DOCUMENT_OPENED;
86 typedef DocumentNotification DocumentOpenedInfo;
88 static const QByteArray CN_DOCUMENT_RENAMED;
89 typedef DocumentNotification DocumentRenamedInfo;
91 static const QByteArray CN_DOCUMENT_CHANGED;
92 typedef DocumentNotification DocumentChangedInfo;
94 static const QByteArray CN_DOCUMENT_UNDO_CHANGED;
95 typedef DocumentUndoRedoNotification DocumentUndoRedoChangedInfo;
97 static const QByteArray CN_DOCUMENT_SAVED;
98 typedef DocumentNotification DocumentSavedInfo;
100 static const QByteArray CN_DOCUMENT_SAVED_AS;
101 typedef DocumentNotification DocumentSavedAsInfo;
103 static const QByteArray CN_DOCUMENT_CLOSED;
104 typedef DocumentClosedNotification DocumentClosedInfo;
106 static const QByteArray CN_DOCUMENT_DATA_LOADED;
107 typedef DocumentNotification DocumentDataLoadedInfo;
112 virtual DocumentList GetOpenedDocumentList(
const QByteArray& userId)
const = 0;
118 virtual QByteArray CreateNewDocument(
const QByteArray& userId,
const QByteArray& documentTypeId) = 0;
130 virtual QByteArray OpenDocument(
const QByteArray& userId,
const QUrl& url) = 0;
135 virtual OperationStatus GetDocumentName(
const QByteArray& userId,
const QByteArray& documentId, QString& documentName)
const = 0;
140 virtual OperationStatus SetDocumentName(
const QByteArray& userId,
const QByteArray& documentId,
const QString& documentName) = 0;
145 virtual const istd::IChangeable* GetDocumentPtr(
const QByteArray& userId,
const QByteArray& documentId)
const = 0;
150 virtual OperationStatus GetDocumentData(
const QByteArray & userId,
const QByteArray & documentId, istd::IChangeableSharedPtr& documentPtr)
const = 0;
155 virtual OperationStatus SetDocumentData(
const QByteArray& userId,
const QByteArray& documentId,
const istd::IChangeable& document) = 0;
160 virtual OperationStatus SaveDocument(
161 const QByteArray& userId,
162 const QByteArray& documentId,
163 const QString& documentName = QString(),
164 QString* errorMessage =
nullptr) = 0;
169 virtual OperationStatus CloseDocument(
const QByteArray& userId,
const QByteArray& documentId) = 0;
174 virtual OperationStatus GetDocumentUndoManager(
175 const QByteArray& userId,
const QByteArray& documentId, idoc::IUndoManager*& undoManagerPtr)
const = 0;
180 virtual OperationStatus RegisterDocumentObserver(
const QByteArray& userId,
const QByteArray& documentId, imod::IObserver& observer) = 0;
185 virtual OperationStatus UnregisterDocumentObserver(
const QByteArray& userId,
const QByteArray& documentId, imod::IObserver& observer) = 0;
192Q_DECLARE_METATYPE(imtdoc::IDocumentManager::DocumentNotification);
193Q_DECLARE_METATYPE(imtdoc::IDocumentManager::DocumentUndoRedoNotification);
194Q_DECLARE_METATYPE(imtdoc::IDocumentManager::DocumentClosedNotification);