diff options
Diffstat (limited to 'src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/TimelineToolbar.cpp')
-rw-r--r-- | src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/TimelineToolbar.cpp | 59 |
1 files changed, 37 insertions, 22 deletions
diff --git a/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/TimelineToolbar.cpp b/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/TimelineToolbar.cpp index 05d24fa6..b587cf51 100644 --- a/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/TimelineToolbar.cpp +++ b/src/Authoring/Qt3DStudio/Palettes/TimelineGraphicsView/ui/TimelineToolbar.cpp @@ -46,6 +46,24 @@ #include <QtWidgets/qpushbutton.h> #include <QtWidgets/qshortcut.h> +class TimelineScaleEventfilter : public QObject +{ +public: + TimelineScaleEventfilter(QObject *parent) : QObject(parent) {} + + bool eventFilter(QObject *obj, QEvent *event) override + { + // reset scale upon double clicking the scale slider's head + if (event->type() == QEvent::MouseButtonDblClick) { + static_cast<QSlider *>(obj)->setValue(50); + event->accept(); + return true; + } + + return QObject::eventFilter(obj, event); + } +}; + TimelineToolbar::TimelineToolbar() : QToolBar() { setContentsMargins(0, 0, 0, 0); @@ -85,16 +103,17 @@ TimelineToolbar::TimelineToolbar() : QToolBar() m_scaleSlider = new QSlider(); m_scaleSlider->setOrientation(Qt::Horizontal); m_scaleSlider->setFixedWidth(100); - m_scaleSlider->setMinimum(1); - m_scaleSlider->setMaximum(22); - m_scaleSlider->setValue(2); + m_scaleSlider->setMinimum(0); + m_scaleSlider->setMaximum(100); + m_scaleSlider->setValue(50); + m_scaleSlider->installEventFilter(new TimelineScaleEventfilter(this)); m_timeLabel->setObjectName(QLatin1String("timelineButton")); m_timeLabel->setFlat(true); m_timeLabel->setMinimumWidth(80); m_timeLabel->setToolTip(tr("Go To Time (%1%2T)").arg(ctrlKey).arg(altKey)); - m_diLabel->setText(""); + m_diLabel->clear(); m_diLabel->setMinimumWidth(100); m_diLabel->setAlignment(Qt::AlignCenter); QString styleString = "QLabel { background: transparent; color: " @@ -256,12 +275,12 @@ void TimelineToolbar::onZoomLevelChanged(int scale) void TimelineToolbar::onZoomInButtonClicked() { - m_scaleSlider->setValue(m_scaleSlider->value() + 1); + m_scaleSlider->setValue(m_scaleSlider->value() + 5); } void TimelineToolbar::onZoomOutButtonClicked() { - m_scaleSlider->setValue(m_scaleSlider->value() - 1); + m_scaleSlider->setValue(m_scaleSlider->value() - 5); } void TimelineToolbar::onDiButtonClicked() @@ -283,6 +302,8 @@ bool TimelineToolbar::isVariantsFilterOn() const void TimelineToolbar::updateDataInputStatus() { CDoc *doc = g_StudioApp.GetCore()->GetDoc(); + if (!doc->isValid()) + return; qt3dsdm::Qt3DSDMPropertyHandle ctrldProp; qt3dsdm::Qt3DSDMInstanceHandle timeCtxRoot = doc->GetActiveRootInstance(); CClientDataModelBridge *theClientBridge = doc->GetStudioSystem()->GetClientDataModelBridge(); @@ -391,29 +412,29 @@ void TimelineToolbar::onDataInputChange(int handle, int instance, const QString timeCtxRoot, ctrldPropertyHandle, controlledPropertyVal); auto existingCtrl = qt3dsdm::get<QString>(controlledPropertyVal); - int slideStrPos = existingCtrl.indexOf("@timeline"); + int slideStrPos = existingCtrl.indexOf(QLatin1String("@timeline")); if (slideStrPos != -1) { // find the controlling datainput name and build the string to replace - int ctrStrPos = existingCtrl.lastIndexOf("$", slideStrPos - 2); + int ctrStrPos = existingCtrl.lastIndexOf(QLatin1Char('$'), slideStrPos - 2); QString prevCtrler = existingCtrl.mid(ctrStrPos, slideStrPos - ctrStrPos); existingCtrl.replace(prevCtrler + "@timeline", fullTimeControlStr); } else { if (!existingCtrl.isEmpty() && m_currController.size()) - existingCtrl.append(" "); + existingCtrl.append(QLatin1Char(' ')); existingCtrl.append(fullTimeControlStr); } - if (existingCtrl.endsWith(" ")) + if (existingCtrl.endsWith(QLatin1Char(' '))) existingCtrl.chop(1); - if (existingCtrl.startsWith(" ")) + if (existingCtrl.startsWith(QLatin1Char(' '))) existingCtrl.remove(0, 1); m_diLabel->setText(m_currController); qt3dsdm::SValue fullCtrlPropVal = std::make_shared<qt3dsdm::CDataStr>( Q3DStudio::CString::fromQString(existingCtrl)); - Q3DStudio::SCOPED_DOCUMENT_EDITOR(*doc, QObject::tr("Set Timeline control")) + Q3DStudio::SCOPED_DOCUMENT_EDITOR(*doc, tr("Set Timeline control")) ->SetInstancePropertyValue(timeCtxRoot, ctrldPropertyHandle, fullCtrlPropVal); } @@ -438,18 +459,12 @@ void TimelineToolbar::OnImmediateRefreshInstanceMultiple(qt3dsdm::Qt3DSDMInstanc Q_UNUSED(inInstanceCount) } -// Notify the user about control state change also with timeline dock -// title color change. +// Notify the user about control state change also with timeline dock title color change. void TimelineToolbar::updateTimelineTitleColor(bool controlled) { - QString styleString; - if (controlled) { - styleString = "QDockWidget#timeline { color: " - + QString(CStudioPreferences::dataInputColor().name()) + "; }"; - } else { - styleString = "QDockWidget#timeline { color: " - + QString(CStudioPreferences::textColor().name()) + "; }"; - } + QString styleString = QStringLiteral("QDockWidget#timeline { color: %1; }") + .arg(controlled ? CStudioPreferences::dataInputColor().name() + : CStudioPreferences::textColor().name()); QWidget *timelineDock = parentWidget()->parentWidget()->parentWidget(); timelineDock->setStyleSheet(styleString); |