ACF $AcfVersion:0$
Classes | Public Types | Public Member Functions | List of all members
idoc::IDocumentManager Class Referenceabstract

Provide set of user actions needed to manage documents in MVC (Model View Controller) concept. More...

#include <IDocumentManager.h>

Inheritance diagram for idoc::IDocumentManager:
istd::IChangeable idoc::IDocumentTypesInfo istd::IPolymorphic istd::IPolymorphic idoc::CTmplBasedDocumentManagerBase idoc::CMultiDocumentManagerBase idoc::CSingleDocumentManagerBase iqtdoc::TQtDocumentManagerWrap< idoc::CMultiDocumentManagerBase, iqtgui::TRestorableGuiWrap< iqtgui::TGuiComponentBase< QMdiArea > > > iqtdoc::TQtDocumentManagerWrap< idoc::CSingleDocumentManagerBase, iqtgui::TRestorableGuiWrap< iqtgui::TGuiComponentBase< QWidget > > > iqtdoc::CMultiDocumentWorkspaceGuiComp iqtdoc::CSingleDocumentWorkspaceGuiComp

Classes

struct  DocumentInfo
 Information about a document managed by the document manager. More...
 

Public Types

enum  ChangeFlags {
  CF_DOCUMENT_RENAMED = 0x834d670 , CF_DOCUMENT_CREATED , CF_DOCUMENT_REMOVED , CF_DOCUMENT_COUNT_CHANGED ,
  CF_VIEW_ACTIVATION_CHANGED
}
 Possible changes in the manager data model. More...
 
enum  OperationFlags {
  OF_FILE_NEW = 0x0001 , OF_FILE_OPEN = 0x0002 , OF_FILE_SAVE = 0x0004 , OF_FILE_SAVE_AS = 0x0008 ,
  OF_KNOWN_PATH = 0x0010
}
 Flags describing possible operations that can be performed by the document manager. More...
 
typedef QMap< QString, QByteArray > FileToTypeMap
 Map from file path to document type ID's.
 
- Public Types inherited from istd::IChangeable
enum  ChangeFlags {
  CF_ACF_INTERNAL = 0 , CF_ALL_DATA , CF_ANY , CF_DESTROYING ,
  CF_DELEGATED , CF_NO_UNDO
}
 Data model change notification flags. More...
 
enum  SupportedOperations {
  SO_NONE = 0 , SO_OBSERVE = 1 << 0 , SO_COPY = 1 << 1 , SO_CLONE = 1 << 2 ,
  SO_COMPARE = 1 << 3 , SO_RESET = 1 << 4
}
 Flags for supported operations. More...
 
enum  CompatibilityMode { CM_STRICT , CM_WITHOUT_REFS , CM_WITH_REFS , CM_CONVERT }
 Control how relationship betweeen objects are interpreted. More...
 
typedef QMultiMap< QByteArray, QVariant > ChangeInfoMap
 
- Public Types inherited from idoc::IDocumentTypesInfo
enum  SupportedFeatures { SF_NEW_DOCUMENT = 0x0001 , SF_EDIT_DOCUMENT = 0x0010 , SF_DEFAULT = 0xffff }
 Enumeration for supported types of operations with documents. More...
 
typedef QVector< QByteArray > Ids
 Type definition for document type ID collections.
 

Public Member Functions

virtual int GetAllowedOperationFlags (const istd::IPolymorphic *viewPtr=NULL) const =0
 Get flags of allowed operations.
 
virtual idoc::IUndoManagerGetUndoManagerForDocument (const istd::IChangeable *documentPtr) const =0
 Return undo manager for document documentPtr.
 
virtual int GetDocumentsCount () const =0
 Get number of opened documents.
 
virtual istd::IChangeableGetDocumentFromIndex (int index, DocumentInfo *documentInfoPtr=NULL) const =0
 Get document at specified index.
 
virtual int GetViewsCount (int documentIndex) const =0
 Get number of view for specified document.
 
virtual istd::IPolymorphicGetViewFromIndex (int documentIndex, int viewIndex) const =0
 Get single view using its and document indices.
 
virtual istd::IPolymorphicGetActiveView () const =0
 Return the active document.
 
virtual void SetActiveView (istd::IPolymorphic *viewPtr)=0
 Indicate that some view is active now.
 
virtual istd::IChangeableGetDocumentFromView (const istd::IPolymorphic &view, DocumentInfo *documentInfoPtr=NULL) const =0
 Return the document assigned to view.
 
virtual istd::IPolymorphicAddViewToDocument (const istd::IChangeable &document, const QByteArray &viewTypeId=QByteArray())=0
 Add a new view to the document.
 
virtual QByteArray GetDocumentTypeId (const istd::IChangeable &document) const =0
 Get ID of document type managed by this object.
 
virtual bool InsertNewDocument (const QByteArray &documentTypeId, bool createView=true, const QByteArray &viewTypeId="", istd::IChangeableSharedPtr *newDocumentPtr=nullptr, bool beQuiet=false, bool *ignoredPtr=NULL)=0
 Creates a new document with the document ID documentTypeId.
 
virtual bool OpenDocument (const QByteArray *documentTypeIdPtr=NULL, const QString *fileNamePtr=NULL, bool createView=true, const QByteArray &viewTypeId="", istd::IChangeableSharedPtr *documentPtr=nullptr, FileToTypeMap *loadedMapPtr=NULL, bool beQuiet=false, bool *ignoredPtr=NULL, ibase::IProgressManager *progressManagerPtr=NULL)=0
 Opens document(s) from the file list.
 
virtual bool SaveDocument (int documentIndex=-1, bool requestFileName=false, FileToTypeMap *savedMapPtr=NULL, bool beQuiet=false, bool *ignoredPtr=NULL, ibase::IProgressManager *progressManagerPtr=NULL)=0
 Save document.
 
virtual bool SaveDirtyDocuments (bool beQuiet=false, bool *ignoredPtr=NULL)=0
 Ask user (optional) and save all dirty (changed) documents.
 
virtual bool CloseDocument (int documentIndex=-1, bool beQuiet=false, bool *ignoredPtr=NULL)=0
 Close document and all its views.
 
virtual bool CloseView (istd::IPolymorphic *viewPtr=NULL, bool beQuiet=false, bool *ignoredPtr=NULL)=0
 Close view.
 
- Public Member Functions inherited from istd::IChangeable
virtual int GetSupportedOperations () const
 Get set of flags for supported operations.
 
virtual bool CopyFrom (const IChangeable &object, CompatibilityMode mode=CM_WITHOUT_REFS)
 Copy this object from another one.
 
virtual bool IsEqual (const IChangeable &object) const
 Compare this object with another object.
 
virtual istd::TUniqueInterfacePtr< istd::IChangeableCloneMe (CompatibilityMode mode=CM_WITHOUT_REFS) const
 Make a copy of this object.
 
virtual bool ResetData (CompatibilityMode mode=CM_WITHOUT_REFS)
 Reset data to its default state.
 
virtual void BeginChanges (const ChangeSet &changeSet)
 Starts the change transaction.
 
virtual void EndChanges (const ChangeSet &changeSet)
 Ends the change transaction.
 
virtual void BeginChangeGroup (const ChangeSet &changeSet)
 Starts group of changes.
 
virtual void EndChangeGroup (const ChangeSet &changeSet)
 Ends group of changes.
 
- Public Member Functions inherited from istd::IPolymorphic
virtual ~IPolymorphic ()
 
- Public Member Functions inherited from idoc::IDocumentTypesInfo
virtual bool IsFeatureSupported (int featureFlags, const QByteArray &documentTypeId) const =0
 Return true, if the feature(s) is supported by this document template.
 
virtual Ids GetDocumentTypeIds () const =0
 Get list of supported document type IDs.
 
virtual QString GetDocumentTypeName (const QByteArray &documentTypeId) const =0
 Get human readable name of some document type ID.
 
virtual ifile::IFileTypeInfoGetDocumentFileTypeInfo (const QByteArray &documentTypeId) const =0
 Get file type information object for some selected document type.
 
virtual Ids GetDocumentTypeIdsForFile (const QString &filePath) const =0
 Get list of supported document IDs that can handle the specified file.
 
virtual QString GetDefaultDirectory (const QString &sugestedDir="", const QByteArray *documentTypeIdPtr=NULL) const =0
 Return default directory for specified document type.
 

Additional Inherited Members

- Static Public Member Functions inherited from istd::IChangeable
static const ChangeSetGetNoChanges ()
 Get empty set of changes.
 
static const ChangeSetGetAnyChange ()
 Get anonymous change set.
 
static const ChangeSetGetAllChanges ()
 Get anonymous change set.
 
static const ChangeSetGetDelegatedChanges ()
 Get delegated change set.
 
- Protected Member Functions inherited from istd::IChangeable
virtual void OnBeginChanges ()
 Callback function for begin change event.
 
virtual void OnEndChanges (const ChangeSet &changeSet)
 Callback function for end change event.
 

Detailed Description

Provide set of user actions needed to manage documents in MVC (Model View Controller) concept.

The document manager is the central component in the ACF document/view architecture. It manages the lifecycle of documents and their associated views, handles file operations (new, open, save, close), and maintains the document state.

Key responsibilities:

The manager supports both single and multi-document interfaces (SDI/MDI). For SDI applications, typically only one document is active at a time. For MDI applications, multiple documents can be open simultaneously with one being active.

Usage Example
// Get the document manager from application
idoc::IDocumentManager* docMgr = GetDocumentManager();
// Create a new document
QByteArray docTypeId = "TextDocument";
if (docMgr->InsertNewDocument(docTypeId, true)) {
// Document created successfully with a view
}
// Open an existing document
QString filePath = "/path/to/document.txt";
if (docMgr->OpenDocument(&docTypeId, &filePath, true)) {
// Document opened and view created
}
// Save the active document
if (docMgr->SaveDocument()) {
// Document saved successfully
}
// Get information about all open documents
int count = docMgr->GetDocumentsCount();
for (int i = 0; i < count; ++i) {
istd::IChangeable& doc = docMgr->GetDocumentFromIndex(i, &info);
qDebug() << "Document:" << info.filePath << "Type:" << info.documentTypeId << "Dirty:" << info.isDirty;
}
// Close the active document
docMgr->CloseDocument(-1, false); // -1 = active document, false = ask user to save
Provide set of user actions needed to manage documents in MVC (Model View Controller) concept.
virtual bool SaveDocument(int documentIndex=-1, bool requestFileName=false, FileToTypeMap *savedMapPtr=NULL, bool beQuiet=false, bool *ignoredPtr=NULL, ibase::IProgressManager *progressManagerPtr=NULL)=0
Save document.
virtual bool OpenDocument(const QByteArray *documentTypeIdPtr=NULL, const QString *fileNamePtr=NULL, bool createView=true, const QByteArray &viewTypeId="", istd::IChangeableSharedPtr *documentPtr=nullptr, FileToTypeMap *loadedMapPtr=NULL, bool beQuiet=false, bool *ignoredPtr=NULL, ibase::IProgressManager *progressManagerPtr=NULL)=0
Opens document(s) from the file list.
virtual istd::IChangeable & GetDocumentFromIndex(int index, DocumentInfo *documentInfoPtr=NULL) const =0
Get document at specified index.
virtual bool CloseDocument(int documentIndex=-1, bool beQuiet=false, bool *ignoredPtr=NULL)=0
Close document and all its views.
virtual bool InsertNewDocument(const QByteArray &documentTypeId, bool createView=true, const QByteArray &viewTypeId="", istd::IChangeableSharedPtr *newDocumentPtr=nullptr, bool beQuiet=false, bool *ignoredPtr=NULL)=0
Creates a new document with the document ID documentTypeId.
virtual int GetDocumentsCount() const =0
Get number of opened documents.
Common interface for data model objects, which can be changed.
Definition IChangeable.h:28
Information about a document managed by the document manager.
QByteArray documentTypeId
Type identifier of the document.
bool isDirty
True if document has unsaved changes.
QString filePath
Full file path of the document, empty if not saved yet.
See also
IDocumentTemplate, IUndoManager, IDocumentMetaInfo

Definition at line 84 of file IDocumentManager.h.

Member Typedef Documentation

◆ FileToTypeMap

typedef QMap<QString, QByteArray> idoc::IDocumentManager::FileToTypeMap

Map from file path to document type ID's.

Used for tracking loaded files and their associated document types.

Definition at line 144 of file IDocumentManager.h.

Member Enumeration Documentation

◆ ChangeFlags

Possible changes in the manager data model.

These flags are used to notify observers about specific changes in the document manager state.

Enumerator
CF_DOCUMENT_RENAMED 

A document has been renamed or its file path has changed.

CF_DOCUMENT_CREATED 

A new document has been created.

CF_DOCUMENT_REMOVED 

A document has been removed from the manager.

CF_DOCUMENT_COUNT_CHANGED 

The total number of managed documents has changed.

CF_VIEW_ACTIVATION_CHANGED 

The active view has changed to a different view.

Definition at line 93 of file IDocumentManager.h.

◆ OperationFlags

Flags describing possible operations that can be performed by the document manager.

These flags indicate which file operations are currently supported.

Enumerator
OF_FILE_NEW 

New document creation is supported.

OF_FILE_OPEN 

Opening existing documents is supported.

OF_FILE_SAVE 

Saving documents is supported.

OF_FILE_SAVE_AS 

Save As operation is supported.

OF_KNOWN_PATH 

Document has a known file path.

Definition at line 131 of file IDocumentManager.h.

Member Function Documentation

◆ AddViewToDocument()

virtual istd::IPolymorphic * idoc::IDocumentManager::AddViewToDocument ( const istd::IChangeable document,
const QByteArray &  viewTypeId = QByteArray() 
)
pure virtual

Add a new view to the document.

Parameters
documentdocument instance
viewTypeIdID of view type, if it will be created.
Returns
Created view object

Implemented in idoc::CMultiDocumentManagerBase, and idoc::CSingleDocumentManagerBase.

◆ CloseDocument()

virtual bool idoc::IDocumentManager::CloseDocument ( int  documentIndex = -1,
bool  beQuiet = false,
bool *  ignoredPtr = NULL 
)
pure virtual

Close document and all its views.

Parameters
documentIndexoptional index of document to close, if negative then current active document will be closed.
beQuietif true, no user interaction will be done. Typically user will be asked for saving document.
ignoredPtroptional return flag indicating that closing was aborted by user.

Implemented in idoc::CMultiDocumentManagerBase, and idoc::CSingleDocumentManagerBase.

◆ CloseView()

virtual bool idoc::IDocumentManager::CloseView ( istd::IPolymorphic viewPtr = NULL,
bool  beQuiet = false,
bool *  ignoredPtr = NULL 
)
pure virtual

Close view.

Parameters
viewPtrpointer to view should be closed or NULL if current active view should be closed.
beQuietif true, no user interaction will be done. Typically user will be asked for saving document.
ignoredPtroptional return flag indicating that closing was aborted by user.

Implemented in idoc::CMultiDocumentManagerBase, and idoc::CSingleDocumentManagerBase.

◆ GetActiveView()

virtual istd::IPolymorphic * idoc::IDocumentManager::GetActiveView ( ) const
pure virtual

Return the active document.

If no document is active, the function return a NULL

Implemented in idoc::CMultiDocumentManagerBase, and idoc::CSingleDocumentManagerBase.

◆ GetAllowedOperationFlags()

virtual int idoc::IDocumentManager::GetAllowedOperationFlags ( const istd::IPolymorphic viewPtr = NULL) const
pure virtual

Get flags of allowed operations.

Parameters
viewPtrOptional pointer to a specific view to check operations for. If NULL, checks operations for the active view/document.
Returns
Bitwise OR of OperationFlags indicating which operations are currently allowed.
Example
int flags = docMgr->GetAllowedOperationFlags();
// New document creation is supported
}
// Saving is available
}
@ OF_FILE_NEW
New document creation is supported.
@ OF_FILE_SAVE
Saving documents is supported.

Implemented in idoc::CTmplBasedDocumentManagerBase.

◆ GetDocumentFromIndex()

virtual istd::IChangeable & idoc::IDocumentManager::GetDocumentFromIndex ( int  index,
DocumentInfo documentInfoPtr = NULL 
) const
pure virtual

Get document at specified index.

Parameters
indexZero-based index of document (0 to GetDocumentsCount()-1).
documentInfoPtrOptional pointer to receive additional information about the document.
Returns
Reference to the document at the specified index.
Example
for (int i = 0; i < docMgr->GetDocumentsCount(); ++i) {
istd::IChangeable& doc = docMgr->GetDocumentFromIndex(i, &info);
qDebug() << "Document" << i << "path:" << info.filePath;
}

Implemented in idoc::CMultiDocumentManagerBase, and idoc::CSingleDocumentManagerBase.

◆ GetDocumentFromView()

virtual istd::IChangeable * idoc::IDocumentManager::GetDocumentFromView ( const istd::IPolymorphic view,
DocumentInfo documentInfoPtr = NULL 
) const
pure virtual

Return the document assigned to view.

Parameters
viewview object.
documentInfoPtroptional return value describing some additional informations about document.
Returns
pointer to assigned document, or NULL if no document for this view exists.

Implemented in idoc::CMultiDocumentManagerBase, and idoc::CSingleDocumentManagerBase.

◆ GetDocumentsCount()

virtual int idoc::IDocumentManager::GetDocumentsCount ( ) const
pure virtual

Get number of opened documents.

Returns
The total count of currently open documents managed by this manager.

Implemented in idoc::CMultiDocumentManagerBase, and idoc::CSingleDocumentManagerBase.

◆ GetDocumentTypeId()

virtual QByteArray idoc::IDocumentManager::GetDocumentTypeId ( const istd::IChangeable document) const
pure virtual

Get ID of document type managed by this object.

Returns
ID of document type or empty string if no document is found.

Implemented in idoc::CMultiDocumentManagerBase, and idoc::CSingleDocumentManagerBase.

◆ GetUndoManagerForDocument()

virtual idoc::IUndoManager * idoc::IDocumentManager::GetUndoManagerForDocument ( const istd::IChangeable documentPtr) const
pure virtual

Return undo manager for document documentPtr.

Parameters
documentPtrPointer to the document to get undo manager for.
Returns
Pointer to the undo manager associated with this document, or NULL if no undo manager exists.

Each document can have its own undo manager to track and reverse changes.

Example
istd::IChangeable* doc = docMgr->GetDocumentFromView(*view);
idoc::IUndoManager* undoMgr = docMgr->GetUndoManagerForDocument(doc);
if (undoMgr && undoMgr->GetAvailableUndoSteps() > 0) {
undoMgr->DoUndo();
}
Interface providing UNDO/REDO functionality.
virtual bool DoUndo(int steps=1)=0
Process UNDO steps.
virtual int GetAvailableUndoSteps() const =0
Get number of available UNDO levels.

Implemented in idoc::CMultiDocumentManagerBase, and idoc::CSingleDocumentManagerBase.

◆ GetViewFromIndex()

virtual istd::IPolymorphic * idoc::IDocumentManager::GetViewFromIndex ( int  documentIndex,
int  viewIndex 
) const
pure virtual

Get single view using its and document indices.

Implemented in idoc::CMultiDocumentManagerBase, and idoc::CSingleDocumentManagerBase.

◆ GetViewsCount()

virtual int idoc::IDocumentManager::GetViewsCount ( int  documentIndex) const
pure virtual

Get number of view for specified document.

Implemented in idoc::CMultiDocumentManagerBase, and idoc::CSingleDocumentManagerBase.

◆ InsertNewDocument()

virtual bool idoc::IDocumentManager::InsertNewDocument ( const QByteArray &  documentTypeId,
bool  createView = true,
const QByteArray &  viewTypeId = "",
istd::IChangeableSharedPtr newDocumentPtr = nullptr,
bool  beQuiet = false,
bool *  ignoredPtr = NULL 
)
pure virtual

Creates a new document with the document ID documentTypeId.

Parameters
documentTypeIdID of document type.
createViewif true, view will be automatically created.
viewTypeIdID of view type, if it will be created.
newDocumentPtroptional pointer where new created document will be returned.
beQuietif true, no user interaction will be done.
ignoredPtroptional return flag indicating that creating was aborted by user.
Returns
true, if success.

Implemented in idoc::CMultiDocumentManagerBase, and idoc::CSingleDocumentManagerBase.

◆ OpenDocument()

virtual bool idoc::IDocumentManager::OpenDocument ( const QByteArray *  documentTypeIdPtr = NULL,
const QString *  fileNamePtr = NULL,
bool  createView = true,
const QByteArray &  viewTypeId = "",
istd::IChangeableSharedPtr documentPtr = nullptr,
FileToTypeMap loadedMapPtr = NULL,
bool  beQuiet = false,
bool *  ignoredPtr = NULL,
ibase::IProgressManager progressManagerPtr = NULL 
)
pure virtual

Opens document(s) from the file list.

Parameters
documentTypeIdPtroptional ID of document type. If it is NULL, document type will be found automatically.
fileNamePtrfile name.
createViewif true, view will be automatically created.
viewTypeIdID of view type, if it will be created.
loadedMapPtroptional list of loaded files and its document type ID's.
beQuietif true, no user interaction will be done.
ignoredPtroptional return flag indicating that opening was aborted by user.

Implemented in idoc::CMultiDocumentManagerBase, and idoc::CSingleDocumentManagerBase.

◆ SaveDirtyDocuments()

virtual bool idoc::IDocumentManager::SaveDirtyDocuments ( bool  beQuiet = false,
bool *  ignoredPtr = NULL 
)
pure virtual

Ask user (optional) and save all dirty (changed) documents.

Parameters
beQuietif true, no user interaction will be done. Typically user will be asked for saving document.
ignoredPtroptional return flag indicating that process was aborted by user.
Returns
true if all documents were saved and are not dirty now.

Implemented in idoc::CMultiDocumentManagerBase, and idoc::CSingleDocumentManagerBase.

◆ SaveDocument()

virtual bool idoc::IDocumentManager::SaveDocument ( int  documentIndex = -1,
bool  requestFileName = false,
FileToTypeMap savedMapPtr = NULL,
bool  beQuiet = false,
bool *  ignoredPtr = NULL,
ibase::IProgressManager progressManagerPtr = NULL 
)
pure virtual

Save document.

Parameters
documentIndexoptional index of document to save, if negative then current active document will be saved.
requestFileNameif true, file name will be always requested by user.
savedMapPtroptional list of files will be extended with currently saved file.
beQuietif true, no user interaction will be done.
ignoredPtroptional return flag indicating that saving was aborted by user.

Implemented in idoc::CMultiDocumentManagerBase, and idoc::CSingleDocumentManagerBase.

◆ SetActiveView()

virtual void idoc::IDocumentManager::SetActiveView ( istd::IPolymorphic viewPtr)
pure virtual

The documentation for this class was generated from the following file: