From 26fbefb26cd0aa824c1ade51d3fc37bc398f1c1a Mon Sep 17 00:00:00 2001 From: Nikolai Kosjar Date: Fri, 21 Jun 2013 08:42:27 +0200 Subject: [PATCH] CppTools: Allow to force a "Parsing" notification Task-number: QTCREATORBUG-9597 Change-Id: I726a818c7d4af35dcb4863f74b08cd639a189bdd Reviewed-by: Daniel Teske --- src/plugins/cpptools/builtinindexingsupport.cpp | 5 +++-- src/plugins/cpptools/builtinindexingsupport.h | 6 ++++-- src/plugins/cpptools/cppindexingsupport.h | 8 ++++++-- src/plugins/cpptools/cppmodelmanager.cpp | 7 ++++--- src/plugins/cpptools/cppmodelmanager.h | 3 ++- src/plugins/cpptools/cppmodelmanagerinterface.cpp | 14 ++++++++++++++ src/plugins/cpptools/cppmodelmanagerinterface.h | 10 +++++++++- 7 files changed, 42 insertions(+), 11 deletions(-) diff --git a/src/plugins/cpptools/builtinindexingsupport.cpp b/src/plugins/cpptools/builtinindexingsupport.cpp index e2b4ffb8ee8..cefa6894f81 100644 --- a/src/plugins/cpptools/builtinindexingsupport.cpp +++ b/src/plugins/cpptools/builtinindexingsupport.cpp @@ -163,7 +163,8 @@ BuiltinIndexingSupport::BuiltinIndexingSupport() BuiltinIndexingSupport::~BuiltinIndexingSupport() {} -QFuture BuiltinIndexingSupport::refreshSourceFiles(const QStringList &sourceFiles) +QFuture BuiltinIndexingSupport::refreshSourceFiles(const QStringList &sourceFiles, + CppModelManagerInterface::ProgressNotificationMode mode) { CppModelManager *mgr = CppModelManager::instance(); const WorkingCopy workingCopy = mgr->workingCopy(); @@ -189,7 +190,7 @@ QFuture BuiltinIndexingSupport::refreshSourceFiles(const QStringList &sour m_synchronizer.addFuture(result); - if (sourceFiles.count() > 1) { + if (mode == CppModelManagerInterface::ForcedProgressNotification || sourceFiles.count() > 1) { Core::ICore::progressManager()->addTask(result, QCoreApplication::translate("CppTools::Internal::BuiltinIndexingSupport", "Parsing"), QLatin1String(CppTools::Constants::TASK_INDEX)); diff --git a/src/plugins/cpptools/builtinindexingsupport.h b/src/plugins/cpptools/builtinindexingsupport.h index 53b70c40dbc..df4a9c91084 100644 --- a/src/plugins/cpptools/builtinindexingsupport.h +++ b/src/plugins/cpptools/builtinindexingsupport.h @@ -46,8 +46,10 @@ public: BuiltinIndexingSupport(); ~BuiltinIndexingSupport(); - virtual QFuture refreshSourceFiles(const QStringList &sourceFiles); - virtual SymbolSearcher *createSymbolSearcher(SymbolSearcher::Parameters parameters, QSet fileNames); + virtual QFuture refreshSourceFiles(const QStringList &sourceFiles, + CppModelManagerInterface::ProgressNotificationMode mode); + virtual SymbolSearcher *createSymbolSearcher(SymbolSearcher::Parameters parameters, + QSet fileNames); private: QFutureSynchronizer m_synchronizer; diff --git a/src/plugins/cpptools/cppindexingsupport.h b/src/plugins/cpptools/cppindexingsupport.h index d6cf2121fca..c2b91817a39 100644 --- a/src/plugins/cpptools/cppindexingsupport.h +++ b/src/plugins/cpptools/cppindexingsupport.h @@ -32,6 +32,8 @@ #include "cpptools_global.h" +#include "cppmodelmanagerinterface.h" + #include #include @@ -80,8 +82,10 @@ class CPPTOOLS_EXPORT CppIndexingSupport public: virtual ~CppIndexingSupport() = 0; - virtual QFuture refreshSourceFiles(const QStringList &sourceFiles) = 0; - virtual SymbolSearcher *createSymbolSearcher(SymbolSearcher::Parameters parameters, QSet fileNames) = 0; + virtual QFuture refreshSourceFiles(const QStringList &sourceFiles, + CppModelManagerInterface::ProgressNotificationMode mode) = 0; + virtual SymbolSearcher *createSymbolSearcher(SymbolSearcher::Parameters parameters, + QSet fileNames) = 0; }; } // namespace CppTools diff --git a/src/plugins/cpptools/cppmodelmanager.cpp b/src/plugins/cpptools/cppmodelmanager.cpp index 1952cdd70ac..b26bb706e63 100644 --- a/src/plugins/cpptools/cppmodelmanager.cpp +++ b/src/plugins/cpptools/cppmodelmanager.cpp @@ -522,14 +522,15 @@ CppModelManager::WorkingCopy CppModelManager::workingCopy() const return const_cast(this)->buildWorkingCopyList(); } -QFuture CppModelManager::updateSourceFiles(const QStringList &sourceFiles) +QFuture CppModelManager::updateSourceFiles(const QStringList &sourceFiles, + ProgressNotificationMode mode) { if (sourceFiles.isEmpty() || !m_indexerEnabled) return QFuture(); if (m_indexingSupporter) - m_indexingSupporter->refreshSourceFiles(sourceFiles); - return m_internalIndexingSupport->refreshSourceFiles(sourceFiles); + m_indexingSupporter->refreshSourceFiles(sourceFiles, mode); + return m_internalIndexingSupport->refreshSourceFiles(sourceFiles, mode); } QList CppModelManager::projectInfos() const diff --git a/src/plugins/cpptools/cppmodelmanager.h b/src/plugins/cpptools/cppmodelmanager.h index 7691daeab32..8e51b5e373d 100644 --- a/src/plugins/cpptools/cppmodelmanager.h +++ b/src/plugins/cpptools/cppmodelmanager.h @@ -67,7 +67,8 @@ public: static CppModelManager *instance(); - virtual QFuture updateSourceFiles(const QStringList &sourceFiles); + virtual QFuture updateSourceFiles(const QStringList &sourceFiles, + ProgressNotificationMode mode = ReservedProgressNotification); virtual WorkingCopy workingCopy() const; virtual QList projectInfos() const; diff --git a/src/plugins/cpptools/cppmodelmanagerinterface.cpp b/src/plugins/cpptools/cppmodelmanagerinterface.cpp index c6b535d98d9..d3e34ca3202 100644 --- a/src/plugins/cpptools/cppmodelmanagerinterface.cpp +++ b/src/plugins/cpptools/cppmodelmanagerinterface.cpp @@ -35,6 +35,20 @@ #include +/*! + \enum CppTools::CppModelManagerInterface::ProgressNotificationMode + + This enum type specifies whether a progress bar notification should be + shown if more than one file is requested to update via + CppModelManagerInterface::updateSourceFiles(). + + \value ForcedProgressNotification + Notify regardless of the number of files requested for update. + + \value ReservedProgressNotification + Notify only if more than one file is requested for update. +*/ + /*! \enum CppTools::CppModelManagerInterface::QtVersion Allows C++ parser engine to inject headers or change inner settings as diff --git a/src/plugins/cpptools/cppmodelmanagerinterface.h b/src/plugins/cpptools/cppmodelmanagerinterface.h index 4e9adf22471..f9d299b9377 100644 --- a/src/plugins/cpptools/cppmodelmanagerinterface.h +++ b/src/plugins/cpptools/cppmodelmanagerinterface.h @@ -117,6 +117,12 @@ class CPPTOOLS_EXPORT CppModelManagerInterface : public QObject public: + // Documented in source file. + enum ProgressNotificationMode { + ForcedProgressNotification, + ReservedProgressNotification + }; + class CPPTOOLS_EXPORT ProjectInfo { public: @@ -251,8 +257,10 @@ Q_SIGNALS: void projectPartsUpdated(ProjectExplorer::Project *project); public Q_SLOTS: + virtual void updateModifiedSourceFiles() = 0; - virtual QFuture updateSourceFiles(const QStringList &sourceFiles) = 0; + virtual QFuture updateSourceFiles(const QStringList &sourceFiles, + ProgressNotificationMode mode = ReservedProgressNotification) = 0; virtual void GC() = 0; };