X-Git-Url: https://git.quassel-irc.org/?a=blobdiff_plain;f=src%2Fcommon%2Fhighlightrulemanager.h;h=6fa9c27630ee2ce96248809567f663839103d0e8;hb=899709300734acc2bac01b1d57a1fd8fe2a6d923;hp=02b1a2234c37f4fccedd7924b725fd939b100387;hpb=16f22647e6890d3eb8c3e94f7a0700e12fa29e44;p=quassel.git diff --git a/src/common/highlightrulemanager.h b/src/common/highlightrulemanager.h index 02b1a223..6fa9c276 100644 --- a/src/common/highlightrulemanager.h +++ b/src/common/highlightrulemanager.h @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2016 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -18,11 +18,15 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#ifndef HIGHLIGHTRULELISTMANAGER_H -#define HIGHLIGHTRULELISTMANAGER_H +#pragma once + +#include -#include #include +#include +#include +#include +#include #include "message.h" #include "syncableobject.h" @@ -46,11 +50,14 @@ public: 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) { @@ -58,6 +65,8 @@ public: isRegEx != other.isRegEx || isCaseSensitive != other.isCaseSensitive || isEnabled != other.isEnabled || + isInverse != other.isInverse || + sender != other.sender || chanName != other.chanName); } }; @@ -68,15 +77,19 @@ public: 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; @@ -107,20 +120,20 @@ public slots: * @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) + virtual inline void requestSetHighlightNick(int highlightNick) { REQUEST(ARG(highlightNick)) } - inline void setHighlightNick(HighlightNickType highlightNick) { _highlightNick = highlightNick; } + inline void setHighlightNick(int highlightNick) { _highlightNick = static_cast(highlightNick); } virtual inline void requestSetNicksCaseSensitive(bool nicksCaseSensitive) { @@ -131,16 +144,19 @@ public slots: protected: void setHighlightRuleList(const QList &HighlightRuleList) { _highlightRuleList = HighlightRuleList; } - bool _match(const QString &msgContents, const QString &msgSender, Message::Type msgType, Message::Flags msgFlags, const QString &bufferName, const QString ¤tNick, const QStringList identityNicks); + 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; HighlightNickType _highlightNick = HighlightNickType::CurrentNick; bool _nicksCaseSensitive = false; }; - - -#endif // HIGHLIGHTRULELISTMANAGER_H