ClangPchManager: Add reindex button in settings

After you have changed some settings you maybe want to reindex.

Change-Id: I415f1597e6566fe45e5e25bccd359493921278c3
Reviewed-by: Tim Jenssen <tim.jenssen@qt.io>
This commit is contained in:
Marco Bubke
2019-05-20 13:42:47 +02:00
parent 4bae5de36b
commit 72050643fb
4 changed files with 80 additions and 11 deletions

View File

@@ -29,15 +29,23 @@
#include <cpptools/cppmodelmanager.h>
#include <projectexplorer/project.h>
#include "pchmanagerprojectupdater.h"
#include "preprocessormacrocollector.h"
#include "preprocessormacrowidget.h"
#include "qtcreatorprojectupdater.h"
namespace ClangPchManager {
ClangIndexingProjectSettingsWidget::ClangIndexingProjectSettingsWidget(ClangIndexingProjectSettings *settings)
ClangIndexingProjectSettingsWidget::ClangIndexingProjectSettingsWidget(
ClangIndexingProjectSettings *settings,
ProjectExplorer::Project *project,
QtCreatorProjectUpdater<PchManagerProjectUpdater> &projectUpdater)
: ui(new Ui::ClangIndexingProjectSettingsWidget)
, m_project(project)
, m_projectUpdater(projectUpdater)
{
ui->setupUi(this);
ui->preprocessorMacrosWidget->setSettings(settings);
connect(ui->reindexButton, &QPushButton::clicked, this, &ClangIndexingProjectSettingsWidget::reindex);
}
ClangIndexingProjectSettingsWidget::~ClangIndexingProjectSettingsWidget()
@@ -58,4 +66,9 @@ void ClangIndexingProjectSettingsWidget::onProjectPartsUpdated(ProjectExplorer::
ui->preprocessorMacrosWidget->setBasePreprocessorMacros(collector.macros());
}
void ClangIndexingProjectSettingsWidget::reindex()
{
m_projectUpdater.projectPartsUpdated(m_project);
}
} // namespace ClangPchManager

View File

@@ -37,6 +37,10 @@ class ClangIndexingProjectSettingsWidget;
namespace ClangPchManager {
template<typename T>
class QtCreatorProjectUpdater;
class PchManagerProjectUpdater;
class ClangIndexingProjectSettings;
class ClangIndexingProjectSettingsWidget : public QWidget
@@ -44,13 +48,19 @@ class ClangIndexingProjectSettingsWidget : public QWidget
Q_OBJECT
public:
explicit ClangIndexingProjectSettingsWidget(ClangIndexingProjectSettings *settings);
explicit ClangIndexingProjectSettingsWidget(
ClangIndexingProjectSettings *settings,
ProjectExplorer::Project *project,
QtCreatorProjectUpdater<PchManagerProjectUpdater> &projectUpdater);
~ClangIndexingProjectSettingsWidget();
void onProjectPartsUpdated(ProjectExplorer::Project *project);
void reindex();
private:
Ui::ClangIndexingProjectSettingsWidget *ui;
ProjectExplorer::Project *m_project;
QtCreatorProjectUpdater<PchManagerProjectUpdater> &m_projectUpdater;
};
} // namespace ClangPchManager

View File

@@ -15,7 +15,50 @@
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="ClangPchManager::PreprocessorMacroWidget" name="preprocessorMacrosWidget" native="true"/>
<layout class="QHBoxLayout" name="horizontalLayout">
<property name="sizeConstraint">
<enum>QLayout::SetDefaultConstraint</enum>
</property>
<item>
<widget class="QPushButton" name="reindexButton">
<property name="sizePolicy">
<sizepolicy hsizetype="Minimum" vsizetype="Fixed">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
<property name="text">
<string>Reindex</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeType">
<enum>QSizePolicy::Expanding</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</item>
<item>
<widget class="ClangPchManager::PreprocessorMacroWidget" name="preprocessorMacrosWidget" native="true">
<property name="sizePolicy">
<sizepolicy hsizetype="Preferred" vsizetype="Expanding">
<horstretch>0</horstretch>
<verstretch>0</verstretch>
</sizepolicy>
</property>
</widget>
</item>
</layout>
</widget>

View File

@@ -62,13 +62,16 @@ QString backendProcessPath()
+ QStringLiteral(QTC_HOST_EXE_SUFFIX);
}
void addIndexingProjectPaneWidget(ClangIndexingSettingsManager &settingsManager)
void addIndexingProjectPaneWidget(ClangIndexingSettingsManager &settingsManager,
QtCreatorProjectUpdater<PchManagerProjectUpdater> &projectUpdater)
{
auto factory = new ProjectExplorer::ProjectPanelFactory;
factory->setPriority(120);
factory->setDisplayName(ClangIndexingProjectSettingsWidget::tr("Clang Indexing"));
factory->setCreateWidgetFunction([&](ProjectExplorer::Project *project) {
auto widget = new ClangIndexingProjectSettingsWidget(settingsManager.settings(project));
auto widget = new ClangIndexingProjectSettingsWidget(settingsManager.settings(project),
project,
projectUpdater);
widget->onProjectPartsUpdated(project);
@@ -108,11 +111,11 @@ public:
PchManagerClient pchManagerClient{pchCreationProgressManager, dependencyCreationProgressManager};
PchManagerConnectionClient connectionClient{&pchManagerClient};
ClangIndexingSettingsManager settingsManager;
QtCreatorProjectUpdater<PchManagerProjectUpdater> projectUpdate{connectionClient.serverProxy(),
pchManagerClient,
filePathCache,
projectPartsStorage,
settingsManager};
QtCreatorProjectUpdater<PchManagerProjectUpdater> projectUpdater{connectionClient.serverProxy(),
pchManagerClient,
filePathCache,
projectPartsStorage,
settingsManager};
};
std::unique_ptr<ClangPchManagerPluginData> ClangPchManagerPlugin::d;
@@ -128,7 +131,7 @@ bool ClangPchManagerPlugin::initialize(const QStringList & /*arguments*/, QStrin
startBackend();
addIndexingProjectPaneWidget(d->settingsManager);
addIndexingProjectPaneWidget(d->settingsManager, d->projectUpdater);
return true;
}