summaryrefslogtreecommitdiff
path: root/src/plugins/qmldesigner/components/navigator
diff options
context:
space:
mode:
authorThomas Hartmann <thomas.hartmann@qt.io>2020-03-09 18:36:28 +0100
committerThomas Hartmann <thomas.hartmann@qt.io>2020-03-10 16:55:52 +0000
commitaf8e1530771c439876c3c9b5924d00a04b7fc1cb (patch)
tree1a8ca964aa30395d1acbb1cfaa8a46f7d4487bec /src/plugins/qmldesigner/components/navigator
parentaac77eecb97d49b91bf063a6da324107ffc71aaa (diff)
downloadqt-creator-af8e1530771c439876c3c9b5924d00a04b7fc1cb.tar.gz
QmlDesigner: Create NavigatorWidget lazily
Change-Id: I12ebee0867de01af77c37ff97ad9bd4772f06b05 Reviewed-by: Aleksei German <aleksei.german@qt.io> Reviewed-by: Thomas Hartmann <thomas.hartmann@qt.io>
Diffstat (limited to 'src/plugins/qmldesigner/components/navigator')
-rw-r--r--src/plugins/qmldesigner/components/navigator/navigatorview.cpp107
-rw-r--r--src/plugins/qmldesigner/components/navigator/navigatorview.h1
2 files changed, 59 insertions, 49 deletions
diff --git a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp
index 8da3cc9bba..7401e5e370 100644
--- a/src/plugins/qmldesigner/components/navigator/navigatorview.cpp
+++ b/src/plugins/qmldesigner/components/navigator/navigatorview.cpp
@@ -72,57 +72,9 @@ namespace QmlDesigner {
NavigatorView::NavigatorView(QObject* parent) :
AbstractView(parent),
- m_blockSelectionChangedSignal(false),
- m_widget(new NavigatorWidget(this)),
- m_treeModel(new NavigatorTreeModel(this))
+ m_blockSelectionChangedSignal(false)
{
-#ifndef QMLDESIGNER_TEST
- auto navigatorContext = new Internal::NavigatorContext(m_widget.data());
- Core::ICore::addContextObject(navigatorContext);
-#endif
- m_treeModel->setView(this);
- m_widget->setTreeModel(m_treeModel.data());
- m_currentModelInterface = m_treeModel;
-
- connect(treeWidget()->selectionModel(), &QItemSelectionModel::selectionChanged, this, &NavigatorView::changeSelection);
-
- connect(m_widget.data(), &NavigatorWidget::leftButtonClicked, this, &NavigatorView::leftButtonClicked);
- connect(m_widget.data(), &NavigatorWidget::rightButtonClicked, this, &NavigatorView::rightButtonClicked);
- connect(m_widget.data(), &NavigatorWidget::downButtonClicked, this, &NavigatorView::downButtonClicked);
- connect(m_widget.data(), &NavigatorWidget::upButtonClicked, this, &NavigatorView::upButtonClicked);
- connect(m_widget.data(), &NavigatorWidget::filterToggled, this, &NavigatorView::filterToggled);
-
-#ifndef QMLDESIGNER_TEST
- auto idDelegate = new NameItemDelegate(this);
- IconCheckboxItemDelegate *showDelegate =
- new IconCheckboxItemDelegate(this,
- Utils::Icons::EYE_OPEN_TOOLBAR.icon(),
- Utils::Icons::EYE_CLOSED_TOOLBAR.icon());
-
- IconCheckboxItemDelegate *exportDelegate =
- new IconCheckboxItemDelegate(this,
- Icons::EXPORT_CHECKED.icon(),
- Icons::EXPORT_UNCHECKED.icon());
-
-#ifdef _LOCK_ITEMS_
- IconCheckboxItemDelegate *lockDelegate =
- new IconCheckboxItemDelegate(this,
- Utils::Icons::LOCKED_TOOLBAR.icon(),
- Utils::Icons::UNLOCKED_TOOLBAR.icon());
-#endif
-
-
- treeWidget()->setItemDelegateForColumn(0, idDelegate);
-#ifdef _LOCK_ITEMS_
- treeWidget()->setItemDelegateForColumn(1,lockDelegate);
- treeWidget()->setItemDelegateForColumn(2,showDelegate);
-#else
- treeWidget()->setItemDelegateForColumn(1, exportDelegate);
- treeWidget()->setItemDelegateForColumn(2, showDelegate);
-#endif
-
-#endif //QMLDESIGNER_TEST
}
NavigatorView::~NavigatorView()
@@ -138,6 +90,9 @@ bool NavigatorView::hasWidget() const
WidgetInfo NavigatorView::widgetInfo()
{
+ if (!m_widget)
+ setupWidget();
+
return createWidgetInfo(m_widget.data(),
new WidgetInfo::ToolBarWidgetDefaultFactory<NavigatorWidget>(m_widget.data()),
QStringLiteral("Navigator"),
@@ -519,4 +474,58 @@ void NavigatorView::reparentAndCatch(NodeAbstractProperty property, const ModelN
}
}
+void NavigatorView::setupWidget()
+{
+ m_widget = new NavigatorWidget(this);
+ m_treeModel = new NavigatorTreeModel(this);
+
+#ifndef QMLDESIGNER_TEST
+ auto navigatorContext = new Internal::NavigatorContext(m_widget.data());
+ Core::ICore::addContextObject(navigatorContext);
+#endif
+
+ m_treeModel->setView(this);
+ m_widget->setTreeModel(m_treeModel.data());
+ m_currentModelInterface = m_treeModel;
+
+ connect(treeWidget()->selectionModel(), &QItemSelectionModel::selectionChanged, this, &NavigatorView::changeSelection);
+
+ connect(m_widget.data(), &NavigatorWidget::leftButtonClicked, this, &NavigatorView::leftButtonClicked);
+ connect(m_widget.data(), &NavigatorWidget::rightButtonClicked, this, &NavigatorView::rightButtonClicked);
+ connect(m_widget.data(), &NavigatorWidget::downButtonClicked, this, &NavigatorView::downButtonClicked);
+ connect(m_widget.data(), &NavigatorWidget::upButtonClicked, this, &NavigatorView::upButtonClicked);
+ connect(m_widget.data(), &NavigatorWidget::filterToggled, this, &NavigatorView::filterToggled);
+
+#ifndef QMLDESIGNER_TEST
+ auto idDelegate = new NameItemDelegate(this);
+ IconCheckboxItemDelegate *showDelegate =
+ new IconCheckboxItemDelegate(this,
+ Utils::Icons::EYE_OPEN_TOOLBAR.icon(),
+ Utils::Icons::EYE_CLOSED_TOOLBAR.icon());
+
+ IconCheckboxItemDelegate *exportDelegate =
+ new IconCheckboxItemDelegate(this,
+ Icons::EXPORT_CHECKED.icon(),
+ Icons::EXPORT_UNCHECKED.icon());
+
+#ifdef _LOCK_ITEMS_
+ IconCheckboxItemDelegate *lockDelegate =
+ new IconCheckboxItemDelegate(this,
+ Utils::Icons::LOCKED_TOOLBAR.icon(),
+ Utils::Icons::UNLOCKED_TOOLBAR.icon());
+#endif
+
+
+ treeWidget()->setItemDelegateForColumn(0, idDelegate);
+#ifdef _LOCK_ITEMS_
+ treeWidget()->setItemDelegateForColumn(1,lockDelegate);
+ treeWidget()->setItemDelegateForColumn(2,showDelegate);
+#else
+ treeWidget()->setItemDelegateForColumn(1, exportDelegate);
+ treeWidget()->setItemDelegateForColumn(2, showDelegate);
+#endif
+
+#endif //QMLDESIGNER_TEST
+}
+
} // namespace QmlDesigner
diff --git a/src/plugins/qmldesigner/components/navigator/navigatorview.h b/src/plugins/qmldesigner/components/navigator/navigatorview.h
index 057e83a74d..852dddc70f 100644
--- a/src/plugins/qmldesigner/components/navigator/navigatorview.h
+++ b/src/plugins/qmldesigner/components/navigator/navigatorview.h
@@ -110,6 +110,7 @@ protected: //functions
bool blockSelectionChangedSignal(bool block);
void expandRecursively(const QModelIndex &index);
void reparentAndCatch(NodeAbstractProperty property, const ModelNode &modelNode);
+ void setupWidget();
private:
bool m_blockSelectionChangedSignal;