From d365c795bb03e7650dc095068bf02599101e274f Mon Sep 17 00:00:00 2001 From: Mahmoud Badri Date: Thu, 28 Feb 2019 12:31:57 +0200 Subject: Implement variant tags slide view tooltip MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Task-number: QT3DS-3114 Change-Id: I9003913ab919ad53ae0ec1e4192f41772fb4141f Reviewed-by: Miikka Heikkinen Reviewed-by: Janne Kangas Reviewed-by: Antti Määttä --- src/Authoring/Client/Code/Core/Doc/Doc.cpp | 4 +- src/Authoring/Client/Code/Core/Doc/Doc.h | 2 +- src/Authoring/Studio/Application/ProjectFile.cpp | 9 +-- .../Palettes/Inspector/VariantsGroupModel.cpp | 3 +- src/Authoring/Studio/Palettes/Slide/SlideModel.cpp | 68 +++++++++++++--------- src/Authoring/Studio/Palettes/Slide/SlideModel.h | 7 ++- src/Authoring/Studio/Palettes/Slide/SlideView.cpp | 67 ++++++++++++++++++++- src/Authoring/Studio/Palettes/Slide/SlideView.h | 16 +++-- src/Authoring/Studio/Palettes/Slide/SlideView.qml | 16 ++++- .../TimelineGraphicsView/TimelineGraphicsScene.cpp | 3 +- .../TimelineGraphicsView/TimelineWidget.cpp | 31 +++++++--- .../Palettes/TimelineGraphicsView/TimelineWidget.h | 2 +- .../Palettes/TimelineGraphicsView/ui/RowTree.cpp | 40 ++++++------- 13 files changed, 187 insertions(+), 81 deletions(-) diff --git a/src/Authoring/Client/Code/Core/Doc/Doc.cpp b/src/Authoring/Client/Code/Core/Doc/Doc.cpp index 9f1f4dca..ef6fc42f 100644 --- a/src/Authoring/Client/Code/Core/Doc/Doc.cpp +++ b/src/Authoring/Client/Code/Core/Doc/Doc.cpp @@ -727,12 +727,12 @@ qt3dsdm::Qt3DSDMInstanceHandle CDoc::GetFirstSelectableLayer() return theFoundLayer; } -QVector CDoc::getLayers() +QVector CDoc::getLayers() { Q3DStudio::CGraphIterator layerIterator; GetAssetChildren(this, m_SceneInstance, layerIterator, OBJTYPE_LAYER); - QVector layerList; + QVector layerList; for (; !layerIterator.IsDone(); ++layerIterator) { if (m_StudioSystem->IsInstance(layerIterator.GetCurrent())) diff --git a/src/Authoring/Client/Code/Core/Doc/Doc.h b/src/Authoring/Client/Code/Core/Doc/Doc.h index e66a2057..c18b85fb 100644 --- a/src/Authoring/Client/Code/Core/Doc/Doc.h +++ b/src/Authoring/Client/Code/Core/Doc/Doc.h @@ -465,7 +465,7 @@ public: int getSelectedInstancesCount() const; std::shared_ptr getSceneEditor() { return m_SceneEditor; } - QVector getLayers(); + QVector getLayers(); void queueMaterialRename(const QString &oldName, const QString &newName); diff --git a/src/Authoring/Studio/Application/ProjectFile.cpp b/src/Authoring/Studio/Application/ProjectFile.cpp index bd79e64b..ebec8b53 100644 --- a/src/Authoring/Studio/Application/ProjectFile.cpp +++ b/src/Authoring/Studio/Application/ProjectFile.cpp @@ -1123,8 +1123,7 @@ void ProjectFile::renameVariantTag(const QString &group, const QString &oldTag, for (auto layer : layers) { qt3dsdm::SValue sValue; if (propertySystem->GetInstancePropertyValue(layer, property, sValue)) { - QString propVal = QString::fromWCharArray(qt3dsdm::get(sValue) - ->GetData()); + QString propVal = qt3dsdm::get(sValue)->toQString(); QString oldGroupTagPair = QStringLiteral("%1:%2").arg(group).arg(oldTag); if (propVal.contains(oldGroupTagPair)) { propVal.replace(oldGroupTagPair, QStringLiteral("%1:%2").arg(group).arg(newTag)); @@ -1186,8 +1185,7 @@ void ProjectFile::renameVariantGroup(const QString &oldGroup, const QString &new for (auto layer : layers) { qt3dsdm::SValue sValue; if (propertySystem->GetInstancePropertyValue(layer, property, sValue)) { - QString propVal = QString::fromWCharArray(qt3dsdm::get(sValue) - ->GetData()); + QString propVal = qt3dsdm::get(sValue)->toQString(); QString oldGroupWithColon = QStringLiteral("%1:").arg(oldGroup); if (propVal.contains(oldGroupWithColon)) { propVal.replace(oldGroupWithColon, QStringLiteral("%1:").arg(newGroup)); @@ -1262,8 +1260,7 @@ void ProjectFile::deleteVariantGroup(const QString &group) for (auto layer : layers) { qt3dsdm::SValue sValue; if (propertySystem->GetInstancePropertyValue(layer, property, sValue)) { - QString propVal = QString::fromWCharArray(qt3dsdm::get(sValue) - ->GetData()); + QString propVal = qt3dsdm::get(sValue)->toQString(); if (propVal.contains(QStringLiteral("%1:").arg(group))) { // property has the deleted group, need to update it, else the deleted group // will be saved the uip if the user saves the presentation. diff --git a/src/Authoring/Studio/Palettes/Inspector/VariantsGroupModel.cpp b/src/Authoring/Studio/Palettes/Inspector/VariantsGroupModel.cpp index a122889b..e31a5876 100644 --- a/src/Authoring/Studio/Palettes/Inspector/VariantsGroupModel.cpp +++ b/src/Authoring/Studio/Palettes/Inspector/VariantsGroupModel.cpp @@ -65,8 +65,7 @@ void VariantsGroupModel::refresh() beginResetModel(); m_data.clear(); - QString propVal = QString::fromWCharArray(qt3dsdm::get(sValue) - ->GetData()); + QString propVal = qt3dsdm::get(sValue)->toQString(); QHash propTags; if (!propVal.isEmpty()) { const QStringList propTagsList = propVal.split(QChar(',')); diff --git a/src/Authoring/Studio/Palettes/Slide/SlideModel.cpp b/src/Authoring/Studio/Palettes/Slide/SlideModel.cpp index eba5d044..3cf0a01e 100644 --- a/src/Authoring/Studio/Palettes/Slide/SlideModel.cpp +++ b/src/Authoring/Studio/Palettes/Slide/SlideModel.cpp @@ -58,8 +58,18 @@ QVariant SlideModel::data(const QModelIndex &index, int role) const return row == m_selectedRow; case VariantsRole: int slideIdx = GetDoc()->GetStudioSystem()->GetSlideSystem()->GetSlideIndex(m_slides[row]); - if (slideIdx < m_variants.size()) - return m_variants.at(slideIdx); + if (slideIdx < m_variantsModel.size()) { + const auto variantsDef = g_StudioApp.GetCore()->getProjectFile().variantsDef(); + const auto keys = m_variantsModel[slideIdx].keys(); + QString templ = QStringLiteral(" %2"); + QString slideVariants; + for (auto g : keys) { // variants groups + slideVariants.append(templ.arg(variantsDef[g].m_color) + .arg(m_variantsModel[slideIdx][g].length())); + } + + return slideVariants; + } } return {}; @@ -352,17 +362,15 @@ void SlideModel::setSlideName(const qt3dsdm::Qt3DSDMSlideHandle &handle, const Q } } -void SlideModel::refreshVariants(const QStringList &variants) +void SlideModel::refreshVariants(const QVector> &vModel) { - m_variants.clear(); + m_variantsModel.clear(); - if (variants.isEmpty()) { + if (vModel.isEmpty()) { const auto *slideSystem = GetDoc()->GetStudioSystem()->GetSlideSystem(); int slideCount = slideSystem->GetSlideCount(slideSystem->GetMasterSlide( GetDoc()->GetActiveSlide())); - - QString vTemplate = QStringLiteral(" %2"); - QVector> counts(slideCount); // + m_variantsModel.resize(slideCount); const auto propertySystem = GetDoc()->GetPropertySystem(); const auto layers = GetDoc()->getLayers(); @@ -371,37 +379,30 @@ void SlideModel::refreshVariants(const QStringList &variants) qt3dsdm::SValue sValue; if (propertySystem->GetInstancePropertyValue(layer, GetBridge()->GetLayer().m_variants, sValue)) { - QString propVal = QString::fromWCharArray(qt3dsdm::get(sValue) - ->GetData()); + QString propVal = qt3dsdm::get(sValue)->toQString(); if (!propVal.isEmpty()) { QStringList tagPairs = propVal.split(QLatin1Char(',')); for (int i = 0; i < tagPairs.size(); ++i) { - QString group = tagPairs[i].left(tagPairs[i].indexOf(QLatin1Char(':'))); - ++counts[slideIdx][group]; + QStringList pair = tagPairs[i].split(QLatin1Char(':')); + if (!m_variantsModel[slideIdx][pair[0]].contains(pair[1])) + m_variantsModel[slideIdx][pair[0]].append(pair[1]); } } } } - // add master slide layers counts to other layers - const auto keys = counts[0].keys(); + // add master slide variants to other slides + const auto keys = m_variantsModel[0].keys(); for (int i = 1; i < slideCount; ++i) { - for (auto g : keys) - counts[i][g] += counts[0][g]; - } - - // update the variants counts model (m_variants) - auto variantsDef = g_StudioApp.GetCore()->getProjectFile().variantsDef(); - for (int i = 0; i < counts.size(); ++i) { // slides indexes - QString slideVariants; - const auto keys = counts[i].keys(); - for (auto g : keys) // variants groups - slideVariants.append(vTemplate.arg(variantsDef[g].m_color).arg(counts[i][g])); - - m_variants << slideVariants; + for (auto g : keys) { + for (int j = 0; j < m_variantsModel[0][g].length(); ++j) { + if (!m_variantsModel[i][g].contains(m_variantsModel[0][g][j])) + m_variantsModel[i][g].append(m_variantsModel[0][g][j]); + } + } } } else { - m_variants = variants; + m_variantsModel = vModel; } Q_EMIT dataChanged(this->index(0, 0), this->index(rowCount() - 1, 0), {VariantsRole}); @@ -425,6 +426,17 @@ CClientDataModelBridge *SlideModel::GetBridge() const return doc->GetStudioSystem()->GetClientDataModelBridge(); } +QVector > SlideModel::variantsModel() const +{ + return m_variantsModel; +} + +QHash SlideModel::variantsSlideModel(int row) const +{ + int slideIdx = GetDoc()->GetStudioSystem()->GetSlideSystem()->GetSlideIndex(m_slides[row]); + return m_variantsModel[slideIdx]; +} + void SlideModel::refreshSlideLabel(qt3dsdm::Qt3DSDMInstanceHandle instanceHandle, qt3dsdm::Qt3DSDMPropertyHandle propertyHandle) { diff --git a/src/Authoring/Studio/Palettes/Slide/SlideModel.h b/src/Authoring/Studio/Palettes/Slide/SlideModel.h index 6f2de22f..b92a01c5 100644 --- a/src/Authoring/Studio/Palettes/Slide/SlideModel.h +++ b/src/Authoring/Studio/Palettes/Slide/SlideModel.h @@ -77,8 +77,9 @@ public: void refreshSlideLabel(qt3dsdm::Qt3DSDMInstanceHandle instanceHandle, qt3dsdm::Qt3DSDMPropertyHandle propertyHandle); void setSelectedSlideIndex(const QModelIndex &index); - void refreshVariants(const QStringList &variants = {}); - QStringList variants() const { return m_variants; } + void refreshVariants(const QVector> &vModel = {}); + QHash variantsSlideModel(int row) const; + QVector > variantsModel() const; private: bool hasSlideWithName(const QString &name) const; @@ -92,7 +93,7 @@ private: int m_selectedRow = -1; int m_rearrangeStartRow = -1; int m_rearrangeEndRow = -1; - QStringList m_variants; // model for variants tags display + QVector > m_variantsModel; QHash m_slideLookupHash; }; diff --git a/src/Authoring/Studio/Palettes/Slide/SlideView.cpp b/src/Authoring/Studio/Palettes/Slide/SlideView.cpp index e459deda..f3a5e099 100644 --- a/src/Authoring/Studio/Palettes/Slide/SlideView.cpp +++ b/src/Authoring/Studio/Palettes/Slide/SlideView.cpp @@ -44,6 +44,7 @@ #include "Dialogs.h" #include +#include "QtWidgets/qlabel.h" #include #include @@ -51,9 +52,14 @@ SlideView::SlideView(QWidget *parent) : QQuickWidget(parent) , m_MasterSlideModel(new SlideModel(1, this)) , m_SlidesModel(new SlideModel(0, this)) , m_CurrentModel(m_SlidesModel) - , m_ActiveRoot(0) , m_toolTip(tr("No Controller")) { + m_variantsToolTip = new QLabel(this); + m_variantsToolTip->setObjectName(QStringLiteral("variantsToolTip")); + m_variantsToolTip->setWindowModality(Qt::NonModal); + m_variantsToolTip->setWindowFlags(Qt::FramelessWindowHint | Qt::ToolTip); + m_variantsToolTip->setContentsMargins(2, 2, 2, 2); + g_StudioApp.GetCore()->GetDispatch()->AddPresentationChangeListener(this); setResizeMode(QQuickWidget::SizeRootObjectToView); QTimer::singleShot(0, this, &SlideView::initialize); @@ -177,6 +183,36 @@ void SlideView::showContextMenu(int x, int y, int row) contextMenu.exec(mapToGlobal({x, y})); } +void SlideView::showVariantsTooltip(int row, const QPoint &point) +{ + const auto variantsDef = g_StudioApp.GetCore()->getProjectFile().variantsDef(); + QString templ = QStringLiteral("%2"); + QString tooltipStr(""); + const auto slideVariants = m_CurrentModel->variantsSlideModel(row); + const auto keys = slideVariants.keys(); + for (auto &g : keys) { + tooltipStr.append(""); + } + tooltipStr.append("
"); + tooltipStr.append(templ.arg(variantsDef[g].m_color).arg(g + ": ")); + tooltipStr.append(""); + for (auto &t : slideVariants[g]) + tooltipStr.append(t + ", "); + tooltipStr.chop(2); + tooltipStr.append("
"); + + m_variantsToolTip->setText(tooltipStr); + m_variantsToolTip->adjustSize(); + m_variantsToolTip->move(point); + m_variantsToolTip->raise(); + m_variantsToolTip->show(); +} + +void SlideView::hideVariantsTooltip() +{ + m_variantsToolTip->hide(); +} + void SlideView::OnNewPresentation() { // Register callbacks @@ -202,6 +238,12 @@ void SlideView::OnNewPresentation() std::bind(&SlideView::onPropertyChanged, this, std::placeholders::_1, std::placeholders::_2))); + // object created/deleted + m_Connections.push_back(theSignalProvider->ConnectInstanceCreated( + std::bind(&SlideView::onAssetCreated, this, std::placeholders::_1))); + m_Connections.push_back(theSignalProvider->ConnectInstanceDeleted( + std::bind(&SlideView::onAssetDeleted, this, std::placeholders::_1))); + // Set up listener for undo/redo changes in order to update // slide datainput control CDispatch *theDispatch = g_StudioApp.GetCore()->GetDispatch(); @@ -327,6 +369,27 @@ void SlideView::onDataInputChange(int handle, int instance, const QString &dataI Q_EMIT controlledChanged(); } +void SlideView::onAssetCreated(qt3dsdm::Qt3DSDMInstanceHandle inInstance) +{ + // refresh the variants model if the created asset is a layer with variants property set. + if (GetBridge()->IsLayerInstance(inInstance)) { + const auto propertySystem = GetDoc()->GetPropertySystem(); + qt3dsdm::SValue sValue; + if (propertySystem->GetInstancePropertyValue(inInstance, GetBridge()->GetLayer().m_variants, + sValue)) { + if (qt3dsdm::get(sValue)->GetLength() != 0) + refreshVariants(); + } + } +} + +void SlideView::onAssetDeleted(qt3dsdm::Qt3DSDMInstanceHandle inInstance) +{ + Q_UNUSED(inInstance) + + refreshVariants(); +} + void SlideView::onPropertyChanged(qt3dsdm::Qt3DSDMInstanceHandle inInstance, qt3dsdm::Qt3DSDMPropertyHandle inProperty) { @@ -506,7 +569,7 @@ bool SlideView::isMaster(const qt3dsdm::Qt3DSDMSlideHandle &inSlideHandle) void SlideView::refreshVariants() { m_SlidesModel->refreshVariants(); - m_MasterSlideModel->refreshVariants(m_SlidesModel->variants()); + m_MasterSlideModel->refreshVariants(m_SlidesModel->variantsModel()); } void SlideView::OnBeginDataModelNotifications() diff --git a/src/Authoring/Studio/Palettes/Slide/SlideView.h b/src/Authoring/Studio/Palettes/Slide/SlideView.h index 18c4d1d7..eed79655 100644 --- a/src/Authoring/Studio/Palettes/Slide/SlideView.h +++ b/src/Authoring/Studio/Palettes/Slide/SlideView.h @@ -38,9 +38,12 @@ #include "Qt3DSDMSignals.h" #include "DispatchListeners.h" #include "Dispatch.h" + class CClientDataModelBridge; class CDoc; +QT_FORWARD_DECLARE_CLASS(QLabel); + namespace qt3dsdm { class ISlideSystem; } @@ -78,6 +81,8 @@ public: Q_INVOKABLE void finishSlideRearrange(bool commit); Q_INVOKABLE void showContextMenu(int x, int y, int row); Q_INVOKABLE void showControllerDialog(const QPoint &point); + Q_INVOKABLE void showVariantsTooltip(int row, const QPoint &point); + Q_INVOKABLE void hideVariantsTooltip(); Q_INVOKABLE bool toolTipsEnabled(); // Presentation Change Listener @@ -121,6 +126,8 @@ private: long GetSlideIndex(const qt3dsdm::Qt3DSDMSlideHandle &inSlideHandle); bool isMaster(const qt3dsdm::Qt3DSDMSlideHandle &inSlideHandle); void rebuildSlideList(const qt3dsdm::Qt3DSDMSlideHandle &inActiveSlideHandle); + void onAssetCreated(qt3dsdm::Qt3DSDMInstanceHandle inInstance); + void onAssetDeleted(qt3dsdm::Qt3DSDMInstanceHandle inInstance); void onPropertyChanged(qt3dsdm::Qt3DSDMInstanceHandle inInstance, qt3dsdm::Qt3DSDMPropertyHandle inProperty); @@ -128,17 +135,18 @@ private: SlideModel *m_SlidesModel = nullptr; SlideModel *m_CurrentModel = nullptr; DataInputSelectView *m_dataInputSelector = nullptr; + QLabel *m_variantsToolTip = nullptr; QColor m_BaseColor = QColor::fromRgb(75, 75, 75); - std::vector> - m_Connections; /// connections to the DataModel + std::vector> m_Connections; typedef QHash TIntIntMap; // We need to remember which slide we were on when we entered the master slide. // Then, when the users leave the master slide we can go back to roughly the same // state. TIntIntMap m_MasterSlideReturnPointers; - qt3dsdm::Qt3DSDMInstanceHandle m_ActiveRoot; ///< the object containing the slides to be inspected. - qt3dsdm::Qt3DSDMSlideHandle m_ActiveSlideHandle; ///< the active slide handle + // the object containing the slides to be inspected. + qt3dsdm::Qt3DSDMInstanceHandle m_ActiveRoot = 0; + qt3dsdm::Qt3DSDMSlideHandle m_ActiveSlideHandle; // the active slide handle bool m_controlled = false; // Are slides in this slide set controlled by datainput? QString m_currentController; QString m_toolTip; diff --git a/src/Authoring/Studio/Palettes/Slide/SlideView.qml b/src/Authoring/Studio/Palettes/Slide/SlideView.qml index 4113c947..93865fa3 100644 --- a/src/Authoring/Studio/Palettes/Slide/SlideView.qml +++ b/src/Authoring/Studio/Palettes/Slide/SlideView.qml @@ -270,8 +270,20 @@ Rectangle { verticalAlignment: Text.AlignVCenter background: Rectangle { color:"#111111" } wrapMode: Text.WordWrap - visible: model.variants !== "" - text: model.variants + visible: model.variants !== undefined && model.variants !== "" + text: model.variants ? model.variants : "" + + MouseArea { + anchors.fill: parent + hoverEnabled: true + onEntered: { + _parentView.showVariantsTooltip( + model.index, mapToGlobal(x + width + 2, y)); + } + onExited : { + _parentView.hideVariantsTooltip(); + } + } } Item { diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineGraphicsScene.cpp b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineGraphicsScene.cpp index 1f750f15..9e77a2ce 100644 --- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineGraphicsScene.cpp +++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineGraphicsScene.cpp @@ -1012,8 +1012,7 @@ void TimelineGraphicsScene::updateHoverStatus(const QPointF &scenePos) SValue sValue; if (propertySystem->GetInstancePropertyValue(rowTree->instance(), property, sValue)) { - QString propVal = QString::fromWCharArray(get(sValue) - ->GetData()); + QString propVal = qt3dsdm::get(sValue)->toQString(); if (!propVal.isEmpty()) { // parse propVal into variantsHash (group => tags) const QStringList tagPairs = propVal.split(QLatin1Char(',')); 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(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(sValue) - ->GetData()); + QString propVal = qt3dsdm::get(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 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(sValue) - ->GetData()); + QString propVal = qt3dsdm::get(sValue)->toQString(); if (!propVal.isEmpty()) { QStringList tagPairs = propVal.split(QLatin1Char(',')); QStringList groups; diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.h b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.h index ac01367a..d4a76ba1 100644 --- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.h +++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/TimelineWidget.h @@ -73,7 +73,7 @@ public: void openBarColorDialog(); void onTimeBarColorChanged(const QColor &color); void setSelectedTimeBarsColor(const QColor &color, bool preview); - void refreshVariants(); + void refreshVariants(int instance = 0); void enableDnD(bool b = true); bool dndActive() const; bool blockMousePress() const; diff --git a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.cpp b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.cpp index 39405ac4..bf4820ea 100644 --- a/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.cpp +++ b/src/Authoring/Studio/Palettes/TimelineGraphicsView/ui/RowTree.cpp @@ -53,15 +53,28 @@ // object row constructor RowTree::RowTree(TimelineGraphicsScene *timelineScene, EStudioObjectType rowType, const QString &label) + : m_rowTimeline(new RowTimeline()) + , m_scene(timelineScene) + , m_rowType(rowType) + , m_label(label) +{ + CDoc *doc = g_StudioApp.GetCore()->GetDoc(); + m_onMasterSlide = doc->GetStudioSystem()->GetSlideSystem() + ->IsMasterSlide(doc->GetActiveSlide()); + + initialize(); +} + +// property row constructor +RowTree::RowTree(TimelineGraphicsScene *timelineScene, const QString &propType) : InteractiveTimelineItem() , m_rowTimeline(new RowTimeline()) + , m_isProperty(true) + , m_scene(timelineScene) + , m_propertyType(propType) + , m_label(propType) { - m_scene = timelineScene; - m_rowType = rowType; - m_label = label; - CDoc *doc = g_StudioApp.GetCore()->GetDoc(); - m_onMasterSlide = doc->GetStudioSystem()->GetSlideSystem()->IsMasterSlide( - doc->GetActiveSlide()); + m_rowTimeline->m_isProperty = true; initialize(); } @@ -83,21 +96,6 @@ int RowTree::instance() const return static_cast(m_binding)->GetInstance(); } -// property row constructor -RowTree::RowTree(TimelineGraphicsScene *timelineScene, const QString &propType) - : InteractiveTimelineItem() - , m_rowTimeline(new RowTimeline()) -{ - m_scene = timelineScene; - m_label = propType; - m_propertyType = propType; - - m_isProperty = true; - m_rowTimeline->m_isProperty = true; - - initialize(); -} - void RowTree::initialize() { setTimelineRow(m_rowTimeline); -- cgit v1.2.3