Classes | Public Types | Public Member Functions | Protected Types | Protected Member Functions | List of all members
idoc::CMultiDocumentManagerBase Class Referenceabstract

Basic implementation of a template-based multiple document manager. More...

#include <CMultiDocumentManagerBase.h>

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

Classes

struct  SingleDocumentData
 Document data definition. More...
 
struct  ViewInfo
 

Public Types

enum  ModelId { MI_UNDO_MANAGER = 1, MI_DOCUMENT }
 
- Public Types inherited from idoc::IDocumentManager
enum  ChangeFlags {
  CF_DOCUMENT_RENAMED = 0x834d670, CF_DOCUMENT_CREATED, CF_DOCUMENT_REMOVED, CF_DOCUMENT_COUNT_CHANGED,
  CF_VIEW_ACTIVATION_CHANGED
}
 Possible changes in the mananger 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. More...
 
typedef QMap< QString, QByteArray > FileToTypeMap
 Map from file path to ducument type ID's. More...
 
- 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...
 
- Public Types inherited from idoc::IDocumentTypesInfo
enum  SupportedFeatures { SF_NEW_DOCUMENT = 0x0001, SF_EDIT_DOCUMENT = 0x0010, SF_DEFAULT = 0xffff }
 Enumeration for supported types of operation with the document. More...
 
typedef QVector< QByteArray > Ids
 

Public Member Functions

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

Protected Types

typedef istd::TDelPtr
< istd::IChangeable
DocumentPtr
 
typedef istd::TDelPtr
< idoc::IUndoManager
UndoManagerPtr
 
typedef istd::TDelPtr
< istd::IPolymorphic
ViewPtr
 
typedef QList< ViewInfoViews
 

Protected Member Functions

virtual void SetActiveView (istd::IPolymorphic *viewPtr)
 Indicate that some view is active now. More...
 
virtual istd::IChangeableOpenSingleDocument (const QString &filePath, bool createView, const QByteArray &viewTypeId, QByteArray &documentTypeId, bool beQuiet, bool *ignoredPtr)
 Open single document using its file path. More...
 
virtual void CloseAllDocuments ()
 
SingleDocumentDataGetSingleDocumentData (int index) const
 Get internal document data object. More...
 
SingleDocumentDataGetActiveDocumentInfo () const
 Get document info assigned to active view. More...
 
SingleDocumentDataGetDocumentInfoFromView (const istd::IPolymorphic &view) const
 Get document info assigned to specified view. More...
 
SingleDocumentDataGetDocumentInfoFromPath (const QString &filePath) const
 Get document info assigned to specified file. More...
 
int GetDocumentIndex (const SingleDocumentData &document) const
 Get position index of the given document in the document list. More...
 
virtual SingleDocumentDataCreateUnregisteredDocument (const QByteArray &documentTypeId, bool createView, const QByteArray &viewTypeId, bool initialize, bool beQuiet, bool *ignoredPtr) const
 Create instance of specified document without attaching to this manager. More...
 
bool RegisterDocument (SingleDocumentData *documentPtr)
 Register (attach) created document as new working document. More...
 
virtual void OnViewRegistered (istd::IPolymorphic *viewPtr, const SingleDocumentData &documentData)=0
 Called after view is registered. More...
 
virtual void OnViewRemoved (istd::IPolymorphic *viewPtr)=0
 Called before view is removed. More...
 
virtual QStringList GetOpenFilePaths (const QByteArray *documentTypeIdPtr=NULL) const =0
 Gets open file names. More...
 
virtual QString GetSaveFilePath (const QByteArray &documentTypeId, const istd::IChangeable *dataObjectPtr, const QString &currentFilePath) const =0
 Gets save file name. More...
 
virtual bool QueryDocumentSave (const SingleDocumentData &info, bool *ignoredPtr)=0
 Query user if this document should be saved. More...
 
bool SerializeOpenDocumentList (iser::IArchive &archive)
 Serializes open documents information. More...
 
- Protected Member Functions inherited from idoc::CTmplBasedDocumentManagerBase
virtual const
idoc::IDocumentTemplate
GetDocumentTemplate () const
 
void SetDocumentTemplate (const idoc::IDocumentTemplate *documentTemplatePtr)
 
- Protected Member Functions inherited from istd::IChangeable
virtual void OnBeginChanges ()
 Callback function for begin change event. More...
 
virtual void OnEndChanges (const ChangeSet &changeSet)
 Callback function for end change event. More...
 

Additional Inherited Members

- Static Public Member Functions inherited from istd::IChangeable
static const ChangeSetGetNoChanges ()
 Get empty set of changes. More...
 
static const ChangeSetGetAnyChange ()
 Get anonymous change set. More...
 
static const ChangeSetGetAllChanges ()
 Get anonymous change set. More...
 
static const ChangeSetGetDelegatedChanges ()
 Get delegated change set. More...
 

Detailed Description

Basic implementation of a template-based multiple document manager.

Definition at line 24 of file CMultiDocumentManagerBase.h.

Member Typedef Documentation

Definition at line 75 of file CMultiDocumentManagerBase.h.

Definition at line 76 of file CMultiDocumentManagerBase.h.

Definition at line 77 of file CMultiDocumentManagerBase.h.

Definition at line 83 of file CMultiDocumentManagerBase.h.

Member Enumeration Documentation

Enumerator
MI_UNDO_MANAGER 
MI_DOCUMENT 

Definition at line 27 of file CMultiDocumentManagerBase.h.

Constructor & Destructor Documentation

idoc::CMultiDocumentManagerBase::CMultiDocumentManagerBase ( )

Default constructor.

Member Function Documentation

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

Add a new view to the document.

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

Implements idoc::IDocumentManager.

virtual void idoc::CMultiDocumentManagerBase::CloseAllDocuments ( )
protectedvirtual
virtual bool idoc::CMultiDocumentManagerBase::CloseDocument ( int  documentIndex = -1,
bool  beQuiet = false,
bool *  ignoredPtr = NULL 
)
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.

Implements idoc::IDocumentManager.

virtual bool idoc::CMultiDocumentManagerBase::CloseView ( istd::IPolymorphic viewPtr = NULL,
bool  beQuiet = false,
bool *  ignoredPtr = NULL 
)
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.

Implements idoc::IDocumentManager.

virtual SingleDocumentData* idoc::CMultiDocumentManagerBase::CreateUnregisteredDocument ( const QByteArray &  documentTypeId,
bool  createView,
const QByteArray &  viewTypeId,
bool  initialize,
bool  beQuiet,
bool *  ignoredPtr 
) const
protectedvirtual

Create instance of specified document without attaching to this manager.

SingleDocumentData* idoc::CMultiDocumentManagerBase::GetActiveDocumentInfo ( ) const
protected

Get document info assigned to active view.

virtual istd::IPolymorphic* idoc::CMultiDocumentManagerBase::GetActiveView ( ) const
virtual

Return the active document.

If no document is active, the function return a NULL

Implements idoc::IDocumentManager.

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

Get document at specified index.

Parameters
indexindex of document.
documentInfoPtroptional return value describing some additional informations about document.

Implements idoc::IDocumentManager.

virtual istd::IChangeable* idoc::CMultiDocumentManagerBase::GetDocumentFromView ( const istd::IPolymorphic view,
DocumentInfo documentInfoPtr = NULL 
) const
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.

Implements idoc::IDocumentManager.

int idoc::CMultiDocumentManagerBase::GetDocumentIndex ( const SingleDocumentData document) const
protected

Get position index of the given document in the document list.

SingleDocumentData* idoc::CMultiDocumentManagerBase::GetDocumentInfoFromPath ( const QString &  filePath) const
protected

Get document info assigned to specified file.

SingleDocumentData* idoc::CMultiDocumentManagerBase::GetDocumentInfoFromView ( const istd::IPolymorphic view) const
protected

Get document info assigned to specified view.

virtual int idoc::CMultiDocumentManagerBase::GetDocumentsCount ( ) const
virtual

Get number of opened documents.

Implements idoc::IDocumentManager.

virtual QByteArray idoc::CMultiDocumentManagerBase::GetDocumentTypeId ( const istd::IChangeable document) const
virtual

Get ID of document type managed by this object.

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

Implements idoc::IDocumentManager.

virtual QStringList idoc::CMultiDocumentManagerBase::GetOpenFilePaths ( const QByteArray *  documentTypeIdPtr = NULL) const
protectedpure virtual

Gets open file names.

Implemented in iqtdoc::CMultiDocumentWorkspaceGuiComp.

virtual QString idoc::CMultiDocumentManagerBase::GetSaveFilePath ( const QByteArray &  documentTypeId,
const istd::IChangeable dataObjectPtr,
const QString &  currentFilePath 
) const
protectedpure virtual
SingleDocumentData& idoc::CMultiDocumentManagerBase::GetSingleDocumentData ( int  index) const
protected

Get internal document data object.

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

Return undo mananger for document documenPtr.

Implements idoc::IDocumentManager.

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

Get single view using its and document indices.

Implements idoc::IDocumentManager.

virtual int idoc::CMultiDocumentManagerBase::GetViewsCount ( int  documentIndex) const
virtual

Get number of view for specified document.

Implements idoc::IDocumentManager.

virtual bool idoc::CMultiDocumentManagerBase::InsertNewDocument ( const QByteArray &  documentTypeId,
bool  createView = true,
const QByteArray &  viewTypeId = "",
istd::IChangeable **  newDocumentPtr = NULL,
bool  beQuiet = false,
bool *  ignoredPtr = NULL 
)
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.

Implements idoc::IDocumentManager.

virtual void idoc::CMultiDocumentManagerBase::OnViewRegistered ( istd::IPolymorphic viewPtr,
const SingleDocumentData documentData 
)
protectedpure virtual

Called after view is registered.

Implemented in iqtdoc::CMultiDocumentWorkspaceGuiComp.

virtual void idoc::CMultiDocumentManagerBase::OnViewRemoved ( istd::IPolymorphic viewPtr)
protectedpure virtual

Called before view is removed.

Implemented in iqtdoc::CMultiDocumentWorkspaceGuiComp.

virtual bool idoc::CMultiDocumentManagerBase::OpenDocument ( const QByteArray *  documentTypeIdPtr,
const QString *  fileNamePtr = NULL,
bool  createView = true,
const QByteArray &  viewTypeId = "",
istd::IChangeable **  documentPtr = NULL,
FileToTypeMap loadedMapPtr = NULL,
bool  beQuiet = false,
bool *  ignoredPtr = NULL 
)
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.

Implements idoc::IDocumentManager.

virtual istd::IChangeable* idoc::CMultiDocumentManagerBase::OpenSingleDocument ( const QString &  filePath,
bool  createView,
const QByteArray &  viewTypeId,
QByteArray &  documentTypeId,
bool  beQuiet,
bool *  ignoredPtr 
)
protectedvirtual

Open single document using its file path.

Parameters
filePathfile path.
createViewif true, instance of view will be created.
viewTypeIdoptional view type ID should be created.
documentTypeIdoutput parameter returning loaded ducument type ID.
Returns
instance of created document or NULL if error is occured.

Reimplemented in iqtdoc::CMultiDocumentWorkspaceGuiComp.

virtual bool idoc::CMultiDocumentManagerBase::QueryDocumentSave ( const SingleDocumentData info,
bool *  ignoredPtr 
)
protectedpure virtual

Query user if this document should be saved.

Parameters
infodocument info of document will be closed.
ignoredPtroptional return flag indicating that user ignored this close operation.

Implemented in iqtdoc::CMultiDocumentWorkspaceGuiComp.

bool idoc::CMultiDocumentManagerBase::RegisterDocument ( SingleDocumentData documentPtr)
protected

Register (attach) created document as new working document.

virtual bool idoc::CMultiDocumentManagerBase::SaveDirtyDocuments ( bool  beQuiet = false,
bool *  ignoredPtr = NULL 
)
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.

Implements idoc::IDocumentManager.

virtual bool idoc::CMultiDocumentManagerBase::SaveDocument ( int  documentIndex = -1,
bool  requestFileName = false,
FileToTypeMap savedMapPtr = NULL,
bool  beQuiet = false,
bool *  ignoredPtr = NULL 
)
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.

Implements idoc::IDocumentManager.

bool idoc::CMultiDocumentManagerBase::SerializeOpenDocumentList ( iser::IArchive archive)
protected

Serializes open documents information.

virtual void idoc::CMultiDocumentManagerBase::SetActiveView ( istd::IPolymorphic viewPtr)
protectedvirtual

Indicate that some view is active now.

Reimplemented in iqtdoc::CMultiDocumentWorkspaceGuiComp.


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

© 2007-2017 Witold Gantzke and Kirill Lepskiy