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

Interface for document meta-information. More...

#include <IDocumentMetaInfo.h>

Inheritance diagram for idoc::IDocumentMetaInfo:
istd::IChangeable istd::IPolymorphic idoc::CStandardDocumentMetaInfo idoc::TMultiPageDocumentWrap< idoc::IMultiPageDocument > idoc::TMultiPageDocumentWrap< Base > iimg::CMultiPageBitmapBase iimg::CMultiPageBitmapSequenceComp iimg::CMultiPageBitmapComp iimg::TMultiPageBitmap< BitmapImpl >

Public Types

enum  ChangeFlags { CF_METAINFO = 0xd83067d }
 Data model change notification flags. More...
 
enum  MetaInfoType {
  MIT_TITLE , MIT_AUTHOR , MIT_CREATOR , MIT_DESCRIPTION ,
  MIT_CREATION_TIME , MIT_MODIFICATION_TIME , MIT_CREATOR_VERSION , MIT_DOCUMENT_VERSION ,
  MIT_CONTENT_CHECKSUM , MIT_USER = 1024
}
 Type of the meta information. More...
 
typedef QSet< int > MetaInfoTypes
 
- 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 Member Functions

virtual MetaInfoTypes GetMetaInfoTypes (bool allowReadOnly=true) const =0
 Get list of contained meta info types.
 
virtual QVariant GetMetaInfo (int metaInfoType) const =0
 Get document's meta info.
 
virtual bool SetMetaInfo (int metaInfoType, const QVariant &metaInfo)=0
 Set new document's meta information for a given meta type.
 
virtual void RemoveMetaInfo (int metaInfoType)=0
 Remove document's meta information for a given meta type.
 
virtual QByteArray GetMetaInfoId (int metaInfoType) const =0
 Get an unique ID of the meta information.
 
virtual QString GetMetaInfoName (int metaInfoType) const =0
 Get a human readable name for a given meta information type.
 
virtual QString GetMetaInfoDescription (int metaInfoType) const =0
 Get a human readable description for a given meta information type.
 
virtual bool IsMetaInfoWritable (int metaInfoType) const =0
 Check if meta information can be changed.
 
- 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 ()
 

Static Public Member Functions

template<class T >
static std::optional< T > GetMetaInfoT (const idoc::IDocumentMetaInfo &metaInfo, int key)
 Type-safe retrieval of metadata values.
 
- 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.
 

Additional Inherited Members

- 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

Interface for document meta-information.

Meta-information provides descriptive data about a document that is separate from the document's actual content. This includes properties like title, author, creation date, modification date, description, and custom user-defined metadata.

Meta-information is typically stored alongside the document content and can be used for:

The interface supports both standard metadata types (defined in MetaInfoType enum) and custom user-defined types (starting from MIT_USER).

Usage Example
// Get meta info from document
idoc::IDocumentMetaInfo* metaInfo = GetDocumentMetaInfo();
// Set standard metadata
metaInfo->SetMetaInfo(idoc::IDocumentMetaInfo::MIT_DESCRIPTION, "Document description");
// Read metadata
QString title = metaInfo->GetMetaInfo(idoc::IDocumentMetaInfo::MIT_TITLE).toString();
QString author = metaInfo->GetMetaInfo(idoc::IDocumentMetaInfo::MIT_AUTHOR).toString();
QDateTime created = metaInfo->GetMetaInfo(idoc::IDocumentMetaInfo::MIT_CREATION_TIME).toDateTime();
// List all available metadata types
for (int type : types) {
QString name = metaInfo->GetMetaInfoName(type);
QVariant value = metaInfo->GetMetaInfo(type);
qDebug() << name << ":" << value;
}
// Use custom metadata
const int MIT_PROJECT_ID = idoc::IDocumentMetaInfo::MIT_USER + 1;
metaInfo->SetMetaInfo(MIT_PROJECT_ID, "PROJECT-123");
Interface for document meta-information.
virtual QString GetMetaInfoName(int metaInfoType) const =0
Get a human readable name for a given meta information type.
@ MIT_DESCRIPTION
Document description.
@ MIT_TITLE
Title of the document.
@ MIT_AUTHOR
Person, who has created the document.
@ MIT_CREATION_TIME
Document creation time.
@ MIT_USER
Starting of user defined meta info types.
virtual bool SetMetaInfo(int metaInfoType, const QVariant &metaInfo)=0
Set new document's meta information for a given meta type.
virtual QVariant GetMetaInfo(int metaInfoType) const =0
Get document's meta info.
virtual MetaInfoTypes GetMetaInfoTypes(bool allowReadOnly=true) const =0
Get list of contained meta info types.
See also
IMultiPageDocument, CStandardDocumentMetaInfo

Definition at line 69 of file IDocumentMetaInfo.h.

Member Typedef Documentation

◆ MetaInfoTypes

Definition at line 140 of file IDocumentMetaInfo.h.

Member Enumeration Documentation

◆ ChangeFlags

Data model change notification flags.

Enumerator
CF_METAINFO 

Meta information has been changed.

Definition at line 76 of file IDocumentMetaInfo.h.

◆ MetaInfoType

Type of the meta information.

Enumerator
MIT_TITLE 

Title of the document.

MIT_AUTHOR 

Person, who has created the document.

MIT_CREATOR 

Tool used for document creation.

MIT_DESCRIPTION 

Document description.

MIT_CREATION_TIME 

Document creation time.

MIT_MODIFICATION_TIME 

Last document modification time.

MIT_CREATOR_VERSION 

Version of the creation tool given as a QString.

MIT_DOCUMENT_VERSION 

Version of the document given as a QString.

MIT_CONTENT_CHECKSUM 

Checksum of the document data.

MIT_USER 

Starting of user defined meta info types.

Definition at line 87 of file IDocumentMetaInfo.h.

Member Function Documentation

◆ GetMetaInfo()

virtual QVariant idoc::IDocumentMetaInfo::GetMetaInfo ( int  metaInfoType) const
pure virtual

Get document's meta info.

Implemented in idoc::CStandardDocumentMetaInfo.

Referenced by GetMetaInfoT().

◆ GetMetaInfoDescription()

virtual QString idoc::IDocumentMetaInfo::GetMetaInfoDescription ( int  metaInfoType) const
pure virtual

Get a human readable description for a given meta information type.

Implemented in idoc::CStandardDocumentMetaInfo.

◆ GetMetaInfoId()

virtual QByteArray idoc::IDocumentMetaInfo::GetMetaInfoId ( int  metaInfoType) const
pure virtual

Get an unique ID of the meta information.

Implemented in idoc::CStandardDocumentMetaInfo.

◆ GetMetaInfoName()

virtual QString idoc::IDocumentMetaInfo::GetMetaInfoName ( int  metaInfoType) const
pure virtual

Get a human readable name for a given meta information type.

Implemented in idoc::CStandardDocumentMetaInfo.

◆ GetMetaInfoT()

template<class T >
std::optional< T > idoc::IDocumentMetaInfo::GetMetaInfoT ( const idoc::IDocumentMetaInfo metaInfo,
int  key 
)
inlinestatic

Type-safe retrieval of metadata values.

This static template helper method provides a convenient way to retrieve metadata with automatic type checking. It wraps the GetMetaInfo() call and performs runtime type validation to ensure the stored value matches the requested type.

Template Parameters
TThe expected type of the metadata value (e.g., QString, QDateTime).
Parameters
metaInfoReference to the document metadata interface to query.
keyThe metadata type identifier (e.g., MIT_TITLE, MIT_AUTHOR, or custom types >= MIT_USER).
Returns
std::optional containing the value if retrieval succeeds; empty std::optional if the key doesn't exist or type mismatch occurs.
Note
In debug builds, a warning is logged if the stored type doesn't match the requested type.
Example
auto title = IDocumentMetaInfo::GetMetaInfoT<QString>(metaInfo, MIT_TITLE);
if (title) {
qDebug() << "Title:" << *title;
}
auto created = IDocumentMetaInfo::GetMetaInfoT<QDateTime>(metaInfo, MIT_CREATION_TIME);
if (created.has_value()) {
qDebug() << "Created on:" << created.value();
}
See also
GetMetaInfo

Definition at line 223 of file IDocumentMetaInfo.h.

References GetMetaInfo(), and I_IF_DEBUG.

◆ GetMetaInfoTypes()

virtual MetaInfoTypes idoc::IDocumentMetaInfo::GetMetaInfoTypes ( bool  allowReadOnly = true) const
pure virtual

Get list of contained meta info types.

Parameters
allowReadOnlyif enabled, read only types will be also listed out, if this flag is false only the writable types will be returned.
See also
IsMetaInfoWritable.

Implemented in idoc::CStandardDocumentMetaInfo.

◆ IsMetaInfoWritable()

virtual bool idoc::IDocumentMetaInfo::IsMetaInfoWritable ( int  metaInfoType) const
pure virtual

Check if meta information can be changed.

Implemented in idoc::CStandardDocumentMetaInfo.

◆ RemoveMetaInfo()

virtual void idoc::IDocumentMetaInfo::RemoveMetaInfo ( int  metaInfoType)
pure virtual

Remove document's meta information for a given meta type.

Implemented in idoc::CStandardDocumentMetaInfo.

◆ SetMetaInfo()

virtual bool idoc::IDocumentMetaInfo::SetMetaInfo ( int  metaInfoType,
const QVariant &  metaInfo 
)
pure virtual

Set new document's meta information for a given meta type.

Implemented in idoc::CStandardDocumentMetaInfo.


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