diff options
author | hjk <hjk@qt.io> | 2021-05-10 14:06:10 +0200 |
---|---|---|
committer | hjk <hjk@qt.io> | 2021-05-18 08:35:28 +0000 |
commit | 11f574fef9eac9ec4ad6417745082afd1afa9614 (patch) | |
tree | 811de331d7d994286161fabad0cac3f55207ea21 /src/plugins | |
parent | b504bef7a49164b8938dc705adbf9648b6953af5 (diff) |
Core: Unify INavigationWidget creation a bit
Move toolbutton creation/listing closer to the widget.
Change-Id: I0e1342ede40fada1c5c9fb0b11d77852b78cc053
Reviewed-by: Eike Ziller <eike.ziller@qt.io>
Diffstat (limited to 'src/plugins')
-rw-r--r-- | src/plugins/autotest/testnavigationwidget.cpp | 5 | ||||
-rw-r--r-- | src/plugins/autotest/testnavigationwidget.h | 4 | ||||
-rw-r--r-- | src/plugins/bookmarks/bookmarkmanager.cpp | 4 | ||||
-rw-r--r-- | src/plugins/classview/classviewnavigationwidgetfactory.cpp | 5 | ||||
-rw-r--r-- | src/plugins/coreplugin/editormanager/openeditorsview.cpp | 2 | ||||
-rw-r--r-- | src/plugins/coreplugin/inavigationwidgetfactory.h | 2 | ||||
-rw-r--r-- | src/plugins/cppeditor/cpptypehierarchy.cpp | 2 | ||||
-rw-r--r-- | src/plugins/git/branchview.cpp | 75 | ||||
-rw-r--r-- | src/plugins/git/branchview.h | 13 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projecttreewidget.cpp | 49 | ||||
-rw-r--r-- | src/plugins/projectexplorer/projecttreewidget.h | 5 | ||||
-rw-r--r-- | src/plugins/texteditor/outlinefactory.cpp | 27 | ||||
-rw-r--r-- | src/plugins/texteditor/outlinefactory.h | 4 |
13 files changed, 82 insertions, 115 deletions
diff --git a/src/plugins/autotest/testnavigationwidget.cpp b/src/plugins/autotest/testnavigationwidget.cpp index 32505ddaf0..0af3120d68 100644 --- a/src/plugins/autotest/testnavigationwidget.cpp +++ b/src/plugins/autotest/testnavigationwidget.cpp @@ -357,10 +357,7 @@ TestNavigationWidgetFactory::TestNavigationWidgetFactory() Core::NavigationView TestNavigationWidgetFactory::createWidget() { TestNavigationWidget *treeViewWidget = new TestNavigationWidget; - Core::NavigationView view; - view.widget = treeViewWidget; - view.dockToolBarWidgets = treeViewWidget->createToolButtons(); - return view; + return {treeViewWidget, treeViewWidget->createToolButtons()}; } } // namespace Internal diff --git a/src/plugins/autotest/testnavigationwidget.h b/src/plugins/autotest/testnavigationwidget.h index f2fb9caae3..73c45a4509 100644 --- a/src/plugins/autotest/testnavigationwidget.h +++ b/src/plugins/autotest/testnavigationwidget.h @@ -38,10 +38,6 @@ class QTimer; class QToolButton; QT_END_NAMESPACE -namespace Core { -class IContext; -} - namespace Utils { class ProgressIndicator; } diff --git a/src/plugins/bookmarks/bookmarkmanager.cpp b/src/plugins/bookmarks/bookmarkmanager.cpp index 01f76026f8..c07c0a5f11 100644 --- a/src/plugins/bookmarks/bookmarkmanager.cpp +++ b/src/plugins/bookmarks/bookmarkmanager.cpp @@ -812,9 +812,7 @@ BookmarkViewFactory::BookmarkViewFactory(BookmarkManager *bm) NavigationView BookmarkViewFactory::createWidget() { auto view = new BookmarkView(m_manager); - auto navview = NavigationView(view); - navview.dockToolBarWidgets = view->createToolBarWidgets(); - return navview; + return {view, view->createToolBarWidgets()}; } } // namespace Internal diff --git a/src/plugins/classview/classviewnavigationwidgetfactory.cpp b/src/plugins/classview/classviewnavigationwidgetfactory.cpp index 217fedea9a..cc71dda2f7 100644 --- a/src/plugins/classview/classviewnavigationwidgetfactory.cpp +++ b/src/plugins/classview/classviewnavigationwidgetfactory.cpp @@ -57,11 +57,8 @@ NavigationWidgetFactory::NavigationWidgetFactory() Core::NavigationView NavigationWidgetFactory::createWidget() { - Core::NavigationView navigationView; auto widget = new NavigationWidget(); - navigationView.widget = widget; - navigationView.dockToolBarWidgets = widget->createToolButtons(); - return navigationView; + return {widget, widget->createToolButtons()}; } diff --git a/src/plugins/coreplugin/editormanager/openeditorsview.cpp b/src/plugins/coreplugin/editormanager/openeditorsview.cpp index 9d2500d952..e4e4a81c08 100644 --- a/src/plugins/coreplugin/editormanager/openeditorsview.cpp +++ b/src/plugins/coreplugin/editormanager/openeditorsview.cpp @@ -140,7 +140,7 @@ OpenEditorsViewFactory::OpenEditorsViewFactory() NavigationView OpenEditorsViewFactory::createWidget() { - return NavigationView(new OpenEditorsWidget()); + return {new OpenEditorsWidget, {}}; } ProxyModel::ProxyModel(QObject *parent) : QAbstractProxyModel(parent) diff --git a/src/plugins/coreplugin/inavigationwidgetfactory.h b/src/plugins/coreplugin/inavigationwidgetfactory.h index cd918de6f3..5b3b38455e 100644 --- a/src/plugins/coreplugin/inavigationwidgetfactory.h +++ b/src/plugins/coreplugin/inavigationwidgetfactory.h @@ -47,8 +47,6 @@ namespace Core { struct NavigationView { - NavigationView(QWidget *w = nullptr) : widget(w) {} - QWidget *widget; QList<QToolButton *> dockToolBarWidgets; }; diff --git a/src/plugins/cppeditor/cpptypehierarchy.cpp b/src/plugins/cppeditor/cpptypehierarchy.cpp index 4b66ecf6c8..6d1dad9416 100644 --- a/src/plugins/cppeditor/cpptypehierarchy.cpp +++ b/src/plugins/cppeditor/cpptypehierarchy.cpp @@ -361,7 +361,7 @@ Core::NavigationView CppTypeHierarchyFactory::createWidget() { auto w = new CppTypeHierarchyWidget; w->perform(); - return Core::NavigationView(w); + return {w, {}}; } CppTypeHierarchyModel::CppTypeHierarchyModel(QObject *parent) diff --git a/src/plugins/git/branchview.cpp b/src/plugins/git/branchview.cpp index aa4aaea214..04fe69ebed 100644 --- a/src/plugins/git/branchview.cpp +++ b/src/plugins/git/branchview.cpp @@ -75,24 +75,22 @@ protected: } }; -BranchView::BranchView() : - m_includeOldEntriesAction(new QAction(tr("Include Old Entries"), this)), - m_includeTagsAction(new QAction(tr("Include Tags"), this)), - m_addButton(new QToolButton(this)), - m_refreshButton(new QToolButton(this)), - m_repositoryLabel(new Utils::ElidingLabel(this)), - m_branchView(new Utils::NavigationTreeView(this)), - m_model(new BranchModel(GitClient::instance(), this)), - m_filterModel(new BranchFilterModel(this)) +BranchView::BranchView() + : m_includeOldEntriesAction(new QAction(tr("Include Old Entries"), this)) + , m_includeTagsAction(new QAction(tr("Include Tags"), this)) + , m_addAction(new QAction(this)) + , m_refreshAction(new QAction(this)) + , m_repositoryLabel(new Utils::ElidingLabel(this)) + , m_branchView(new Utils::NavigationTreeView(this)) + , m_model(new BranchModel(GitClient::instance(), this)) + , m_filterModel(new BranchFilterModel(this)) { - m_addButton->setIcon(Utils::Icons::PLUS_TOOLBAR.icon()); - m_addButton->setProperty("noArrow", true); - connect(m_addButton, &QToolButton::clicked, this, &BranchView::add); + m_addAction->setIcon(Utils::Icons::PLUS_TOOLBAR.icon()); + connect(m_addAction, &QAction::triggered, this, &BranchView::add); - m_refreshButton->setIcon(Utils::Icons::RELOAD_TOOLBAR.icon()); - m_refreshButton->setToolTip(tr("Refresh")); - m_refreshButton->setProperty("noArrow", true); - connect(m_refreshButton, &QToolButton::clicked, this, &BranchView::refreshCurrentRepository); + m_refreshAction->setIcon(Utils::Icons::RELOAD_TOOLBAR.icon()); + m_refreshAction->setToolTip(tr("Refresh")); + connect(m_refreshAction, &QAction::triggered, this, &BranchView::refreshCurrentRepository); m_branchView->setHeaderHidden(true); setFocus(); @@ -155,12 +153,12 @@ void BranchView::refresh(const QString &repository, bool force) m_repository = repository; if (m_repository.isEmpty()) { m_repositoryLabel->setText(tr("<No repository>")); - m_addButton->setToolTip(tr("Create Git Repository...")); + m_addAction->setToolTip(tr("Create Git Repository...")); m_branchView->setEnabled(false); } else { m_repositoryLabel->setText(QDir::toNativeSeparators(m_repository)); m_repositoryLabel->setToolTip(GitPlugin::msgRepositoryLabel(m_repository)); - m_addButton->setToolTip(tr("Add Branch...")); + m_addAction->setToolTip(tr("Add Branch...")); m_branchView->setEnabled(true); } @@ -183,14 +181,28 @@ void BranchView::showEvent(QShowEvent *) refreshCurrentRepository(); } -QToolButton *BranchView::addButton() const +QList<QToolButton *> BranchView::createToolButtons() { - return m_addButton; -} + auto filter = new QToolButton; + filter->setIcon(Utils::Icons::FILTER.icon()); + filter->setToolTip(tr("Filter")); + filter->setPopupMode(QToolButton::InstantPopup); + filter->setProperty("noArrow", true); -QToolButton *BranchView::refreshButton() const -{ - return m_refreshButton; + auto filterMenu = new QMenu(filter); + filterMenu->addAction(m_includeOldEntriesAction); + filterMenu->addAction(m_includeTagsAction); + filter->setMenu(filterMenu); + + auto addButton = new QToolButton; + addButton->setDefaultAction(m_addAction); + addButton->setProperty("noArrow", true); + + auto refreshButton = new QToolButton; + refreshButton->setDefaultAction(m_refreshAction); + refreshButton->setProperty("noArrow", true); + + return {filter, addButton, refreshButton}; } void BranchView::refreshCurrentRepository() @@ -606,20 +618,7 @@ BranchViewFactory::BranchViewFactory() NavigationView BranchViewFactory::createWidget() { m_view = new BranchView; - Core::NavigationView navigationView(m_view); - - auto filter = new QToolButton; - filter->setIcon(Utils::Icons::FILTER.icon()); - filter->setToolTip(tr("Filter")); - filter->setPopupMode(QToolButton::InstantPopup); - filter->setProperty("noArrow", true); - auto filterMenu = new QMenu(filter); - filterMenu->addAction(m_view->m_includeOldEntriesAction); - filterMenu->addAction(m_view->m_includeTagsAction); - filter->setMenu(filterMenu); - - navigationView.dockToolBarWidgets << filter << m_view->addButton() << m_view->refreshButton(); - return navigationView; + return {m_view, m_view->createToolButtons()}; } BranchView *BranchViewFactory::view() const diff --git a/src/plugins/git/branchview.h b/src/plugins/git/branchview.h index a02bfa2567..85dc700bd9 100644 --- a/src/plugins/git/branchview.h +++ b/src/plugins/git/branchview.h @@ -59,11 +59,7 @@ public: void refresh(const QString &repository, bool force); void refreshCurrentBranch(); - QToolButton *addButton() const; - QToolButton *refreshButton() const; - - QAction *m_includeOldEntriesAction = nullptr; - QAction *m_includeTagsAction = nullptr; + QList<QToolButton *> createToolButtons(); protected: void showEvent(QShowEvent *) override; @@ -89,8 +85,11 @@ private: void reflog(const QModelIndex &idx); void push(); - QToolButton *m_addButton = nullptr; - QToolButton *m_refreshButton = nullptr; + QAction *m_includeOldEntriesAction = nullptr; + QAction *m_includeTagsAction = nullptr; + QAction *m_addAction = nullptr; + QAction *m_refreshAction = nullptr; + Utils::ElidingLabel *m_repositoryLabel = nullptr; Utils::NavigationTreeView *m_branchView = nullptr; BranchModel *m_model = nullptr; diff --git a/src/plugins/projectexplorer/projecttreewidget.cpp b/src/plugins/projectexplorer/projecttreewidget.cpp index 2ee230f58d..149b769c2f 100644 --- a/src/plugins/projectexplorer/projecttreewidget.cpp +++ b/src/plugins/projectexplorer/projecttreewidget.cpp @@ -289,13 +289,12 @@ ProjectTreeWidget::ProjectTreeWidget(QWidget *parent) : QWidget(parent) connect(m_view, &QTreeView::collapsed, m_model, &FlatModel::onCollapsed); - m_toggleSync = new QToolButton(this); + m_toggleSync = new QAction(this); m_toggleSync->setIcon(Icons::LINK_TOOLBAR.icon()); m_toggleSync->setCheckable(true); m_toggleSync->setChecked(autoSynchronization()); m_toggleSync->setToolTip(tr("Synchronize with Editor")); - connect(m_toggleSync, &QAbstractButton::clicked, - this, &ProjectTreeWidget::toggleAutoSynchronization); + connect(m_toggleSync, &QAction::triggered, this, &ProjectTreeWidget::toggleAutoSynchronization); setCurrentItem(ProjectTree::currentNode()); setAutoSynchronization(true); @@ -381,11 +380,6 @@ Node *ProjectTreeWidget::nodeForFile(const FilePath &fileName) return bestNode; } -QToolButton *ProjectTreeWidget::toggleSync() -{ - return m_toggleSync; -} - void ProjectTreeWidget::toggleAutoSynchronization() { setAutoSynchronization(!m_autoSync); @@ -435,6 +429,27 @@ void ProjectTreeWidget::expandAll() m_view->expandAll(); } +QList<QToolButton *> ProjectTreeWidget::createToolButtons() +{ + auto filter = new QToolButton(this); + filter->setIcon(Icons::FILTER.icon()); + filter->setToolTip(tr("Filter Tree")); + filter->setPopupMode(QToolButton::InstantPopup); + filter->setProperty("noArrow", true); + + auto filterMenu = new QMenu(filter); + filterMenu->addAction(m_filterProjectsAction); + filterMenu->addAction(m_filterGeneratedFilesAction); + filterMenu->addAction(m_filterDisabledFilesAction); + filterMenu->addAction(m_trimEmptyDirectoriesAction); + filter->setMenu(filterMenu); + + auto toggleSync = new QToolButton; + toggleSync->setDefaultAction(m_toggleSync); + + return {filter, toggleSync}; +} + void ProjectTreeWidget::editCurrentItem() { m_delayedRename.clear(); @@ -602,24 +617,8 @@ ProjectTreeWidgetFactory::ProjectTreeWidgetFactory() NavigationView ProjectTreeWidgetFactory::createWidget() { - NavigationView n; auto ptw = new ProjectTreeWidget; - n.widget = ptw; - - auto filter = new QToolButton(ptw); - filter->setIcon(Icons::FILTER.icon()); - filter->setToolTip(tr("Filter Tree")); - filter->setPopupMode(QToolButton::InstantPopup); - filter->setProperty("noArrow", true); - auto filterMenu = new QMenu(filter); - filterMenu->addAction(ptw->m_filterProjectsAction); - filterMenu->addAction(ptw->m_filterGeneratedFilesAction); - filterMenu->addAction(ptw->m_filterDisabledFilesAction); - filterMenu->addAction(ptw->m_trimEmptyDirectoriesAction); - filter->setMenu(filterMenu); - - n.dockToolBarWidgets << filter << ptw->toggleSync(); - return n; + return {ptw, ptw->createToolButtons()}; } const bool kProjectFilterDefault = false; diff --git a/src/plugins/projectexplorer/projecttreewidget.h b/src/plugins/projectexplorer/projecttreewidget.h index c9afb44fab..4909d0bbd8 100644 --- a/src/plugins/projectexplorer/projecttreewidget.h +++ b/src/plugins/projectexplorer/projecttreewidget.h @@ -58,7 +58,6 @@ public: bool generatedFilesFilter(); bool disabledFilesFilter(); bool trimEmptyDirectoriesFilter(); - QToolButton *toggleSync(); Node *currentNode(); void sync(ProjectExplorer::Node *node); void showMessage(ProjectExplorer::Node *node, const QString &message); @@ -71,6 +70,8 @@ public: void collapseAll(); void expandAll(); + QList<QToolButton *> createToolButtons(); + private: void setProjectFilter(bool filter); void setGeneratedFilesFilter(bool filter); @@ -96,7 +97,7 @@ private: QAction *m_filterGeneratedFilesAction = nullptr; QAction *m_filterDisabledFilesAction = nullptr; QAction *m_trimEmptyDirectoriesAction = nullptr; - QToolButton *m_toggleSync = nullptr; + QAction *m_toggleSync = nullptr; QString m_modelId; bool m_autoSync = true; diff --git a/src/plugins/texteditor/outlinefactory.cpp b/src/plugins/texteditor/outlinefactory.cpp index 7c7e644b18..421479ab7a 100644 --- a/src/plugins/texteditor/outlinefactory.cpp +++ b/src/plugins/texteditor/outlinefactory.cpp @@ -110,27 +110,17 @@ OutlineWidgetStack::OutlineWidgetStack(OutlineFactory *factory) : updateCurrentEditor(); } -OutlineWidgetStack::~OutlineWidgetStack() = default; - -QToolButton *OutlineWidgetStack::toggleSyncButton() -{ - return m_toggleSync; -} - -QToolButton *OutlineWidgetStack::filterButton() +QList<QToolButton *> OutlineWidgetStack::toolButtons() { - return m_filterButton; + return {m_filterButton, m_toggleSort, m_toggleSync}; } -QToolButton *OutlineWidgetStack::sortButton() -{ - return m_toggleSort; -} +OutlineWidgetStack::~OutlineWidgetStack() = default; void OutlineWidgetStack::saveSettings(QSettings *settings, int position) { const QString baseKey = QStringLiteral("Outline.%1.").arg(position); - settings->setValue(baseKey + QLatin1String("SyncWithEditor"), toggleSyncButton()->isChecked()); + settings->setValue(baseKey + QLatin1String("SyncWithEditor"), m_toggleSync->isChecked()); for (auto iter = m_widgetSettings.constBegin(); iter != m_widgetSettings.constEnd(); ++iter) settings->setValue(baseKey + iter.key(), iter.value()); } @@ -154,7 +144,7 @@ void OutlineWidgetStack::restoreSettings(QSettings *settings, int position) m_widgetSettings.insert(key, settings->value(longKey)); } - toggleSyncButton()->setChecked(syncWithEditor); + m_toggleSync->setChecked(syncWithEditor); if (auto outlineWidget = qobject_cast<IOutlineWidget*>(currentWidget())) outlineWidget->restoreSettings(m_widgetSettings); } @@ -241,13 +231,8 @@ OutlineFactory::OutlineFactory() Core::NavigationView OutlineFactory::createWidget() { - Core::NavigationView n; auto placeHolder = new OutlineWidgetStack(this); - n.widget = placeHolder; - n.dockToolBarWidgets.append(placeHolder->filterButton()); - n.dockToolBarWidgets.append(placeHolder->sortButton()); - n.dockToolBarWidgets.append(placeHolder->toggleSyncButton()); - return n; + return {placeHolder, placeHolder->toolButtons()}; } void OutlineFactory::saveSettings(Utils::QtcSettings *settings, int position, QWidget *widget) diff --git a/src/plugins/texteditor/outlinefactory.h b/src/plugins/texteditor/outlinefactory.h index 0f72bcf6e5..d231b700de 100644 --- a/src/plugins/texteditor/outlinefactory.h +++ b/src/plugins/texteditor/outlinefactory.h @@ -44,9 +44,7 @@ public: OutlineWidgetStack(OutlineFactory *factory); ~OutlineWidgetStack() override; - QToolButton *toggleSyncButton(); - QToolButton *filterButton(); - QToolButton *sortButton(); + QList<QToolButton *> toolButtons(); void saveSettings(QSettings *settings, int position); void restoreSettings(QSettings *settings, int position); |