QCAD Application Framework
CAD Application Development and Automation.
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
RMemoryStorage.h
Go to the documentation of this file.
1 #ifndef RMEMORYSTORAGE_H_
2 #define RMEMORYSTORAGE_H_
3 
4 #include <QSharedPointer>
5 
6 #include "RStorage.h"
8 
15 class RMemoryStorage: public RStorage {
16 public:
18  virtual ~RMemoryStorage();
19 
20  virtual void clear();
21 
22  virtual void setCurrentBlock(RBlock::Id blockId);
23 
24  virtual void beginTransaction();
25  virtual void commitTransaction();
26  virtual void rollbackTransaction();
27 
28  //virtual QList<REntity::Id> orderBackToFront(const QSet<REntity::Id>& entityIds);
29 
30  virtual QSet<RObject::Id> queryAllObjects();
31  virtual QSet<REntity::Id> queryAllEntities(bool undone = false, bool allBlocks = false);
32  virtual QSet<RUcs::Id> queryAllUcs();
33  virtual QSet<RLayer::Id> queryAllLayers(bool undone = false);
34  virtual QSet<RBlock::Id> queryAllBlocks(bool undone = false);
35  virtual QSet<RView::Id> queryAllViews(bool undone = false);
36  virtual QSet<RLinetype::Id> queryAllLinetypes();
37  virtual QSet<REntity::Id> querySelectedEntities();
38 
39  virtual QSet<REntity::Id> queryLayerEntities(RLayer::Id layerId, bool allBlocks = false);
40  virtual QSet<REntity::Id> queryBlockEntities(RBlock::Id blockId);
41  virtual QSet<REntity::Id> queryBlockReferences(RBlock::Id blockId);
42  virtual QSet<REntity::Id> queryAllBlockReferences();
43  //virtual QSet<REntity::Id> queryViewEntities(RView::Id viewId);
44 
45  virtual QSharedPointer<RObject> queryObject(RObject::Id objectId) const;
46  virtual QSharedPointer<REntity> queryEntity(REntity::Id objectId) const;
47  virtual QSharedPointer<RLayer> queryLayer(RLayer::Id layerId) const;
48  virtual QSharedPointer<RLayer> queryLayer(const QString& layerName) const;
49  virtual QSharedPointer<RBlock> queryBlock(RBlock::Id blockId) const;
50  virtual QSharedPointer<RBlock> queryBlock(const QString& blockName) const;
51  virtual QSharedPointer<RView> queryView(RView::Id viewId) const;
52  virtual QSharedPointer<RView> queryView(const QString& viewName) const;
53  virtual QSharedPointer<RUcs> queryUcs(RUcs::Id ucsId) const;
54  virtual QSharedPointer<RUcs> queryUcs(const QString& ucsName) const;
55  virtual QSharedPointer<RLinetype> queryLinetype(RLinetype::Id linetypeId) const;
56  virtual QSharedPointer<RLinetype> queryLinetype(const QString& linetypeName) const;
57 
58  virtual void clearEntitySelection(QSet<REntity::Id>* affectedEntities = NULL);
59  virtual void selectAllEntites(QSet<REntity::Id>* affectedEntities = NULL);
60  virtual void selectEntity(REntity::Id entityId, bool add = false,
61  QSet<REntity::Id>* affectedEntities = NULL);
62  virtual void deselectEntity(REntity::Id entityId,
63  QSet<REntity::Id>* affectedEntities=NULL);
64  virtual void selectEntities(const QSet<REntity::Id>& entityIds,
65  bool add = false,
66  QSet<REntity::Id>* affectedEntities = NULL);
67  virtual void deselectEntities(const QSet<REntity::Id>& entityIds,
68  QSet<REntity::Id>* affectedEntities = NULL);
69  virtual bool isSelected(REntity::Id entityId);
70 
71  virtual bool hasSelection() const;
72 
73  virtual RBox getBoundingBox(bool includeHiddenLayer = true);
74  virtual RBox getSelectionBox();
75 
76  virtual bool saveObject(QSharedPointer<RObject> object);
77  bool checkRecursion(
78  RBlock::Id blockId, RBlock::Id potentialChildBlockId
79  );
80  virtual bool deleteObject(RObject::Id objectId);
81  virtual void saveTransaction(RTransaction& transaction);
82  virtual void deleteTransactionsFrom(int transactionId);
83  virtual RTransaction getTransaction(int transactionId);
84 
85  virtual void resetTransactionStack();
86 
87  virtual void toggleUndoStatus(QSet<RObject::Id>& objects);
88  virtual void toggleUndoStatus(RObject::Id object);
89  virtual bool setUndoStatus(RObject::Id objectId, bool status);
90  //virtual bool getUndoStatus(RObject::Id objectId) const;
91  virtual int getMaxTransactionId();
92 
93  virtual QStringList getVariables() const;
94  virtual void setVariable(const QString& key, const QVariant & value);
95  virtual QVariant getVariable(const QString& key) const;
96 
97  virtual void setKnownVariable(RS::KnownVariable key, const QVariant& value);
98  virtual QVariant getKnownVariable(RS::KnownVariable key) const;
99 
100  virtual QString getLayerName(RLayer::Id layerId);
101  virtual QSet<QString> getLayerNames();
102  virtual RLayer::Id getLayerId(const QString& layerName);
103 
104  virtual QString getBlockName(RBlock::Id blockId) const;
105  virtual QSet<QString> getBlockNames();
106  virtual RBlock::Id getBlockId(const QString& blockName);
107 
108  virtual QString getViewName(RView::Id viewId);
109  virtual QSet<QString> getViewNames();
110  virtual RView::Id getViewId(const QString& viewName);
111 
112  virtual QString getLinetypeName(RLinetype::Id linetypeId);
113  virtual QSet<QString> getLinetypeNames();
114  virtual RLinetype::Id getLinetypeId(const QString& linetypeName);
115 
116  virtual QSharedPointer<RObject> queryObjectDirect(RObject::Id objectId) const;
117  virtual QSharedPointer<REntity> queryEntityDirect(REntity::Id objectId) const;
118  virtual QSharedPointer<RUcs> queryUcsDirect(RUcs::Id ucsId) const;
119  virtual QSharedPointer<RLayer> queryLayerDirect(RLayer::Id layerId) const;
120  virtual QSharedPointer<RBlock> queryBlockDirect(RBlock::Id blockId) const;
121 
122  virtual void setLastTransactionId(int transactionId);
123 
125 
126  virtual void setUnit(RS::Unit unit);
127  virtual RS::Unit getUnit() const;
128 
129  virtual void setLinetypeScale(double v);
130  virtual double getLinetypeScale() const;
131 
132 protected:
137  QHash<RObject::Id, QSharedPointer<RObject> > objectMap;
138  QHash<REntity::Id, QSharedPointer<REntity> > entityMap;
139  QHash<int, RTransaction> transactionMap;
140  QHash<QString, QVariant> variables;
141  QMap<QString, QString> variableCaseMap;
142  QHash<RS::KnownVariable, QVariant> knownVariables;
145 };
146 
148 
149 #endif /* RMEMORYSTOARGE_H_ */