diff options
author | Mahmoud Badri <mahmoud.badri@qt.io> | 2019-03-08 16:23:03 +0200 |
---|---|---|
committer | Mahmoud Badri <mahmoud.badri@qt.io> | 2019-03-12 13:29:07 +0000 |
commit | 4f6db42ce61e5a712ed196e96e0d90a1780c73fd (patch) | |
tree | ee90500be87525adca7285aad6155bd9bed509c1 /src/Authoring/Studio/MainFrm.cpp | |
parent | 52730ddc3a94acc32cd2b28fc49b45dd5f19e3c5 (diff) |
Implement variants filtering dialog
Implement variants filtering toolbar action, when clicked it shows the
filtering dialog where the user can choose the tags to be used by the
viewer. Also update the 'preview on remote device' icon.
Task-number: QT3DS-3115
Change-Id: I4d93c8cefe94726f1f04aa6fc7e6f9f07fb8a8b2
Reviewed-by: Tomi Korpipää <tomi.korpipaa@qt.io>
Reviewed-by: Miikka Heikkinen <miikka.heikkinen@qt.io>
Diffstat (limited to 'src/Authoring/Studio/MainFrm.cpp')
-rw-r--r-- | src/Authoring/Studio/MainFrm.cpp | 68 |
1 files changed, 66 insertions, 2 deletions
diff --git a/src/Authoring/Studio/MainFrm.cpp b/src/Authoring/Studio/MainFrm.cpp index 0acd00e8..3069304e 100644 --- a/src/Authoring/Studio/MainFrm.cpp +++ b/src/Authoring/Studio/MainFrm.cpp @@ -61,6 +61,7 @@ #include "RowTree.h" #include "WidgetControl.h" #include "SlideView.h" +#include "FilterVariantsDlg.h" #include <QtGui/qevent.h> #include <QtGui/qdesktopservices.h> @@ -91,6 +92,10 @@ CMainFrame::CMainFrame() { m_ui->setupUi(this); + // allow styling this action + m_ui->m_PlaybackToolbar->widgetForAction(m_ui->actionFilterVariants) + ->setObjectName("actionFilterVariants"); + // Register TitilliumWeb as application font in case user doesn't have it already installed QFontDatabase::addApplicationFont(QStringLiteral(":/TitilliumWeb-Light.ttf")); QFontDatabase::addApplicationFont(QStringLiteral(":/TitilliumWeb-Regular.ttf")); @@ -219,8 +224,8 @@ CMainFrame::CMainFrame() m_sceneView.data(), &CSceneView::onToolGroupSelection); // Playback toolbar - connect(m_ui->actionPreview, &QAction::triggered, - this, &CMainFrame::OnPlaybackPreviewRuntime2); + connect(m_ui->actionPreview, &QAction::triggered, this, &CMainFrame::OnPlaybackPreviewRuntime2); + connect(m_ui->actionFilterVariants, &QAction::triggered, this, &CMainFrame::onFilterVariants); connect(m_ui->actionRemote_Preview, &QAction::triggered, this, &CMainFrame::OnPlaybackPreviewRemote); @@ -1040,6 +1045,58 @@ void CMainFrame::OnPlaybackPreviewRuntime2() OnPlaybackPreview(QStringLiteral("q3dsviewer")); } +void CMainFrame::onFilterVariants() +{ + if (m_ui->actionFilterVariants->isChecked()) { + QTimer::singleShot(0, [&] { + QRect actionGeom = m_ui->m_PlaybackToolbar->actionGeometry(m_ui->actionFilterVariants); + if (!m_filterVariantsDlg) { + m_filterVariantsDlg = new FilterVariantsDlg(this, m_ui->actionFilterVariants, + actionGeom.width()); + } + + m_filterVariantsDlg->activateWindow(); + m_filterVariantsDlg->raise(); + m_filterVariantsDlg->move(m_ui->m_PlaybackToolbar->pos() + + QPoint(actionGeom.x(), actionGeom.bottom())); + m_filterVariantsDlg->setFocus(); + m_filterVariantsDlg->show(); + }); + } else { + m_filterVariantsDlg->close(); + } +} + +QString CMainFrame::getVariantsFilterStr() const +{ + if (m_filterVariantsDlg) + return m_filterVariantsDlg->filterStr(); + + return {}; +} + +void CMainFrame::updateActionFilterEnableState() +{ + bool enable = false; + const auto variantsDef = g_StudioApp.GetCore()->getProjectFile().variantsDef(); + const auto keys = variantsDef.keys(); + for (auto &group : keys) { + if (!variantsDef[group].m_tags.isEmpty()) { + enable = true; + break; + } + } + + m_ui->actionFilterVariants->setEnabled(enable); +} + +void CMainFrame::updateActionPreviewVariantsState(bool isFiltered) +{ + m_ui->actionPreview->setIcon(QIcon(isFiltered + ? QStringLiteral(":/images/playplayback-variant.png") + : QStringLiteral(":/images/playback_tools_low-03.png"))); +} + void CMainFrame::OnPlaybackPreviewRemote() { OnPlaybackPreview(QStringLiteral("q3dsviewer"), true); @@ -1927,6 +1984,13 @@ SlideView *CMainFrame::getSlideView() const ->widget()); } +InspectorControlView *CMainFrame::getInspectorView() const +{ + return static_cast<InspectorControlView *>(m_paletteManager + ->GetControl(CPaletteManager::CONTROLTYPE_INSPECTOR) + ->widget()); +} + CRecentItems *CMainFrame::GetRecentItems() { return m_recentItems.data(); |