| 21 EditContext edit(); |
21 EditContext edit(); |
| 22 int rowCount(const QModelIndex&) const override; |
22 int rowCount(const QModelIndex&) const override; |
| 23 QVariant data(const QModelIndex& index, int role) const override; |
23 QVariant data(const QModelIndex& index, int role) const override; |
| 24 QVariant getHeaderProperty(const HeaderProperty property); |
24 QVariant getHeaderProperty(const HeaderProperty property); |
| 25 const QString& getName() const; |
25 const QString& getName() const; |
| 26 QVariant getObjectProperty(const int index, const modelobjects::Property property) const; |
26 QVariant getObjectProperty(const int index, const linetypes::Property property) const; |
| 27 signals: |
27 signals: |
| 28 void objectAdded(modelobjects::Id id, int position); |
28 void objectAdded(linetypes::Id id, int position); |
| 29 private: |
29 private: |
| 30 using ModelObjectPointer = std::unique_ptr<modelobjects::BaseObject>; |
30 using ModelObjectPointer = std::unique_ptr<linetypes::Object>; |
| 31 template<typename T, typename... Args> |
31 template<typename T, typename... Args> |
| 32 T* append(Args&&... args); |
32 T* append(Args&&... args); |
| 33 void append(ModelObjectPointer&& object); |
33 void append(ModelObjectPointer&& object); |
| 34 template<typename T, typename... Args> |
34 template<typename T, typename... Args> |
| 35 T* insert(int position, Args&&... args); |
35 T* insert(int position, Args&&... args); |
| 36 bool modified = false; |
36 bool modified = false; |
| 37 QString path; |
37 QString path; |
| 38 LDHeader header; |
38 LDHeader header; |
| 39 std::vector<ModelObjectPointer> body; |
39 std::vector<ModelObjectPointer> body; |
| 40 std::map<modelobjects::Id, modelobjects::BaseObject*> objectsById; |
40 std::map<linetypes::Id, linetypes::Object*> objectsById; |
| 41 }; |
41 }; |
| 42 |
42 |
| 43 template<typename T, typename... Args> |
43 template<typename T, typename... Args> |
| 44 T* Model::append(Args&&... args) |
44 T* Model::append(Args&&... args) |
| 45 { |
45 { |