| | |
| |
|
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| |
|
| | #ifndef MATERIAL_FOLDERTREE_H |
| | #define MATERIAL_FOLDERTREE_H |
| |
|
| | #include <map> |
| | #include <memory> |
| |
|
| | #include <QString> |
| |
|
| | namespace Materials |
| | { |
| |
|
| | template<class T> |
| | class FolderTreeNode |
| | { |
| | public: |
| | enum class NodeType |
| | { |
| | UnknownNode, |
| | DataNode, |
| | FolderNode |
| | }; |
| |
|
| | FolderTreeNode() |
| | : _type(NodeType::UnknownNode) |
| | , _oldFormat(false) |
| | , _readOnly(false) |
| | {} |
| | virtual ~FolderTreeNode() = default; |
| |
|
| | NodeType getType() const |
| | { |
| | |
| | return _type; |
| | } |
| | void setType(NodeType type) |
| | { |
| | _type = type; |
| | } |
| |
|
| | std::shared_ptr<std::map<QString, std::shared_ptr<FolderTreeNode<T>>>> getFolder() const |
| | { |
| | assert(_type == NodeType::FolderNode); |
| | return _folder; |
| | } |
| | std::shared_ptr<std::map<QString, std::shared_ptr<FolderTreeNode<T>>>> getFolder() |
| | { |
| | assert(_type == NodeType::FolderNode); |
| | return _folder; |
| | } |
| | std::shared_ptr<T> getData() const |
| | { |
| | assert(_type == NodeType::DataNode); |
| | return _data; |
| | } |
| | QString getUUID() const |
| | { |
| | assert(_type == NodeType::DataNode); |
| | return _uuid; |
| | } |
| | bool isOldFormat() const |
| | { |
| | return _oldFormat; |
| | } |
| | bool isReadOnly() const |
| | { |
| | return _readOnly; |
| | } |
| |
|
| | void setFolder(std::shared_ptr<std::map<QString, std::shared_ptr<FolderTreeNode<T>>>> folder) |
| | { |
| | setType(NodeType::FolderNode); |
| | _folder = folder; |
| | } |
| | void setData(std::shared_ptr<T> data) |
| | { |
| | setType(NodeType::DataNode); |
| | _data = data; |
| | } |
| | void setUUID(const QString& uuid) |
| | { |
| | setType(NodeType::DataNode); |
| | _uuid = uuid; |
| | } |
| | void setOldFormat(bool oldFormat) |
| | { |
| | _oldFormat = oldFormat; |
| | } |
| | void setReadOnly(bool readOnly) |
| | { |
| | _readOnly = readOnly; |
| | } |
| |
|
| | private: |
| | NodeType _type; |
| | std::shared_ptr<std::map<QString, std::shared_ptr<FolderTreeNode<T>>>> _folder; |
| | QString _uuid; |
| | std::shared_ptr<T> _data; |
| | bool _oldFormat; |
| | bool _readOnly; |
| | }; |
| |
|
| | } |
| |
|
| | #endif |
| |
|