aboutsummaryrefslogtreecommitdiffstats
path: root/src/libs
diff options
context:
space:
mode:
authorChristian Kandeler <christian.kandeler@qt.io>2020-04-14 12:18:50 +0200
committerChristian Kandeler <christian.kandeler@qt.io>2020-04-14 13:47:59 +0000
commit70bddbcab42759c3105db6801a918375449b848c (patch)
tree65e5079fb89f3477ba6208a5e3810b2e0372b1e7 /src/libs
parent37b079a19ccda8eb4443214d524798ae080623b2 (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.cpp104
-rw-r--r--src/libs/utils/outputformatter.h21
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