From b0814726d87425ecb8e8c90287a8c19344f06426 Mon Sep 17 00:00:00 2001 From: Klaus Basan Date: Sun, 28 Oct 2018 00:42:27 +0200 Subject: [PATCH] Status message without tabs/CR --- src/blackmisc/statusmessage.cpp | 9 +++++++++ src/blackmisc/statusmessage.h | 12 ++++++++---- src/blackmisc/stringutils.h | 12 ++++++++++++ 3 files changed, 29 insertions(+), 4 deletions(-) diff --git a/src/blackmisc/statusmessage.cpp b/src/blackmisc/statusmessage.cpp index 9e6bbf14f..e03215c43 100644 --- a/src/blackmisc/statusmessage.cpp +++ b/src/blackmisc/statusmessage.cpp @@ -14,6 +14,8 @@ #include "loghandler.h" #include "logmessage.h" #include "comparefunctions.h" +#include "stringutils.h" + #include #include @@ -223,6 +225,13 @@ namespace BlackMisc return this->getSeverity() == SeverityError; } + QString CStatusMessage::getMessageNoLineBreaks() const + { + const QString m = this->getMessage(); + if (!containsLineBreakOrTab(m)) { return m; } // by far most messages will NOT contain tabs/CR + return removeLineBreakAndTab(m); + } + void CStatusMessage::prependMessage(const QString &msg) { if (msg.isEmpty()) { return; } diff --git a/src/blackmisc/statusmessage.h b/src/blackmisc/statusmessage.h index b87480351..022bf38e0 100644 --- a/src/blackmisc/statusmessage.h +++ b/src/blackmisc/statusmessage.h @@ -182,6 +182,7 @@ namespace BlackMisc IndexSeverity, IndexSeverityAsString, IndexMessage, + IndexMessageNoLineBreaks, IndexMessageAsHtml }; @@ -271,6 +272,9 @@ namespace BlackMisc //! Message QString getMessage() const { return this->message(); } + //! Message without line breaks + QString getMessageNoLineBreaks() const; + //! Prepend message void prependMessage(const QString &msg); @@ -336,15 +340,15 @@ namespace BlackMisc //! \copydoc BlackMisc::Mixin::Index::setPropertyByIndex void setPropertyByIndex(const BlackMisc::CPropertyIndex &index, const CVariant &variant); - //! Compare for index + //! \copydoc BlackMisc::Mixin::Index::comparePropertyByIndex int comparePropertyByIndex(const CPropertyIndex &index, const CStatusMessage &compareValue) const; - //! To HTML - QString toHtml() const; - //! \copydoc BlackMisc::Mixin::String::toQString QString convertToQString(bool i18n = false) const; + //! To HTML + QString toHtml() const; + //! Representing icon static const CIcon &convertToIcon(const CStatusMessage &statusMessage); diff --git a/src/blackmisc/stringutils.h b/src/blackmisc/stringutils.h index 6f1526452..881e8ed28 100644 --- a/src/blackmisc/stringutils.h +++ b/src/blackmisc/stringutils.h @@ -44,6 +44,12 @@ namespace BlackMisc return result; } + //! Remove line breaks and tabs + inline QString removeLineBreakAndTab(const QString &s) + { + return removeChars(s, [](QChar c) { return c == '\n' || c == '\t'; }); + } + //! Remove the typical separators such as "-", " " BLACKMISC_EXPORT QString removeDateTimeSeparators(const QString &s); @@ -53,6 +59,12 @@ namespace BlackMisc return std::any_of(s.begin(), s.end(), predicate); } + //! Contains a line break or tab + inline bool containsLineBreakOrTab(const QString &s) + { + return containsChar(s, [](QChar c) { return c == '\n' || c == '\t'; }); + } + //! Index of first character in the string matching the given predicate, or -1 if not found. template int indexOfChar(const QString &s, F predicate) {