summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSean Harmer <sean.harmer@kdab.com>2016-04-27 09:23:12 +0100
committerPaul Lemire <paul.lemire@kdab.com>2016-04-29 16:22:34 +0000
commit80561fcfad953c818ffc1f4d74bb20c4be1a4581 (patch)
treedf6c88225ac28dfa6d5c7f43b9d04fcdc1ee18bb
parent774b589cc8257a1a759b121a0f839fbabac330a1 (diff)
QLayer/Layer create and handle creation changes
Change-Id: Id12e4d99b56fcfb8b58c58da778c48fcfa19460b Reviewed-by: Paul Lemire <paul.lemire@kdab.com>
-rw-r--r--src/render/backend/layer.cpp14
-rw-r--r--src/render/backend/layer_p.h2
-rw-r--r--src/render/frontend/qlayer.cpp8
-rw-r--r--src/render/frontend/qlayer.h1
-rw-r--r--src/render/frontend/qlayer_p.h5
5 files changed, 28 insertions, 2 deletions
diff --git a/src/render/backend/layer.cpp b/src/render/backend/layer.cpp
index e7fcf759f..19eaa40f7 100644
--- a/src/render/backend/layer.cpp
+++ b/src/render/backend/layer.cpp
@@ -38,9 +38,10 @@
****************************************************************************/
#include "layer_p.h"
-#include "qlayer.h"
-#include <Qt3DCore/qnodepropertychange.h>
+#include <Qt3DRender/qlayer.h>
+#include <Qt3DRender/private/qlayer_p.h>
#include <Qt3DRender/private/stringtoint_p.h>
+#include <Qt3DCore/qnodepropertychange.h>
#include <QVariant>
QT_BEGIN_NAMESPACE
@@ -75,6 +76,15 @@ void Layer::updateFromPeer(Qt3DCore::QNode *peer)
m_layerIds.push_back(StringToInt::lookupId(name));
}
+void Layer::initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change)
+{
+ const auto typedChange = qSharedPointerCast<Qt3DCore::QNodeCreatedChange<QLayerData>>(change);
+ const auto &data = typedChange->data;
+ m_layers = data.names;
+ for (const QString &name : qAsConst(m_layers))
+ m_layerIds.push_back(StringToInt::lookupId(name));
+}
+
QStringList Layer::layers() const
{
return m_layers;
diff --git a/src/render/backend/layer_p.h b/src/render/backend/layer_p.h
index 1e64e66db..1705f7e63 100644
--- a/src/render/backend/layer_p.h
+++ b/src/render/backend/layer_p.h
@@ -79,6 +79,8 @@ public:
void sceneChangeEvent(const Qt3DCore::QSceneChangePtr &e) Q_DECL_OVERRIDE;
private:
+ void initializeFromPeer(const Qt3DCore::QNodeCreatedChangeBasePtr &change) Q_DECL_FINAL;
+
QStringList m_layers;
QVector<int> m_layerIds;
};
diff --git a/src/render/frontend/qlayer.cpp b/src/render/frontend/qlayer.cpp
index b4c85a596..eda3551a7 100644
--- a/src/render/frontend/qlayer.cpp
+++ b/src/render/frontend/qlayer.cpp
@@ -105,6 +105,14 @@ void QLayer::setNames(const QStringList &names)
}
}
+Qt3DCore::QNodeCreatedChangeBasePtr QLayer::createNodeCreationChange() const
+{
+ auto creationChange = Qt3DCore::QNodeCreatedChangePtr<QLayerData>::create(this);
+ auto &data = creationChange->data;
+ data.names = d_func()->m_names;
+ return creationChange;
+}
+
} // namespace Qt3DRender
QT_END_NAMESPACE
diff --git a/src/render/frontend/qlayer.h b/src/render/frontend/qlayer.h
index ad245b60f..1517148ee 100644
--- a/src/render/frontend/qlayer.h
+++ b/src/render/frontend/qlayer.h
@@ -70,6 +70,7 @@ protected:
private:
Q_DECLARE_PRIVATE(QLayer)
+ Qt3DCore::QNodeCreatedChangeBasePtr createNodeCreationChange() const Q_DECL_OVERRIDE;
};
} // namespace Qt3DRender
diff --git a/src/render/frontend/qlayer_p.h b/src/render/frontend/qlayer_p.h
index b748003a8..824621281 100644
--- a/src/render/frontend/qlayer_p.h
+++ b/src/render/frontend/qlayer_p.h
@@ -67,6 +67,11 @@ public:
QStringList m_names;
};
+struct QLayerData
+{
+ QStringList names;
+};
+
} // namespace Qt3DRender
QT_END_NAMESPACE