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 { |