diff options
Diffstat (limited to 'Swift/Controllers/Highlighter.cpp')
-rw-r--r-- | Swift/Controllers/Highlighter.cpp | 36 |
1 files changed, 19 insertions, 17 deletions
diff --git a/Swift/Controllers/Highlighter.cpp b/Swift/Controllers/Highlighter.cpp index 13ee951..cea077e 100644 --- a/Swift/Controllers/Highlighter.cpp +++ b/Swift/Controllers/Highlighter.cpp @@ -5,45 +5,47 @@ */ /* - * Copyright (c) 2014 Isode Limited. + * Copyright (c) 2014-2016 Isode Limited. * All rights reserved. * See the COPYING file for more information. */ -#include <Swiften/Base/foreach.h> #include <Swift/Controllers/Highlighter.h> + #include <Swift/Controllers/HighlightManager.h> namespace Swift { Highlighter::Highlighter(HighlightManager* manager) - : manager_(manager) + : manager_(manager) { - setMode(ChatMode); + setMode(ChatMode); } void Highlighter::setMode(Mode mode) { - mode_ = mode; - messageType_ = mode_ == ChatMode ? HighlightRule::ChatMessage : HighlightRule::MUCMessage; + mode_ = mode; + messageType_ = mode_ == ChatMode ? HighlightRule::ChatMessage : HighlightRule::MUCMessage; } -HighlightAction Highlighter::findAction(const std::string& body, const std::string& sender) const +HighlightAction Highlighter::findFirstFullMessageMatchAction(const std::string& body, const std::string& sender) const { - HighlightRulesListPtr rules = manager_->getRules(); - for (size_t i = 0; i < rules->getSize(); ++i) { - const HighlightRule& rule = rules->getRule(i); - if (rule.isMatch(body, sender, nick_, messageType_)) { - return rule.getAction(); - } - } - - return HighlightAction(); + HighlightAction match; + HighlightRulesListPtr rules = manager_->getRules(); + for (size_t i = 0; i < rules->getSize(); ++i) { + const HighlightRule& rule = rules->getRule(i); + if (rule.isMatch(body, sender, nick_, messageType_) && rule.getAction().highlightWholeMessage()) { + match = rule.getAction(); + break; + } + } + + return match; } void Highlighter::handleHighlightAction(const HighlightAction& action) { - manager_->onHighlight(action); + manager_->onHighlight(action); } } |