#include <QString>
#include <QRegExp>
+#include <utility>
#include "message.h"
#include "syncableobject.h"
bool isRegEx = false;
bool isCaseSensitive = false;
bool isEnabled = true;
+ bool isInverse = false;
+ QString sender;
QString chanName;
HighlightRule() {}
- HighlightRule(const QString &name_, bool isRegEx_, bool isCaseSensitive_,
- bool isEnabled_, const QString &chanName_)
- : name(name_), isRegEx(isRegEx_), isCaseSensitive(isCaseSensitive_), isEnabled(isEnabled_), chanName(chanName_) {
+ HighlightRule(QString name_, bool isRegEx_, bool isCaseSensitive_, bool isEnabled_, bool isInverse_,
+ QString sender_, QString chanName_)
+ : name(std::move(name_)), isRegEx(isRegEx_), isCaseSensitive(isCaseSensitive_), isEnabled(isEnabled_),
+ isInverse(isInverse_), sender(std::move(sender_)), chanName(std::move(chanName_)) {
}
bool operator!=(const HighlightRule &other)
{
isRegEx != other.isRegEx ||
isCaseSensitive != other.isCaseSensitive ||
isEnabled != other.isEnabled ||
+ isInverse != other.isInverse ||
+ sender != other.sender ||
chanName != other.chanName);
}
};
inline bool isEmpty() const { return _highlightRuleList.isEmpty(); }
inline int count() const { return _highlightRuleList.count(); }
inline void removeAt(int index) { _highlightRuleList.removeAt(index); }
+ inline void clear() { _highlightRuleList.clear(); }
inline HighlightRule &operator[](int i) { return _highlightRuleList[i]; }
inline const HighlightRule &operator[](int i) const { return _highlightRuleList.at(i); }
inline const HighlightRuleList &highlightRuleList() const { return _highlightRuleList; }
+ inline HighlightNickType highlightNick() { return _highlightNick; }
+ inline bool nicksCaseSensitive() { return _nicksCaseSensitive; }
+
//! Check if a message matches the HighlightRule
/** This method checks if a message matches the users highlight rules.
* \param msg The Message that should be checked
*/
- inline bool match(const Message &msg, const QString ¤tNick, const QStringList &identityNicks) { return _match(msg.contents(), msg.sender(), msg.type(), msg.flags(), msg.bufferInfo().bufferName(), currentNick, identityNicks); }
+ bool match(const Message &msg, const QString ¤tNick, const QStringList &identityNicks);
public slots:
virtual QVariantMap initHighlightRuleList() const;
* @param chanName The channel in which the rule should apply
*/
virtual inline void requestAddHighlightRule(const QString &name, bool isRegEx, bool isCaseSensitive, bool isEnabled,
- const QString &chanName)
+ bool isInverse, const QString &sender, const QString &chanName)
{
- REQUEST(ARG(name), ARG(isRegEx), ARG(isCaseSensitive), ARG(isEnabled), ARG(chanName))
+ REQUEST(ARG(name), ARG(isRegEx), ARG(isCaseSensitive), ARG(isEnabled), ARG(isInverse), ARG(sender), ARG(chanName))
}
- virtual void addHighlightRule(const QString &name, bool isRegEx, bool isCaseSensitive,
- bool isEnabled, const QString &chanName);
+ virtual void addHighlightRule(const QString &name, bool isRegEx, bool isCaseSensitive, bool isEnabled,
+ bool isInverse, const QString &sender, const QString &chanName);
virtual inline void requestSetHighlightNick(HighlightNickType highlightNick)
{
bool _match(const QString &msgContents, const QString &msgSender, Message::Type msgType, Message::Flags msgFlags, const QString &bufferName, const QString ¤tNick, const QStringList identityNicks);
signals:
- void ruleAdded(QString name, bool isRegEx, bool isCaseSensitive, bool isEnabled, QString chanName);
+ void ruleAdded(QString name, bool isRegEx, bool isCaseSensitive, bool isEnabled, bool isInverse, QString sender, QString chanName);
private:
HighlightRuleList _highlightRuleList;