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

View File

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

View File

@@ -15,7 +15,50 @@
</property> </property>
<layout class="QVBoxLayout" name="verticalLayout"> <layout class="QVBoxLayout" name="verticalLayout">
<item> <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> </item>
</layout> </layout>
</widget> </widget>

View File

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