ICF 3.0.5.47
Technical documentation of ICF Libraries
IDocumentManager.h
Go to the documentation of this file.
1/********************************************************************************
2** This file is part of the ICF Framework. Copyright (C) Witold Gantzke & Kirill Lepskiy
3** ICF Framework may be used under the terms of the LGPL License v. 2.1 by the Free Software Foundation.
4********************************************************************************/
5
6#pragma once
7
8
9// Qt includes
10#include <QtCore/QByteArray>
11#include <QtCore/QMap>
12
13// Qt includes
14#include <QtCore/QString>
15
16// ICF includes
17#include <istd/IChangeable.h>
18#include <idoc/IUndoManager.h>
20
21
22namespace iproc
23{
24 class IProgressManager;
25}
26
27
28namespace idoc
29{
30
31
36 virtual public istd::IChangeable,
37 virtual public IDocumentTypesInfo
38{
39public:
51
53 {
54 QString filePath;
55 QByteArray documentTypeId;
56 bool isDirty;
57 };
58
63 {
64 OF_FILE_NEW = 0x0001,
65 OF_FILE_OPEN = 0x0002,
66 OF_FILE_SAVE = 0x0004,
68 OF_KNOWN_PATH = 0x0010
69 };
70
74 typedef QMap<QString, QByteArray> FileToTypeMap;
75
79 virtual int GetAllowedOperationFlags(const istd::IPolymorphic* viewPtr = nullptr) const = 0;
80
84 virtual idoc::IUndoManager* GetUndoManagerForDocument(const istd::IChangeable* documentPtr) const = 0;
85
89 virtual int GetDocumentsCount() const = 0;
90
96 virtual istd::IChangeable& GetDocumentFromIndex(int index, DocumentInfo* documentInfoPtr = nullptr) const = 0;
97
101 virtual int GetViewsCount(int documentIndex) const = 0;
102
106 virtual istd::IPolymorphic* GetViewFromIndex(int documentIndex, int viewIndex) const = 0;
107
112 virtual istd::IPolymorphic* GetActiveView() const = 0;
113
117 virtual void SetActiveView(istd::IPolymorphic* viewPtr) = 0;
118
125 virtual istd::IChangeable* GetDocumentFromView(const istd::IPolymorphic& view, DocumentInfo* documentInfoPtr = nullptr) const = 0;
126
133 virtual istd::IPolymorphic* AddViewToDocument(const istd::IChangeable& document, const QByteArray& viewTypeId = QByteArray()) = 0;
134
139 virtual QByteArray GetDocumentTypeId(const istd::IChangeable& document) const = 0;
140
151 virtual bool InsertNewDocument(
152 const QByteArray& documentTypeId,
153 bool createView = true,
154 const QByteArray& viewTypeId = "",
155 istd::IChangeable** newDocumentPtr = nullptr,
156 bool beQuiet = false,
157 bool* ignoredPtr = nullptr) = 0;
158
171 virtual bool OpenDocument(
172 const QByteArray* documentTypeIdPtr = nullptr,
173 const QString* fileNamePtr = nullptr,
174 bool createView = true,
175 const QByteArray& viewTypeId = "",
176 istd::IChangeable** documentPtr = nullptr,
177 FileToTypeMap* loadedMapPtr = nullptr,
178 bool beQuiet = false,
179 bool* ignoredPtr = nullptr,
180 iproc::IProgressManager* progressManagerPtr = nullptr) = 0;
181
190 virtual bool SaveDocument(
191 int documentIndex = -1,
192 bool requestFileName = false,
193 FileToTypeMap* savedMapPtr = nullptr,
194 bool beQuiet = false,
195 bool* ignoredPtr = nullptr,
196 iproc::IProgressManager* progressManagerPtr = nullptr) = 0;
197
205 virtual bool SaveDirtyDocuments(bool beQuiet = false, bool* ignoredPtr = nullptr) = 0;
206
214 virtual bool CloseDocument(int documentIndex = -1, bool beQuiet = false, bool* ignoredPtr = nullptr) = 0;
215
223 virtual bool CloseView(istd::IPolymorphic* viewPtr = nullptr, bool beQuiet = false, bool* ignoredPtr = nullptr) = 0;
224};
225
226
227} // namespace idoc
228
229
Provide set of user actions needed to manage documents in MVC (Model View Controller) concept.
virtual idoc::IUndoManager * GetUndoManagerForDocument(const istd::IChangeable *documentPtr) const =0
Return undo mananger for document documenPtr.
ChangeFlags
Possible changes in the mananger data model.
virtual istd::IChangeable & GetDocumentFromIndex(int index, DocumentInfo *documentInfoPtr=nullptr) const =0
Get document at specified index.
virtual void SetActiveView(istd::IPolymorphic *viewPtr)=0
Indicate that some view is active now.
QMap< QString, QByteArray > FileToTypeMap
Map from file path to ducument type ID's.
virtual bool SaveDocument(int documentIndex=-1, bool requestFileName=false, FileToTypeMap *savedMapPtr=nullptr, bool beQuiet=false, bool *ignoredPtr=nullptr, iproc::IProgressManager *progressManagerPtr=nullptr)=0
Save document.
virtual istd::IPolymorphic * GetViewFromIndex(int documentIndex, int viewIndex) const =0
Get single view using its and document indices.
virtual int GetViewsCount(int documentIndex) const =0
Get number of view for specified document.
OperationFlags
Flags describing possible operations.
virtual bool CloseDocument(int documentIndex=-1, bool beQuiet=false, bool *ignoredPtr=nullptr)=0
Close document and all its views.
virtual QByteArray GetDocumentTypeId(const istd::IChangeable &document) const =0
Get ID of document type managed by this object.
virtual bool OpenDocument(const QByteArray *documentTypeIdPtr=nullptr, const QString *fileNamePtr=nullptr, bool createView=true, const QByteArray &viewTypeId="", istd::IChangeable **documentPtr=nullptr, FileToTypeMap *loadedMapPtr=nullptr, bool beQuiet=false, bool *ignoredPtr=nullptr, iproc::IProgressManager *progressManagerPtr=nullptr)=0
Opens document(s) from the file list.
virtual bool SaveDirtyDocuments(bool beQuiet=false, bool *ignoredPtr=nullptr)=0
Ask user (optional) and save all dirty (changed) documents.
virtual int GetAllowedOperationFlags(const istd::IPolymorphic *viewPtr=nullptr) const =0
Get flags of allowed operations.
virtual bool InsertNewDocument(const QByteArray &documentTypeId, bool createView=true, const QByteArray &viewTypeId="", istd::IChangeable **newDocumentPtr=nullptr, bool beQuiet=false, bool *ignoredPtr=nullptr)=0
Creates a new document with the document ID documentTypeId.
virtual istd::IChangeable * GetDocumentFromView(const istd::IPolymorphic &view, DocumentInfo *documentInfoPtr=nullptr) const =0
Return the document assigned to view.
virtual bool CloseView(istd::IPolymorphic *viewPtr=nullptr, bool beQuiet=false, bool *ignoredPtr=nullptr)=0
Close view.
virtual istd::IPolymorphic * AddViewToDocument(const istd::IChangeable &document, const QByteArray &viewTypeId=QByteArray())=0
Add a new view to the document.
virtual int GetDocumentsCount() const =0
Get number of opened documents.
virtual istd::IPolymorphic * GetActiveView() const =0
Return the active document.
Provide information about different document types.
Interface providing UNDO/REDO functionality.
Consume information about progress of some process.
Common interface for data model objects, which can be changed.
Definition IChangeable.h:32
Contains the system indenendent basic implementations of Document/View design pattern.
This namespace containes interfaces and implementation of data processing concepts.

© Witold Gantzke and Kirill Lepskiy