ACF $AcfVersion:0$
Public Types | Public Member Functions | Protected Member Functions | List of all members
idoc::CSingleDocumentTemplateComp Class Reference

Document template component supporting only one type of the provided document. More...

#include <CSingleDocumentTemplateComp.h>

Inheritance diagram for idoc::CSingleDocumentTemplateComp:
icomp::CComponentBase idoc::CSingleDocumentTemplateBase icomp::IComponent idoc::IDocumentTemplate istd::IPolymorphic idoc::IDocumentTypesInfo istd::IPolymorphic iqtdoc::CExtendedDocumentTemplateComp

Public Types

typedef icomp::CComponentBase BaseClass
 
typedef CSingleDocumentTemplateBase BaseClass2
 
- Public Types inherited from idoc::IDocumentTemplate
typedef istd::TUniqueInterfacePtr< istd::IPolymorphicViewUniquePtr
 Type definitions for view smart pointers.
 
typedef istd::TSharedInterfacePtr< istd::IPolymorphicViewSharedPtr
 
- 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 ifile::IFilePersistenceGetFileLoader (const QByteArray &documentTypeId) const override
 Get file loader/saver for specified document ID.
 
virtual istd::IChangeableUniquePtr CreateDocument (QByteArray &documentTypeId, bool initialize=true, bool beQuiet=false, bool *ignoredFlagPtr=NULL) const override
 Creates a document instance for document type documentTypeId.
 
virtual ViewUniquePtr CreateView (const QByteArray &documentTypeId, istd::IChangeable *documentPtr, const QByteArray &viewTypeId=QByteArray()) const override
 Creates a view instance for document document of type viewTypeId.
 
virtual idoc::IUndoManagerUniquePtr CreateUndoManager (const QByteArray &documentTypeId, istd::IChangeable *documentPtr) const override
 Creates an undo manager for a given document documentPtr.
 
- Public Member Functions inherited from icomp::CComponentBase
 CComponentBase ()
 Create component and assign it to specific context.
 
virtual const icomp::IComponentGetParentComponent (bool ownerOnly=false) const override
 Get parent of this component.
 
virtual void * GetInterface (const istd::CClassInfo &interfaceType, const QByteArray &subId="") override
 Get access to specified component interface.
 
virtual IComponentContextSharedPtr GetComponentContext () const override
 Get access to component context describing all application-specified component information loaded from components registry.
 
virtual void SetComponentContext (const IComponentContextSharedPtr &contextPtr, const icomp::IComponent *parentPtr, bool isParentOwner) override
 Set component context of this component.
 
- Public Member Functions inherited from istd::IPolymorphic
virtual ~IPolymorphic ()
 
- Public Member Functions inherited from idoc::CSingleDocumentTemplateBase
 CSingleDocumentTemplateBase ()
 
const QByteArray & GetDocumentTypeId () const
 
virtual void SetSupportedFeatures (int featureFlags)
 
virtual void SetDocumentTypeId (const QByteArray &id)
 
virtual void SetDocumentTypeName (const QString &name)
 
virtual void SetViewTypeId (const QByteArray &id)
 
virtual void SetViewTypeName (const QString &name)
 
virtual void SetDefaultDirectory (const QString &defaultDirectory)
 
virtual bool IsFeatureSupported (int featureFlags, const QByteArray &documentTypeId) const override
 Return true, if the feature(s) is supported by this document template.
 
virtual Ids GetDocumentTypeIds () const override
 Get list of supported document type IDs.
 
virtual QString GetDocumentTypeName (const QByteArray &documentTypeId) const override
 Get human readable name of some document type ID.
 
virtual ifile::IFileTypeInfoGetDocumentFileTypeInfo (const QByteArray &documentTypeId) const override
 Get file type information object for some selected document type.
 
virtual Ids GetDocumentTypeIdsForFile (const QString &filePath) const override
 Get list of supported document IDs that can handle the specified file.
 
virtual QString GetDefaultDirectory (const QString &sugestedDir="", const QByteArray *documentTypeIdPtr=NULL) const override
 Return default directory for specified document type.
 
virtual Ids GetViewTypeIds (const QByteArray &documentTypeId) const override
 Return supported view type IDs for specified document type.
 
virtual QString GetViewTypeName (const QByteArray &documentTypeId, const QByteArray &viewTypeId) const override
 Get human readable name of some view type ID.
 

Protected Member Functions

virtual ViewUniquePtr ExtractViewInterface (icomp::IComponentUniquePtr &componentPtr) const
 Extract pointer of view interface from factorisied view component.
 
virtual void OnComponentCreated () override
 
- Protected Member Functions inherited from icomp::CComponentBase
bool IsComponentActive () const
 Check if component is active.
 
virtual void OnComponentDestroyed ()
 
virtual const icomp::IRealComponentStaticInfoGetComponentStaticInfo () const =0
 Get access to static info of this component.
 
- Protected Member Functions inherited from idoc::CSingleDocumentTemplateBase
bool IsDocumentTypeSupported (const QByteArray &documentTypeId) const
 
bool IsViewTypeSupported (const QByteArray &viewTypeId) const
 

Additional Inherited Members

- Static Protected Member Functions inherited from icomp::CComponentBase
static const icomp::IRealComponentStaticInfoInitStaticInfo (IComponent *componentPtr)
 
static QByteArray GetComponentId (const icomp::IComponentContext *componentContextPtr, const QByteArray &contextId=QByteArray())
 

Detailed Description

Document template component supporting only one type of the provided document.

This is the standard template implementation for applications that work with a single document type. It integrates a document factory, view factory, file loader, and optional undo manager into a cohesive template.

Component Attributes
  • DocumentTypeId - Unique identifier for this document type (default: "Default")
  • DocumentTypeName - Human-readable name shown in UI
  • DefaultDirectory - Default directory for file operations (default: ".")
  • IsNewSupported - Whether "File > New" is supported (default: false)
  • IsEditSupported - Whether document is editable (default: false)
Component References
  • DocumentFactory - Factory for creating document instances (required)
  • ViewFactory - Factory for creating view instances (required)
  • DocumentLoader - Component handling file I/O (required)
  • UndoManager - Optional undo manager factory
Configuration Example
DocumentTypeId = "TextDocument"
DocumentTypeName = "Text Document"
DefaultDirectory = "~/Documents"
IsNewSupported = true
IsEditSupported = true
DocumentFactory = CTextDocumentComp {
DefaultText = "Type here..."
}
ViewFactory = CTextEditorGuiComp
DocumentLoader = CTextFileLoaderComp {
FileExtensions = ["txt", "text"]
TypeDescriptions = ["Text File", "Plain Text"]
}
UndoManager = CSerializedUndoManagerComp {
MaxBufferSize = 50
}
}
Document template component supporting only one type of the provided document.
Simple implementation of a text document model.
Persistence component for files containing plain text.
Usage in Single Document Application
// Define in application configuration
Template = MyDocumentTemplate
}
MyDocumentTemplate = CSingleDocumentTemplateComp {
DocumentTypeId = "MyDoc"
DocumentTypeName = "My Document"
IsNewSupported = true
IsEditSupported = true
DocumentFactory = MyDocumentComp
ViewFactory = MyViewComp
DocumentLoader = MyLoaderComp
}
Basic implementation of a template-based single document manager.

The template handles:

See also
IDocumentTemplate, CSingleDocumentManagerBase, CCompositeDocumentTemplateComp

Definition at line 90 of file CSingleDocumentTemplateComp.h.

Member Typedef Documentation

◆ BaseClass

Definition at line 93 of file CSingleDocumentTemplateComp.h.

◆ BaseClass2

Definition at line 94 of file CSingleDocumentTemplateComp.h.

Member Function Documentation

◆ CreateDocument()

virtual istd::IChangeableUniquePtr idoc::CSingleDocumentTemplateComp::CreateDocument ( QByteArray &  documentTypeId,
bool  initialize = true,
bool  beQuiet = false,
bool *  ignoredFlagPtr = NULL 
) const
overridevirtual

Creates a document instance for document type documentTypeId.

Parameters
documentTypeIdID of document type, can be empty for default document. If document type is undefined (empty), this field will be used to return ID of used type.
initializeIf true, document should be filled with initial data (operation new), otherwise initialization is not needed (e.g., for document loading - filling of data will be done by loader).
beQuietIf true, no user interaction dialogs will be shown.
ignoredFlagPtrOptional output flag indicating that the user canceled this operation.
Returns
Unique pointer to the created document, or nullptr if creation failed.
Example
QByteArray docType = "TextDocument";
istd::IChangeableUniquePtr doc = tmpl->CreateDocument(docType, true);
if (doc) {
// Document created successfully
}

Implements idoc::IDocumentTemplate.

◆ CreateUndoManager()

virtual idoc::IUndoManagerUniquePtr idoc::CSingleDocumentTemplateComp::CreateUndoManager ( const QByteArray &  documentTypeId,
istd::IChangeable documentPtr 
) const
overridevirtual

Creates an undo manager for a given document documentPtr.

Parameters
documentTypeIdID of document type.
documentPtrPointer to document object that will use this undo manager.
Returns
Unique pointer to created instance of undo manager, or nullptr if creating of undo manager was impossible.

The undo manager tracks changes to the document and allows them to be undone/redone. Not all document types support undo functionality.

Implements idoc::IDocumentTemplate.

◆ CreateView()

virtual ViewUniquePtr idoc::CSingleDocumentTemplateComp::CreateView ( const QByteArray &  documentTypeId,
istd::IChangeable documentPtr,
const QByteArray &  viewTypeId = QByteArray() 
) const
overridevirtual

Creates a view instance for document document of type viewTypeId.

Parameters
documentTypeIdID of document type.
documentPtrPointer to document object that this view will display.
viewTypeIdOptional ID specifying view type if more view types are supported. If empty or not provided, the first/default view type for this document type is used. Use GetViewTypeIds() to discover available view types for a document type.
Returns
Unique pointer to the created view, or nullptr if creation failed.

The view is responsible for displaying the document's content to the user. Some document types support multiple view types (e.g., text view, hex view, preview).

Example
// Create default view
istd::IPolymorphic* view = tmpl->CreateView(docTypeId, doc.Get()).Release();
// Create specific view type
QByteArray viewType = "HexView";
istd::IPolymorphic* hexView = tmpl->CreateView(docTypeId, doc.Get(), viewType).Release();
Base interface for all used interfaces and implementations.

Implements idoc::IDocumentTemplate.

◆ ExtractViewInterface()

virtual ViewUniquePtr idoc::CSingleDocumentTemplateComp::ExtractViewInterface ( icomp::IComponentUniquePtr componentPtr) const
protectedvirtual

Extract pointer of view interface from factorisied view component.

This functionality is provided to allow derrived classes to extract implementation-specific GUI interfaces from created composited instances. Default is instance of interface imod::IObserver extracted, but for composite components it can be inaccurate for some cases.

Reimplemented in iqtdoc::CExtendedDocumentTemplateComp.

◆ GetFileLoader()

virtual ifile::IFilePersistence * idoc::CSingleDocumentTemplateComp::GetFileLoader ( const QByteArray &  documentTypeId) const
overridevirtual

Get file loader/saver for specified document ID.

Parameters
documentTypeIdType ID of document that will be loaded/saved.
Returns
Pointer to file persistence object that handles I/O operations, or NULL if not supported.

The file persistence object handles reading and writing documents to/from files.

Implements idoc::IDocumentTemplate.

◆ OnComponentCreated()

virtual void idoc::CSingleDocumentTemplateComp::OnComponentCreated ( )
overrideprotectedvirtual

Reimplemented from icomp::CComponentBase.


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