src/model.h

changeset 1440
265b2e95a8e8
parent 1377
0b9a946002be
--- a/src/model.h	Fri Dec 28 00:03:47 2018 +0200
+++ b/src/model.h	Thu Jun 20 08:54:35 2019 +0300
@@ -73,7 +73,7 @@
 /*
  * This class represents a LDraw model, consisting of a vector of objects. It manages LDObject ownership.
  */
-class Model : public QAbstractListModel
+class Model : public QObject
 {
 	Q_OBJECT
 
@@ -104,26 +104,16 @@
 	bool isEmpty() const;
 	class DocumentManager* documentManager() const;
 	IndexGenerator indices() const;
-	LDObject* lookup(const QModelIndex& index) const;
-	QColor pickingColorForObject(const QModelIndex& objectIndex) const;
+	LDObject* lookup(const Uuid& index) const;
+	QColor pickingColorForObject(const Uuid& id) const;
 	QModelIndex objectByPickingColor(const QColor& color) const;
 	Winding winding() const;
 	void setWinding(Winding winding);
-
-	bool moveRows(
-		const QModelIndex& sourceParent,
-		int sourceRow,
-		int count,
-		const QModelIndex& destinationParent,
-		int destinationChild
-	) override;
-
-	int rowCount(const QModelIndex& parent) const override;
-	QVariant data(const QModelIndex& index, int role) const override;
+	int rowOf(const Uuid& id);
 
 signals:
-	void objectAdded(const QModelIndex& object);
-	void aboutToRemoveObject(const QModelIndex& index);
+	void objectAdded(const Uuid& object);
+	void aboutToRemoveObject(const Uuid& index, const LDObject* object);
 	void objectModified(LDObject* object);
 	void windingChanged(Winding newWinding);
 	void modelChanged();
@@ -132,6 +122,7 @@
 	template<typename T, typename... Args> T* constructObject(Args&& ...args);
 
 	QVector<LDObject*> _objects;
+	QMap<Uuid, LDObject *> _objectsById;
 	QMap<LDObject*, QRgb> pickingColors;
 	QRgb pickingColorCursor = 0x000001;
 	class DocumentManager* _manager;

mercurial