aboutsummaryrefslogtreecommitdiffstats
path: root/src/plugins
diff options
context:
space:
mode:
authorhjk <hjk@qt.io>2021-05-10 14:06:10 +0200
committerhjk <hjk@qt.io>2021-05-18 08:35:28 +0000
commit11f574fef9eac9ec4ad6417745082afd1afa9614 (patch)
tree811de331d7d994286161fabad0cac3f55207ea21 /src/plugins
parentb504bef7a49164b8938dc705adbf9648b6953af5 (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.cpp5
-rw-r--r--src/plugins/autotest/testnavigationwidget.h4
-rw-r--r--src/plugins/bookmarks/bookmarkmanager.cpp4
-rw-r--r--src/plugins/classview/classviewnavigationwidgetfactory.cpp5
-rw-r--r--src/plugins/coreplugin/editormanager/openeditorsview.cpp2
-rw-r--r--src/plugins/coreplugin/inavigationwidgetfactory.h2
-rw-r--r--src/plugins/cppeditor/cpptypehierarchy.cpp2
-rw-r--r--src/plugins/git/branchview.cpp75
-rw-r--r--src/plugins/git/branchview.h13
-rw-r--r--src/plugins/projectexplorer/projecttreewidget.cpp49
-rw-r--r--src/plugins/projectexplorer/projecttreewidget.h5
-rw-r--r--src/plugins/texteditor/outlinefactory.cpp27
-rw-r--r--src/plugins/texteditor/outlinefactory.h4
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);