diff --git a/src/plugins/qtsupport/profilereader.cpp b/src/plugins/qtsupport/profilereader.cpp index 05242252ca1..292e6e937d7 100644 --- a/src/plugins/qtsupport/profilereader.cpp +++ b/src/plugins/qtsupport/profilereader.cpp @@ -45,34 +45,36 @@ ProMessageHandler::ProMessageHandler(bool verbose, bool exact) : m_verbose(verbose) , m_exact(exact) //: Prefix used for output from the cumulative evaluation of project files. - , m_prefix(tr("[Inexact] ")) + , m_prefix(QCoreApplication::translate("ProMessageHandler", "[Inexact] ")) { - connect(this, &ProMessageHandler::writeMessage, - Core::MessageManager::instance(), &Core::MessageManager::write, Qt::QueuedConnection); } +ProMessageHandler::~ProMessageHandler() +{ + if (!m_messages.isEmpty()) + Core::MessageManager::writeMessages(m_messages); +} + + + void ProMessageHandler::message(int type, const QString &msg, const QString &fileName, int lineNo) { if ((type & CategoryMask) == ErrorMessage && ((type & SourceMask) == SourceParser || m_verbose)) { - QString fmsg = format(fileName, lineNo, msg); - if (m_exact) - emit writeMessage(fmsg, Core::MessageManager::NoModeSwitch); - else - emit writeMessage(m_prefix + fmsg, Core::MessageManager::NoModeSwitch); + appendMessage(format(fileName, lineNo, msg)); } } void ProMessageHandler::fileMessage(int type, const QString &msg) { Q_UNUSED(type) - if (m_verbose) { - if (m_exact) - emit writeMessage(msg, Core::MessageManager::NoModeSwitch); - else - emit writeMessage(m_prefix + msg, Core::MessageManager::NoModeSwitch); - } + if (m_verbose) + appendMessage(msg); } +void ProMessageHandler::appendMessage(const QString &msg) +{ + m_messages << (m_exact ? msg : m_prefix + msg); +} ProFileReader::ProFileReader(QMakeGlobals *option, QMakeVfs *vfs) : QMakeParser(ProFileCacheManager::instance()->cache(), vfs, this) diff --git a/src/plugins/qtsupport/profilereader.h b/src/plugins/qtsupport/profilereader.h index b8556f25ff4..cf7da8c8763 100644 --- a/src/plugins/qtsupport/profilereader.h +++ b/src/plugins/qtsupport/profilereader.h @@ -38,13 +38,11 @@ namespace QtSupport { namespace Internal { class QtSupportPlugin; } -class QTSUPPORT_EXPORT ProMessageHandler : public QObject, public QMakeHandler +class QTSUPPORT_EXPORT ProMessageHandler : public QMakeHandler { - Q_OBJECT - public: ProMessageHandler(bool verbose = true, bool exact = true); - ~ProMessageHandler() override = default; + virtual ~ProMessageHandler(); void aboutToEval(ProFile *, ProFile *, EvalFileType) override {} void doneWithEval(ProFile *) override {} @@ -54,16 +52,16 @@ public: void setVerbose(bool on) { m_verbose = on; } void setExact(bool on) { m_exact = on; } -signals: - void writeMessage(const QString &error, Core::MessageManager::PrintToOutputPaneFlags flag); - private: + void appendMessage(const QString &msg); + bool m_verbose; bool m_exact; QString m_prefix; + QStringList m_messages; }; -class QTSUPPORT_EXPORT ProFileReader : public ProMessageHandler, public QMakeParser, public ProFileEvaluator +class QTSUPPORT_EXPORT ProFileReader : public QObject, public ProMessageHandler, public QMakeParser, public ProFileEvaluator { Q_OBJECT