ClangPchManager: Show extra progress for dependency building

Task-number: QTCREATORBUG-21956
Change-Id: Id244c9ef9fc7825489daa143b21fcca78164d8c7
Reviewed-by: Ivan Donchevskii <ivan.donchevskii@qt.io>
This commit is contained in:
Marco Bubke
2019-02-19 20:46:08 +01:00
parent 8c781f7e6a
commit f009dad9ef
12 changed files with 97 additions and 41 deletions

View File

@@ -65,12 +65,19 @@ public:
Sqlite::Database database{Utils::PathString{Core::ICore::userResourcePath() + "/symbol-experimental-v1.db"}, 1000ms};
ClangBackEnd::RefactoringDatabaseInitializer<Sqlite::Database> databaseInitializer{database};
ClangBackEnd::FilePathCaching filePathCache{database};
ClangPchManager::ProgressManager progressManager{
[] (QFutureInterface<void> &promise) {
auto title = QCoreApplication::translate("ClangPchProgressManager", "Creating PCHs", "PCH stands for precompiled header");
Core::ProgressManager::addTask(promise.future(), title, "pch creation", nullptr);
ClangPchManager::ProgressManager pchCreationProgressManager{[](QFutureInterface<void> &promise) {
auto title = QCoreApplication::translate("ClangPchProgressManager",
"Creating PCHs",
"PCH stands for precompiled header");
Core::ProgressManager::addTask(promise.future(), title, "pch creation", nullptr);
}};
PchManagerClient pchManagerClient{progressManager};
ClangPchManager::ProgressManager dependencyCreationProgressManager{
[](QFutureInterface<void> &promise) {
auto title = QCoreApplication::translate("ClangPchProgressManager",
"Creating Dependencies");
Core::ProgressManager::addTask(promise.future(), title, "dependency creation", nullptr);
}};
PchManagerClient pchManagerClient{pchCreationProgressManager, dependencyCreationProgressManager};
PchManagerConnectionClient connectionClient{&pchManagerClient};
QtCreatorProjectUpdater<PchManagerProjectUpdater> projectUpdate{connectionClient.serverProxy(),
pchManagerClient,

View File

@@ -53,7 +53,16 @@ void PchManagerClient::precompiledHeadersUpdated(ClangBackEnd::PrecompiledHeader
void PchManagerClient::progress(ClangBackEnd::ProgressMessage &&message)
{
m_progressManager.setProgress(message.progress, message.total);
switch (message.progressType) {
case ClangBackEnd::ProgressType::PrecompiledHeader:
m_pchCreationProgressManager.setProgress(message.progress, message.total);
break;
case ClangBackEnd::ProgressType::DependencyCreation:
m_dependencyCreationProgressManager.setProgress(message.progress, message.total);
break;
default:
break;
}
}
void PchManagerClient::precompiledHeaderRemoved(const QString &projectPartId)

View File

@@ -42,8 +42,10 @@ class CLANGPCHMANAGER_EXPORT PchManagerClient final : public ClangBackEnd::PchMa
{
friend class PchManagerNotifierInterface;
public:
PchManagerClient(ProgressManagerInterface &progressManager)
: m_progressManager(progressManager)
PchManagerClient(ProgressManagerInterface &pchCreationProgressManager,
ProgressManagerInterface &dependencyCreationProgressManager)
: m_pchCreationProgressManager(pchCreationProgressManager)
, m_dependencyCreationProgressManager(dependencyCreationProgressManager)
{}
void alive() override;
@@ -78,7 +80,8 @@ private:
ClangBackEnd::ProjectPartPchs m_projectPartPchs;
std::vector<PchManagerNotifierInterface*> m_notifiers;
PchManagerConnectionClient *m_connectionClient=nullptr;
ProgressManagerInterface &m_progressManager;
ProgressManagerInterface &m_pchCreationProgressManager;
ProgressManagerInterface &m_dependencyCreationProgressManager;
};
} // namespace ClangPchManager