summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp')
-rw-r--r--src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp31
1 files changed, 24 insertions, 7 deletions
diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp
index 7fa54cb6..c0d7a965 100644
--- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp
+++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.cpp
@@ -544,6 +544,20 @@ void TimelineWidget::onAssetCreated(qt3dsdm::Qt3DSDMInstanceHandle inInstance)
->createRowFromBinding(binding, bindingParent->getRowTree());
row->updateSubpresentations();
insertToHandlesMap(binding);
+
+ // refresh the created object variants if it is a layer with variants property
+ // set.
+ if (m_bridge->IsLayerInstance(inInstance)) {
+ const auto propertySystem = g_StudioApp.GetCore()->GetDoc()
+ ->GetPropertySystem();
+ qt3dsdm::SValue sValue;
+ if (propertySystem->GetInstancePropertyValue(inInstance,
+ m_bridge->GetLayer().m_variants,
+ sValue)) {
+ if (qt3dsdm::get<qt3dsdm::TDataStrPtr>(sValue)->GetLength() != 0)
+ refreshVariants(inInstance);
+ }
+ }
} else {
qWarning() << "Binding parent was not found.";
}
@@ -755,8 +769,7 @@ void TimelineWidget::onPropertyChanged(qt3dsdm::Qt3DSDMInstanceHandle inInstance
} else if (inProperty == m_bridge->GetLayer().m_variants) {
qt3dsdm::SValue sValue;
if (doc->GetPropertySystem()->GetInstancePropertyValue(inInstance, inProperty, sValue)) {
- QString propVal = QString::fromWCharArray(qt3dsdm::get<qt3dsdm::TDataStrPtr>(sValue)
- ->GetData());
+ QString propVal = qt3dsdm::get<qt3dsdm::TDataStrPtr>(sValue)->toQString();
if (!propVal.isEmpty()) {
QStringList tagPairs = propVal.split(QLatin1Char(','));
QStringList groups;
@@ -1247,19 +1260,23 @@ void TimelineWidget::setSelectedTimeBarsColor(const QColor &color, bool preview)
}
}
-void TimelineWidget::refreshVariants()
+void TimelineWidget::refreshVariants(int instance)
{
const auto propertySystem = g_StudioApp.GetCore()->GetDoc()->GetPropertySystem();
- const auto layers = g_StudioApp.GetCore()->GetDoc()->getLayers();
- for (auto layer : layers) {
+ QVector<int> layers;
+ if (instance)
+ layers << instance;
+ else
+ layers = g_StudioApp.GetCore()->GetDoc()->getLayers();
+
+ for (auto layer : qAsConst(layers)) {
if (!m_handlesMap.contains(layer))
continue;
qt3dsdm::SValue sValue;
if (propertySystem->GetInstancePropertyValue(layer, m_bridge->GetLayer().m_variants,
sValue)) {
- QString propVal = QString::fromWCharArray(qt3dsdm::get<qt3dsdm::TDataStrPtr>(sValue)
- ->GetData());
+ QString propVal = qt3dsdm::get<qt3dsdm::TDataStrPtr>(sValue)->toQString();
if (!propVal.isEmpty()) {
QStringList tagPairs = propVal.split(QLatin1Char(','));
QStringList groups;