aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2018-02-01 10:25:07 +0100
committerThomas Hartmann <thomas.hartmann@qt.io>2018-02-02 11:01:49 +0000
commit99da7ef2b3c782f486d420b1229862e0c3b5bcd0 (patch)
treec3b6c0c05834cd64905b703cfc6416de0e09eed3
parentbc15b474878494e2b31c90d46856c3cf50690a7e (diff)
Add project tab to navigator
This makes navigation the project a lot easier and the layout of the side bars can be locked. Change-Id: I3ad7b85cb8704aedf8f5ec9ea9b2930c5a0986d1 Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
-rw-r--r--src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp49
-rw-r--r--src/plugins/qmldesigner/designmodewidget.cpp38
-rw-r--r--src/plugins/qmldesigner/designmodewidget.h2
-rw-r--r--src/plugins/qmldesigner/qmldesignerplugin.cpp5
-rw-r--r--src/plugins/qmldesigner/qmldesignerplugin.h2
5 files changed, 80 insertions, 16 deletions
diff --git a/src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp b/src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp
index 6926f7a9b3..ef96d0c161 100644
--- a/src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp
+++ b/src/plugins/qmldesigner/components/navigator/navigatorwidget.cpp
@@ -25,19 +25,23 @@
#include "navigatorwidget.h"
#include "navigatorview.h"
-#include "qmldesignerconstants.h"
-#include "qmldesignericons.h"
+
#include <designersettings.h>
+#include <qmldesignerconstants.h>
+#include <qmldesignericons.h>
+#include <qmldesignerplugin.h>
#include <theme.h>
-#include <QBoxLayout>
-#include <QToolButton>
#include <QAbstractItemModel>
-#include <QMenu>
+#include <QBoxLayout>
#include <QHeaderView>
-#include <QtDebug>
+#include <QMenu>
+#include <QStackedWidget>
+#include <QToolButton>
+
#include <utils/fileutils.h>
#include <utils/utilsicons.h>
+#include <utils/qtcassert.h>
namespace QmlDesigner {
@@ -54,18 +58,43 @@ NavigatorWidget::NavigatorWidget(NavigatorView *view) :
m_treeView->setDefaultDropAction(Qt::LinkAction);
m_treeView->setHeaderHidden(true);
- QVBoxLayout *layout = new QVBoxLayout;
+ auto layout = new QVBoxLayout;
layout->setSpacing(0);
layout->setMargin(0);
- layout->addWidget(m_treeView);
+ auto tabBar = new QTabBar(this);
+ tabBar->addTab(tr("Navigator"));
+ tabBar->addTab(tr("Project"));
+ tabBar->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed);
+
+ QWidget *spacer = new QWidget(this);
+ spacer->setObjectName(QStringLiteral("itemLibrarySearchInputSpacer"));
+ spacer->setFixedHeight(4);
+
+ layout->addWidget(tabBar);
+ layout->addWidget(spacer);
+
+ auto stackedWidget = new QStackedWidget(this);
+ stackedWidget->addWidget(m_treeView);
+
+#ifndef QMLDESIGNER_TEST
+ auto projectManager = QmlDesignerPlugin::instance()->createProjectExplorerWidget(this);
+
+ QTC_ASSERT(projectManager, ;);
+ if (projectManager)
+ stackedWidget->addWidget(projectManager);
+#endif
+
+ connect(tabBar, &QTabBar::currentChanged, stackedWidget, &QStackedWidget::setCurrentIndex);
+
+ layout->addWidget(stackedWidget);
setLayout(layout);
setWindowTitle(tr("Navigator", "Title of navigator view"));
#ifndef QMLDESIGNER_TEST
- setStyleSheet(Theme::replaceCssColors(QString::fromUtf8(Utils::FileReader::fetchQrc(QLatin1String(":/qmldesigner/stylesheet.css")))));
- m_treeView->setStyleSheet(Theme::replaceCssColors(QString::fromUtf8(Utils::FileReader::fetchQrc(QLatin1String(":/qmldesigner/scrollbar.css")))));
+ setStyleSheet(Theme::replaceCssColors(QString::fromUtf8(Utils::FileReader::fetchQrc(":/qmldesigner/stylesheet.css"))));
+ m_treeView->setStyleSheet(Theme::replaceCssColors(QString::fromUtf8(Utils::FileReader::fetchQrc(":/qmldesigner/scrollbar.css"))));
#endif
}
diff --git a/src/plugins/qmldesigner/designmodewidget.cpp b/src/plugins/qmldesigner/designmodewidget.cpp
index cdad6b7bd7..867b965bd3 100644
--- a/src/plugins/qmldesigner/designmodewidget.cpp
+++ b/src/plugins/qmldesigner/designmodewidget.cpp
@@ -72,6 +72,12 @@ const char SB_PROJECTS[] = "Projects";
const char SB_FILESYSTEM[] = "FileSystem";
const char SB_OPENDOCUMENTS[] = "OpenDocuments";
+static void hideToolButtons(QList<QToolButton*> &buttons)
+{
+ foreach (QToolButton *button, buttons)
+ button->hide();
+}
+
namespace QmlDesigner {
namespace Internal {
@@ -169,6 +175,32 @@ void DesignModeWidget::toggleRightSidebar()
m_rightSideBar->setVisible(!m_rightSideBar->isVisible());
}
+QWidget *DesignModeWidget::createProjectExplorerWidget(QWidget *parent)
+{
+ QList<Core::INavigationWidgetFactory *> factories =
+ ExtensionSystem::PluginManager::getObjects<Core::INavigationWidgetFactory>();
+
+ Core::NavigationView navigationView;
+ navigationView.widget = nullptr;
+
+ foreach (Core::INavigationWidgetFactory *factory, factories) {
+ if (factory->id() == "Projects") {
+ navigationView = factory->createWidget();
+ hideToolButtons(navigationView.dockToolBarWidgets);
+ }
+ }
+
+ if (navigationView.widget) {
+ QByteArray sheet = Utils::FileReader::fetchQrc(":/qmldesigner/stylesheet.css");
+ sheet += Utils::FileReader::fetchQrc(":/qmldesigner/scrollbar.css");
+ sheet += "QLabel { background-color: #4f4f4f; }";
+ navigationView.widget->setStyleSheet(Theme::replaceCssColors(QString::fromUtf8(sheet)));
+ navigationView.widget->setParent(parent);
+ }
+
+ return navigationView.widget;
+}
+
void DesignModeWidget::readSettings()
{
QSettings *settings = Core::ICore::settings();
@@ -221,12 +253,6 @@ void DesignModeWidget::switchTextOrForm()
m_centralTabWidget->switchTo(viewManager().widget("TextEditor"));
}
-static void hideToolButtons(QList<QToolButton*> &buttons)
-{
- foreach (QToolButton *button, buttons)
- button->hide();
-}
-
void DesignModeWidget::setup()
{
auto &actionManager = viewManager().designerActionManager();
diff --git a/src/plugins/qmldesigner/designmodewidget.h b/src/plugins/qmldesigner/designmodewidget.h
index ce585a381b..f392058b76 100644
--- a/src/plugins/qmldesigner/designmodewidget.h
+++ b/src/plugins/qmldesigner/designmodewidget.h
@@ -85,6 +85,8 @@ public:
void toggleLeftSidebar();
void toggleRightSidebar();
+ static QWidget *createProjectExplorerWidget(QWidget *parent);
+
private: // functions
enum InitializeStatus { NotInitialized, Initializing, Initialized };
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.cpp b/src/plugins/qmldesigner/qmldesignerplugin.cpp
index 8750f19865..30b7a2b199 100644
--- a/src/plugins/qmldesigner/qmldesignerplugin.cpp
+++ b/src/plugins/qmldesigner/qmldesignerplugin.cpp
@@ -455,6 +455,11 @@ Internal::DesignModeWidget *QmlDesignerPlugin::mainWidget() const
return nullptr;
}
+QWidget *QmlDesignerPlugin::createProjectExplorerWidget(QWidget *parent) const
+{
+ return Internal::DesignModeWidget::createProjectExplorerWidget(parent);
+}
+
void QmlDesignerPlugin::switchToTextModeDeferred()
{
QTimer::singleShot(0, this, [] () {
diff --git a/src/plugins/qmldesigner/qmldesignerplugin.h b/src/plugins/qmldesigner/qmldesignerplugin.h
index 1106c7d974..cf4a212fea 100644
--- a/src/plugins/qmldesigner/qmldesignerplugin.h
+++ b/src/plugins/qmldesigner/qmldesignerplugin.h
@@ -82,6 +82,8 @@ public:
DesignDocument *currentDesignDocument() const;
Internal::DesignModeWidget *mainWidget() const;
+ QWidget *createProjectExplorerWidget(QWidget *parent) const;
+
void switchToTextModeDeferred();
void emitCurrentTextEditorChanged(Core::IEditor *editor);