summaryrefslogtreecommitdiffstats
path: root/src/Authoring/Studio/MainFrm.cpp
diff options
context:
space:
mode:
authorMahmoud Badri <mahmoud.badri@qt.io>2019-03-08 16:23:03 +0200
committerMahmoud Badri <mahmoud.badri@qt.io>2019-03-12 13:29:07 +0000
commit4f6db42ce61e5a712ed196e96e0d90a1780c73fd (patch)
treeee90500be87525adca7285aad6155bd9bed509c1 /src/Authoring/Studio/MainFrm.cpp
parent52730ddc3a94acc32cd2b28fc49b45dd5f19e3c5 (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.cpp68
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();