feat: Allow negation of search predicates (#4207)

Co-authored-by: Rasmus Karlsson <rasmus.karlsson@pajlada.com>
closes https://github.com/Chatterino/chatterino2/issues/3998
This commit is contained in:
kornes
2022-12-04 11:34:13 +00:00
committed by GitHub
parent 4fa214a38a
commit b7888749fe
19 changed files with 139 additions and 111 deletions
+19 -21
View File
@@ -4,35 +4,33 @@
namespace chatterino {
BadgePredicate::BadgePredicate(const QStringList &badges)
BadgePredicate::BadgePredicate(const QString &badges, bool negate)
: MessagePredicate(negate)
{
// Check if any comma-seperated values were passed and transform those
for (const auto &entry : badges)
for (const auto &badge : badges.split(',', Qt::SkipEmptyParts))
{
for (const auto &badge : entry.split(',', Qt::SkipEmptyParts))
// convert short form name of certain badges to formal name
if (badge.compare("mod", Qt::CaseInsensitive) == 0)
{
// convert short form name of certain badges to formal name
if (badge.compare("mod", Qt::CaseInsensitive) == 0)
{
this->badges_ << "moderator";
}
else if (badge.compare("sub", Qt::CaseInsensitive) == 0)
{
this->badges_ << "subscriber";
}
else if (badge.compare("prime", Qt::CaseInsensitive) == 0)
{
this->badges_ << "premium";
}
else
{
this->badges_ << badge;
}
this->badges_ << "moderator";
}
else if (badge.compare("sub", Qt::CaseInsensitive) == 0)
{
this->badges_ << "subscriber";
}
else if (badge.compare("prime", Qt::CaseInsensitive) == 0)
{
this->badges_ << "premium";
}
else
{
this->badges_ << badge;
}
}
}
bool BadgePredicate::appliesTo(const Message &message)
bool BadgePredicate::appliesToImpl(const Message &message)
{
for (const Badge &badge : message.badges)
{