diff options
author | Christian Kandeler <christian.kandeler@qt.io> | 2020-04-14 12:18:50 +0200 |
---|---|---|
committer | Christian Kandeler <christian.kandeler@qt.io> | 2020-04-14 13:47:59 +0000 |
commit | 70bddbcab42759c3105db6801a918375449b848c (patch) | |
tree | 65e5079fb89f3477ba6208a5e3810b2e0372b1e7 /src/libs | |
parent | 37b079a19ccda8eb4443214d524798ae080623b2 (diff) |
Utils: Dissolve the AggregatingOutputFormatter class
Inheritance is not the right design here (anymore), so we merge the
derived class into the base for now. We will later re-split in a more
sensible manner.
Change-Id: I326e9f02287b3070f47147c771f3fa908d51b7fb
Reviewed-by: hjk <hjk@qt.io>
Diffstat (limited to 'src/libs')
-rw-r--r-- | src/libs/utils/outputformatter.cpp | 104 | ||||
-rw-r--r-- | src/libs/utils/outputformatter.h | 21 |
2 files changed, 43 insertions, 82 deletions
diff --git a/src/libs/utils/outputformatter.cpp b/src/libs/utils/outputformatter.cpp index 938030a87f..452ec5ae06 100644 --- a/src/libs/utils/outputformatter.cpp +++ b/src/libs/utils/outputformatter.cpp @@ -48,6 +48,8 @@ public: AnsiEscapeCodeHandler escapeCodeHandler; QPair<QString, OutputFormat> incompleteLine; optional<QTextCharFormat> formatOverride; + QList<OutputFormatter *> formatters; + OutputFormatter *nextFormatter = nullptr; bool boldFontEnabled = true; bool prependCarriageReturn = false; }; @@ -77,6 +79,14 @@ void OutputFormatter::setPlainTextEdit(QPlainTextEdit *plainText) initFormats(); } +void OutputFormatter::setFormatters(const QList<OutputFormatter *> &formatters) +{ + for (OutputFormatter * const f : formatters) + f->setPlainTextEdit(plainTextEdit()); + d->formatters = formatters; + d->nextFormatter = nullptr; +} + void OutputFormatter::doAppendMessage(const QString &text, OutputFormat format) { const QTextCharFormat charFmt = charFormat(format); @@ -94,8 +104,33 @@ void OutputFormatter::doAppendMessage(const QString &text, OutputFormat format) OutputFormatter::Result OutputFormatter::handleMessage(const QString &text, OutputFormat format) { - Q_UNUSED(text); - Q_UNUSED(format); + if (d->nextFormatter) { + const Result res = d->nextFormatter->handleMessage(text, format); + switch (res.status) { + case Status::Done: + d->nextFormatter = nullptr; + return res; + case Status::InProgress: + return res; + case Status::NotHandled: + QTC_CHECK(false); // TODO: This case will be legal after the merge + d->nextFormatter = nullptr; + return res; + } + } + QTC_CHECK(!d->nextFormatter); + for (OutputFormatter * const formatter : qAsConst(d->formatters)) { + const Result res = formatter->handleMessage(text, format); + switch (res.status) { + case Status::Done: + return res; + case Status::InProgress: + d->nextFormatter = formatter; + return res; + case Status::NotHandled: + break; + } + } return Status::NotHandled; } @@ -233,7 +268,10 @@ void OutputFormatter::dumpIncompleteLine(const QString &line, OutputFormat forma bool OutputFormatter::handleLink(const QString &href) { - Q_UNUSED(href) + for (OutputFormatter * const f : qAsConst(d->formatters)) { + if (f->handleLink(href)) + return true; + } return false; } @@ -310,64 +348,4 @@ void OutputFormatter::appendMessage(const QString &text, OutputFormat format) } } -class AggregatingOutputFormatter::Private -{ -public: - QList<OutputFormatter *> formatters; - OutputFormatter *nextFormatter = nullptr; -}; - -AggregatingOutputFormatter::AggregatingOutputFormatter() : d(new Private) {} -AggregatingOutputFormatter::~AggregatingOutputFormatter() { delete d; } - -void AggregatingOutputFormatter::setFormatters(const QList<OutputFormatter *> &formatters) -{ - for (OutputFormatter * const f : formatters) - f->setPlainTextEdit(plainTextEdit()); - d->formatters = formatters; - d->nextFormatter = nullptr; -} - -OutputFormatter::Result AggregatingOutputFormatter::handleMessage(const QString &text, - OutputFormat format) -{ - if (d->nextFormatter) { - const Result res = d->nextFormatter->handleMessage(text, format); - switch (res.status) { - case Status::Done: - d->nextFormatter = nullptr; - return res; - case Status::InProgress: - return res; - case Status::NotHandled: - QTC_CHECK(false); // TODO: This case will be legal after the merge - d->nextFormatter = nullptr; - return res; - } - } - QTC_CHECK(!d->nextFormatter); - for (OutputFormatter * const formatter : qAsConst(d->formatters)) { - const Result res = formatter->handleMessage(text, format); - switch (res.status) { - case Status::Done: - return res; - case Status::InProgress: - d->nextFormatter = formatter; - return res; - case Status::NotHandled: - break; - } - } - return Status::NotHandled; -} - -bool AggregatingOutputFormatter::handleLink(const QString &href) -{ - for (OutputFormatter * const f : qAsConst(d->formatters)) { - if (f->handleLink(href)) - return true; - } - return false; -} - } // namespace Utils diff --git a/src/libs/utils/outputformatter.h b/src/libs/utils/outputformatter.h index a08ecd6863..d38d573d79 100644 --- a/src/libs/utils/outputformatter.h +++ b/src/libs/utils/outputformatter.h @@ -43,11 +43,8 @@ class FormattedText; namespace Internal { class OutputFormatterPrivate; } -class QTCREATOR_UTILS_EXPORT AggregatingOutputFormatter; - class QTCREATOR_UTILS_EXPORT OutputFormatter : public QObject { - friend class AggregatingOutputFormatter; public: OutputFormatter(); ~OutputFormatter() override; @@ -55,6 +52,8 @@ public: QPlainTextEdit *plainTextEdit() const; void setPlainTextEdit(QPlainTextEdit *plainText); + void setFormatters(const QList<OutputFormatter *> &formatters); + void flush(); void appendMessage(const QString &text, OutputFormat format); @@ -109,20 +108,4 @@ private: Internal::OutputFormatterPrivate *d; }; -class QTCREATOR_UTILS_EXPORT AggregatingOutputFormatter : public OutputFormatter -{ -public: - AggregatingOutputFormatter(); - ~AggregatingOutputFormatter(); - - void setFormatters(const QList<OutputFormatter *> &formatters); - bool handleLink(const QString &href) override; - -private: - Result handleMessage(const QString &text, OutputFormat format) override; - - class Private; - Private * const d; -}; - } // namespace Utils |