QbsProjectManager: Make more use of base class infrastructure

No need to duplicate the timer. Now BuildSystem::isWaitingForParse()
returns the correct result.

Change-Id: Iab754b2c488c48302039988bd36e51f00e0f1196
Reviewed-by: hjk <hjk@qt.io>
This commit is contained in:
Christian Kandeler
2020-03-12 11:13:35 +01:00
parent 95d41fa23e
commit c679a3ac72
4 changed files with 9 additions and 7 deletions

View File

@@ -142,6 +142,11 @@ void BuildSystem::requestDelayedParse()
requestParseHelper(1000); requestParseHelper(1000);
} }
void BuildSystem::cancelDelayedParseRequest()
{
d->m_delayedParsingTimer.stop();
}
bool BuildSystem::isParsing() const bool BuildSystem::isParsing() const
{ {
return d->m_isParsing; return d->m_isParsing;

View File

@@ -62,6 +62,7 @@ public:
void requestParse(); void requestParse();
void requestDelayedParse(); void requestDelayedParse();
void cancelDelayedParseRequest();
bool isParsing() const; bool isParsing() const;
bool hasParsingData() const; bool hasParsingData() const;

View File

@@ -77,6 +77,7 @@
#include <QJsonArray> #include <QJsonArray>
#include <QMessageBox> #include <QMessageBox>
#include <QSet> #include <QSet>
#include <QTimer>
#include <QVariantMap> #include <QVariantMap>
#include <algorithm> #include <algorithm>
@@ -207,7 +208,6 @@ QbsBuildSystem::QbsBuildSystem(QbsBuildConfiguration *bc)
}); });
connect(m_session, &QbsSession::fileListUpdated, this, &QbsBuildSystem::delayParsing); connect(m_session, &QbsSession::fileListUpdated, this, &QbsBuildSystem::delayParsing);
m_parsingDelay.setInterval(1000); // delay parsing by 1s.
delayParsing(); delayParsing();
connect(bc->project(), &Project::activeTargetChanged, connect(bc->project(), &Project::activeTargetChanged,
@@ -216,8 +216,6 @@ QbsBuildSystem::QbsBuildSystem(QbsBuildConfiguration *bc)
connect(bc->target(), &Target::activeBuildConfigurationChanged, connect(bc->target(), &Target::activeBuildConfigurationChanged,
this, &QbsBuildSystem::delayParsing); this, &QbsBuildSystem::delayParsing);
connect(&m_parsingDelay, &QTimer::timeout, this, &QbsBuildSystem::triggerParsing);
connect(bc->project(), &Project::projectFileIsDirty, this, &QbsBuildSystem::delayParsing); connect(bc->project(), &Project::projectFileIsDirty, this, &QbsBuildSystem::delayParsing);
updateProjectNodes({}); updateProjectNodes({});
} }
@@ -591,7 +589,7 @@ void QbsBuildSystem::triggerParsing()
void QbsBuildSystem::delayParsing() void QbsBuildSystem::delayParsing()
{ {
if (m_buildConfiguration->isActive()) if (m_buildConfiguration->isActive())
m_parsingDelay.start(); requestDelayedParse();
} }
void QbsBuildSystem::parseCurrentBuildConfiguration() void QbsBuildSystem::parseCurrentBuildConfiguration()
@@ -629,7 +627,7 @@ void QbsBuildSystem::parseCurrentBuildConfiguration()
prepareForParsing(); prepareForParsing();
m_parsingDelay.stop(); cancelDelayedParseRequest();
QTC_ASSERT(!m_qbsProjectParser, return); QTC_ASSERT(!m_qbsProjectParser, return);
m_qbsProjectParser = new QbsProjectParser(this, m_qbsUpdateFutureInterface); m_qbsProjectParser = new QbsProjectParser(this, m_qbsUpdateFutureInterface);

View File

@@ -39,7 +39,6 @@
#include <QFutureWatcher> #include <QFutureWatcher>
#include <QHash> #include <QHash>
#include <QJsonObject> #include <QJsonObject>
#include <QTimer>
#include <functional> #include <functional>
@@ -149,7 +148,6 @@ private:
QSet<Core::IDocument *> m_qbsDocuments; QSet<Core::IDocument *> m_qbsDocuments;
QJsonObject m_projectData; // TODO: Perhaps store this in the root project node instead? QJsonObject m_projectData; // TODO: Perhaps store this in the root project node instead?
QTimer m_parsingDelay;
QbsProjectParser *m_qbsProjectParser = nullptr; QbsProjectParser *m_qbsProjectParser = nullptr;
QFutureInterface<bool> *m_qbsUpdateFutureInterface = nullptr; QFutureInterface<bool> *m_qbsUpdateFutureInterface = nullptr;
using TreeCreationWatcher = QFutureWatcher<QbsProjectNode *>; using TreeCreationWatcher = QFutureWatcher<QbsProjectNode *>;