forked from qt-creator/qt-creator
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>
This commit is contained in:
@@ -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
|
||||
|
@@ -38,10 +38,6 @@ class QTimer;
|
||||
class QToolButton;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
namespace Core {
|
||||
class IContext;
|
||||
}
|
||||
|
||||
namespace Utils {
|
||||
class ProgressIndicator;
|
||||
}
|
||||
|
@@ -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
|
||||
|
@@ -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()};
|
||||
}
|
||||
|
||||
|
||||
|
@@ -140,7 +140,7 @@ OpenEditorsViewFactory::OpenEditorsViewFactory()
|
||||
|
||||
NavigationView OpenEditorsViewFactory::createWidget()
|
||||
{
|
||||
return NavigationView(new OpenEditorsWidget());
|
||||
return {new OpenEditorsWidget, {}};
|
||||
}
|
||||
|
||||
ProxyModel::ProxyModel(QObject *parent) : QAbstractProxyModel(parent)
|
||||
|
@@ -47,8 +47,6 @@ namespace Core {
|
||||
|
||||
struct NavigationView
|
||||
{
|
||||
NavigationView(QWidget *w = nullptr) : widget(w) {}
|
||||
|
||||
QWidget *widget;
|
||||
QList<QToolButton *> dockToolBarWidgets;
|
||||
};
|
||||
|
@@ -361,7 +361,7 @@ Core::NavigationView CppTypeHierarchyFactory::createWidget()
|
||||
{
|
||||
auto w = new CppTypeHierarchyWidget;
|
||||
w->perform();
|
||||
return Core::NavigationView(w);
|
||||
return {w, {}};
|
||||
}
|
||||
|
||||
CppTypeHierarchyModel::CppTypeHierarchyModel(QObject *parent)
|
||||
|
@@ -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
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -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;
|
||||
|
@@ -110,27 +110,17 @@ OutlineWidgetStack::OutlineWidgetStack(OutlineFactory *factory) :
|
||||
updateCurrentEditor();
|
||||
}
|
||||
|
||||
QList<QToolButton *> OutlineWidgetStack::toolButtons()
|
||||
{
|
||||
return {m_filterButton, m_toggleSort, m_toggleSync};
|
||||
}
|
||||
|
||||
OutlineWidgetStack::~OutlineWidgetStack() = default;
|
||||
|
||||
QToolButton *OutlineWidgetStack::toggleSyncButton()
|
||||
{
|
||||
return m_toggleSync;
|
||||
}
|
||||
|
||||
QToolButton *OutlineWidgetStack::filterButton()
|
||||
{
|
||||
return m_filterButton;
|
||||
}
|
||||
|
||||
QToolButton *OutlineWidgetStack::sortButton()
|
||||
{
|
||||
return m_toggleSort;
|
||||
}
|
||||
|
||||
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)
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user