diff options
-rw-r--r-- | src/Authoring/Studio/Palettes/Slide/SlideModel.cpp | 10 | ||||
-rw-r--r-- | src/Authoring/Studio/Palettes/Slide/SlideModel.h | 1 | ||||
-rw-r--r-- | src/Authoring/Studio/Palettes/Slide/SlideView.cpp | 11 |
3 files changed, 21 insertions, 1 deletions
diff --git a/src/Authoring/Studio/Palettes/Slide/SlideModel.cpp b/src/Authoring/Studio/Palettes/Slide/SlideModel.cpp index f0db7b26..308af8a1 100644 --- a/src/Authoring/Studio/Palettes/Slide/SlideModel.cpp +++ b/src/Authoring/Studio/Palettes/Slide/SlideModel.cpp @@ -381,5 +381,15 @@ void SlideModel::refreshSlideLabel(qt3dsdm::Qt3DSDMInstanceHandle instanceHandle } +// Set selected slide highlight on UI +void SlideModel::setSelectedSlideIndex(const QModelIndex &index) +{ + if (!hasIndex(index.row(), index.column(), index.parent())) + return; + + m_selectedRow = index.row(); + Q_EMIT dataChanged(this->index(0, 0), this->index(rowCount() - 1, 0), {SelectedRole}); +} + diff --git a/src/Authoring/Studio/Palettes/Slide/SlideModel.h b/src/Authoring/Studio/Palettes/Slide/SlideModel.h index da44c1c7..1de717cd 100644 --- a/src/Authoring/Studio/Palettes/Slide/SlideModel.h +++ b/src/Authoring/Studio/Palettes/Slide/SlideModel.h @@ -75,6 +75,7 @@ public: int toRow); void refreshSlideLabel(qt3dsdm::Qt3DSDMInstanceHandle instanceHandle, qt3dsdm::Qt3DSDMPropertyHandle propertyHandle); + void setSelectedSlideIndex(const QModelIndex &index); private: bool hasSlideWithName(const QString &name) const; diff --git a/src/Authoring/Studio/Palettes/Slide/SlideView.cpp b/src/Authoring/Studio/Palettes/Slide/SlideView.cpp index 62dbc732..5ffea440 100644 --- a/src/Authoring/Studio/Palettes/Slide/SlideView.cpp +++ b/src/Authoring/Studio/Palettes/Slide/SlideView.cpp @@ -223,8 +223,17 @@ void SlideView::OnActiveSlide(const qt3dsdm::Qt3DSDMSlideHandle &inMaster, int i Q_UNUSED(inMaster); qt3dsdm::ISlideSystem &theSlideSystem(*GetDoc()->GetStudioSystem()->GetSlideSystem()); - setShowMasterSlide(theSlideSystem.GetSlideIndex(inSlide) == 0); + int currentSlideIndex = theSlideSystem.GetSlideIndex(inSlide); + setShowMasterSlide(currentSlideIndex == 0); setActiveSlide(inSlide); + + // During playback update slide highlight + if (GetDoc()->IsPlaying()) { + // -1 because first slide is masterslide + auto index = m_SlidesModel->index(currentSlideIndex - 1, 0); + m_SlidesModel->setSelectedSlideIndex(index); + } + } void SlideView::OnNewSlide(const qt3dsdm::Qt3DSDMSlideHandle &inSlide) |