Added is:<flags> search predicate (#2671)

Co-authored-by: Paweł <zneix@zneix.eu>
Co-authored-by: pajlada <rasmus.karlsson@pajlada.com>
This commit is contained in:
Tal Neoran
2021-05-01 15:21:45 +03:00
committed by GitHub
parent 8b3f301c50
commit 77fa1322de
6 changed files with 103 additions and 0 deletions
@@ -0,0 +1,44 @@
#include "messages/search/MessageFlagsPredicate.hpp"
namespace chatterino {
MessageFlagsPredicate::MessageFlagsPredicate(const QString &flags)
: flags_()
{
// Check if any comma-seperated values were passed and transform those
for (const auto &flag : flags.split(',', QString::SkipEmptyParts))
{
if (flag == "deleted" || flag == "disabled")
{
this->flags_.set(MessageFlag::Disabled);
}
else if (flag == "sub" || flag == "subscription")
{
this->flags_.set(MessageFlag::Subscription);
}
else if (flag == "timeout" || flag == "ban")
{
this->flags_.set(MessageFlag::Timeout);
}
else if (flag == "highlighted")
{
this->flags_.set(MessageFlag::Highlighted);
}
else if (flag == "system")
{
this->flags_.set(MessageFlag::System);
}
}
}
bool MessageFlagsPredicate::appliesTo(const Message &message)
{
// Exclude timeout messages from system flag when timeout flag isn't present
if (this->flags_.has(MessageFlag::System) &&
!this->flags_.has(MessageFlag::Timeout))
return message.flags.hasAny(flags_) &&
!message.flags.has(MessageFlag::Timeout);
return message.flags.hasAny(flags_);
}
} // namespace chatterino