Classes | Public Types | Public Member Functions | Protected Types | Protected Member Functions | List of all members
idoc::CSerializedUndoManagerComp Class Reference

Implements multi level UNDO mechanism based on storing complete objects state at each step using serialization. More...

#include <CSerializedUndoManagerComp.h>

Inheritance diagram for idoc::CSerializedUndoManagerComp:
icomp::CComponentBase imod::TSingleModelObserverBase< iser::ISerializable > idoc::IUndoManager icomp::IComponent imod::CSingleModelObserverBase idoc::IDocumentStateComparator istd::IPolymorphic imod::IObserver istd::IChangeable istd::IPolymorphic istd::IPolymorphic

Classes

struct  UndoStepInfo
 

Public Types

typedef icomp::CComponentBase BaseClass
 
typedef
imod::TSingleModelObserverBase
< iser::ISerializable
BaseClass2
 
- Public Types inherited from imod::TSingleModelObserverBase< iser::ISerializable >
typedef CSingleModelObserverBase BaseClass
 
typedef iser::ISerializable ModelType
 
- Public Types inherited from imod::CSingleModelObserverBase
typedef imod::IModel ModelType
 
- Public Types inherited from idoc::IDocumentStateComparator
enum  DocumentChangeFlag { DCF_UNKNOWN, DCF_EQUAL, DCF_DIFFERENT }
 
- 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 Member Functions

 CSerializedUndoManagerComp ()
 
virtual int GetAvailableUndoSteps () const
 Get number of available UNDO levels. More...
 
virtual int GetAvailableRedoSteps () const
 Get number of available REDO levels. More...
 
virtual QString GetUndoLevelDescription (int stepIndex) const
 Get description of single UNDO level. More...
 
virtual QString GetRedoLevelDescription (int stepIndex) const
 Get description of single UNDO level. More...
 
virtual void ResetUndo ()
 Reset all UNDO and REDO steps. More...
 
virtual bool DoUndo (int steps=1)
 Process UNDO steps. More...
 
virtual bool DoRedo (int steps=1)
 Process REDO steps. More...
 
virtual bool OnModelAttached (imod::IModel *modelPtr, istd::IChangeable::ChangeSet &changeMask)
 This call back function will be called, if an observable object is about to be attached. More...
 
virtual bool OnModelDetached (imod::IModel *modelPtr)
 This call back function will be called, if an observable object is about to be detached. More...
 
- Public Member Functions inherited from icomp::CComponentBase
 CComponentBase ()
 Create component and assign it to specific context. More...
 
virtual const ICompositeComponentGetParentComponent (bool ownerOnly=false) const
 Get parent of this component. More...
 
virtual void * GetInterface (const istd::CClassInfo &interfaceType, const QByteArray &subId="")
 Get access to specified component interface. More...
 
virtual const IComponentContextGetComponentContext () const
 Get access to component context describing all application-specified component information loaded from components registry. More...
 
virtual void SetComponentContext (const icomp::IComponentContext *contextPtr, const ICompositeComponent *parentPtr, bool isParentOwner)
 Set component context of this component. More...
 
- Public Member Functions inherited from istd::IPolymorphic
virtual ~IPolymorphic ()
 
- Public Member Functions inherited from imod::TSingleModelObserverBase< iser::ISerializable >
 TSingleModelObserverBase ()
 
iser::ISerializableGetObservedObject () const
 Get instance of observed object. More...
 
iser::ISerializableGetObjectPtr () const
 Get instance of observed object. More...
 
bool AttachOrSetObject (iser::ISerializable *objectPtr)
 Attach to model of object or set object pointer, if no connection is possible. More...
 
- Public Member Functions inherited from imod::CSingleModelObserverBase
 CSingleModelObserverBase ()
 
virtual ~CSingleModelObserverBase ()
 
imod::IModelGetObservedModel () const
 Get access to observed model. More...
 
imod::IModelGetModelPtr () const
 Get access to observed model. More...
 
void EnsureModelDetached ()
 Make sure this observer is detached. More...
 
void SetObservedIds (const istd::IChangeable::ChangeSet &changeMask)
 Set list of ID's beeing observed. More...
 
virtual bool IsModelAttached (const imod::IModel *modelPtr=NULL) const
 Check if specified model is attached. 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...
 

Protected Types

typedef istd::TDelPtr
< iser::CMemoryWriteArchive
UndoArchivePtr
 
typedef QList< UndoStepInfoUndoList
 

Protected Member Functions

bool DoListShift (int steps, UndoList &fromList, UndoList &toList)
 
virtual iser::ISerializableCastFromModel (imod::IModel *modelPtr) const
 
virtual void BeforeUpdate (imod::IModel *modelPtr)
 This function will be called before update of the observer contents occures. More...
 
virtual void AfterUpdate (imod::IModel *modelPtr, const istd::IChangeable::ChangeSet &changeSet)
 This function will be called after update of the observer contents occures. More...
 
virtual bool HasStoredDocumentState () const
 Check if there is stored document available. More...
 
virtual bool StoreDocumentState ()
 Store state of some document. More...
 
virtual bool RestoreDocumentState ()
 Restore last stored document state. More...
 
virtual DocumentChangeFlag GetDocumentChangeFlag () const
 Check if document state is the same as stored state. More...
 
virtual void OnComponentDestroyed ()
 
- Protected Member Functions inherited from icomp::CComponentBase
bool IsComponentActive () const
 Check if component is active. More...
 
virtual void OnComponentCreated ()
 
virtual const
icomp::IRealComponentStaticInfo
GetComponentStaticInfo () const =0
 Get access to static info of this component. More...
 
- Protected Member Functions inherited from imod::CSingleModelObserverBase
void SetModelPtr (imod::IModel *modelPtr)
 Set internal model pointer to specified value. More...
 
virtual void OnUpdate (const istd::IChangeable::ChangeSet &changeSet)
 Called on update of observed model. More...
 
- 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...
 
- Static Protected Member Functions inherited from icomp::CComponentBase
static const
icomp::IRealComponentStaticInfo
InitStaticInfo (IComponent *componentPtr)
 
static QByteArray GetComponentId (const icomp::IComponentContext *componentContextPtr, const QByteArray &contextId=QByteArray())
 
- Static Protected Attributes inherited from imod::CSingleModelObserverBase
static const
istd::IChangeable::ChangeSet 
s_undoChanges
 

Detailed Description

Implements multi level UNDO mechanism based on storing complete objects state at each step using serialization.

To trace if UNDO is available you can use ACF model/observer.

Definition at line 25 of file CSerializedUndoManagerComp.h.

Member Typedef Documentation

Definition at line 31 of file CSerializedUndoManagerComp.h.

Definition at line 32 of file CSerializedUndoManagerComp.h.

Definition at line 57 of file CSerializedUndoManagerComp.h.

Definition at line 63 of file CSerializedUndoManagerComp.h.

Constructor & Destructor Documentation

idoc::CSerializedUndoManagerComp::CSerializedUndoManagerComp ( )

Member Function Documentation

virtual void idoc::CSerializedUndoManagerComp::AfterUpdate ( imod::IModel modelPtr,
const istd::IChangeable::ChangeSet changeSet 
)
protectedvirtual

This function will be called after update of the observer contents occures.

Reimplemented from imod::CSingleModelObserverBase.

virtual void idoc::CSerializedUndoManagerComp::BeforeUpdate ( imod::IModel modelPtr)
protectedvirtual

This function will be called before update of the observer contents occures.

Please note, that in some cases no following AfterUpdate can be called.

Reimplemented from imod::CSingleModelObserverBase.

virtual iser::ISerializable* idoc::CSerializedUndoManagerComp::CastFromModel ( imod::IModel modelPtr) const
protectedvirtual
bool idoc::CSerializedUndoManagerComp::DoListShift ( int  steps,
UndoList fromList,
UndoList toList 
)
protected
virtual bool idoc::CSerializedUndoManagerComp::DoRedo ( int  steps = 1)
virtual

Process REDO steps.

Parameters
levellevel of REDO.

Implements idoc::IUndoManager.

virtual bool idoc::CSerializedUndoManagerComp::DoUndo ( int  steps = 1)
virtual

Process UNDO steps.

Parameters
levellevel of UNDO.

Implements idoc::IUndoManager.

virtual int idoc::CSerializedUndoManagerComp::GetAvailableRedoSteps ( ) const
virtual

Get number of available REDO levels.

Returns
number of REDO levels, or 0 if there is no REDO available.

Implements idoc::IUndoManager.

virtual int idoc::CSerializedUndoManagerComp::GetAvailableUndoSteps ( ) const
virtual

Get number of available UNDO levels.

Returns
number of UNDO levels, or 0 if there is no UNDO available.

Implements idoc::IUndoManager.

virtual DocumentChangeFlag idoc::CSerializedUndoManagerComp::GetDocumentChangeFlag ( ) const
protectedvirtual

Check if document state is the same as stored state.

Implements idoc::IDocumentStateComparator.

virtual QString idoc::CSerializedUndoManagerComp::GetRedoLevelDescription ( int  stepIndex) const
virtual

Get description of single UNDO level.

Implements idoc::IUndoManager.

virtual QString idoc::CSerializedUndoManagerComp::GetUndoLevelDescription ( int  stepIndex) const
virtual

Get description of single UNDO level.

Implements idoc::IUndoManager.

virtual bool idoc::CSerializedUndoManagerComp::HasStoredDocumentState ( ) const
protectedvirtual

Check if there is stored document available.

Implements idoc::IDocumentStateComparator.

virtual void idoc::CSerializedUndoManagerComp::OnComponentDestroyed ( )
protectedvirtual

Reimplemented from icomp::CComponentBase.

virtual bool idoc::CSerializedUndoManagerComp::OnModelAttached ( imod::IModel modelPtr,
istd::IChangeable::ChangeSet changeMask 
)
virtual

This call back function will be called, if an observable object is about to be attached.

This function returns a true, if observable object is accepted by the implementation logic of the observer, otherwise returns false.

Parameters
modelPtrpointer to model object being attached.
changeMaskoutput parameter returning set of change ID's will be accepted. returns a false.

Reimplemented from imod::TSingleModelObserverBase< iser::ISerializable >.

virtual bool idoc::CSerializedUndoManagerComp::OnModelDetached ( imod::IModel modelPtr)
virtual

This call back function will be called, if an observable object is about to be detached.

Reimplemented from imod::TSingleModelObserverBase< iser::ISerializable >.

virtual void idoc::CSerializedUndoManagerComp::ResetUndo ( )
virtual

Reset all UNDO and REDO steps.

Implements idoc::IUndoManager.

virtual bool idoc::CSerializedUndoManagerComp::RestoreDocumentState ( )
protectedvirtual

Restore last stored document state.

Implements idoc::IDocumentStateComparator.

virtual bool idoc::CSerializedUndoManagerComp::StoreDocumentState ( )
protectedvirtual

Store state of some document.

Implements idoc::IDocumentStateComparator.


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

© 2007-2017 Witold Gantzke and Kirill Lepskiy