diff options
author | Thomas Hartmann <thomas.hartmann@qt.io> | 2020-03-09 18:36:28 +0100 |
---|---|---|
committer | Thomas Hartmann <thomas.hartmann@qt.io> | 2020-03-10 16:55:52 +0000 |
commit | af8e1530771c439876c3c9b5924d00a04b7fc1cb (patch) | |
tree | 1a8ca964aa30395d1acbb1cfaa8a46f7d4487bec /src/plugins/qmldesigner/components/navigator | |
parent | aac77eecb97d49b91bf063a6da324107ffc71aaa (diff) | |
download | qt-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.cpp | 107 | ||||
-rw-r--r-- | src/plugins/qmldesigner/components/navigator/navigatorview.h | 1 |
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; |