X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fcommon%2Fhighlightrulemanager.cpp;h=deaf42ad122aa490fc8ffb165377d48c96be7edf;hp=3fe3691c8a72da423f7d53dcd7b9da3559c36e53;hb=17c39210b1bce04795046657642de66292518fe6;hpb=932ab289c1482a8069cc320a16aca9216058523a diff --git a/src/common/highlightrulemanager.cpp b/src/common/highlightrulemanager.cpp index 3fe3691c..deaf42ad 100644 --- a/src/common/highlightrulemanager.cpp +++ b/src/common/highlightrulemanager.cpp @@ -25,8 +25,7 @@ #include INIT_SYNCABLE_OBJECT(HighlightRuleManager) -HighlightRuleManager &HighlightRuleManager::operator=(const HighlightRuleManager &other) -{ +HighlightRuleManager &HighlightRuleManager::operator=(const HighlightRuleManager &other) { if (this == &other) return *this; @@ -38,18 +37,28 @@ HighlightRuleManager &HighlightRuleManager::operator=(const HighlightRuleManager } -int HighlightRuleManager::indexOf(const QString &name) const -{ +int HighlightRuleManager::indexOf(int id) const { for (int i = 0; i < _highlightRuleList.count(); i++) { - if (_highlightRuleList[i].name == name) + if (_highlightRuleList[i].id == id) return i; } return -1; } +int HighlightRuleManager::nextId() { + int max = 0; + for (int i = 0; i < _highlightRuleList.count(); i++) { + int id = _highlightRuleList[i].id; + if (id > max) { + max = id; + } + } + return max+1; +} -QVariantMap HighlightRuleManager::initHighlightRuleList() const -{ + +QVariantMap HighlightRuleManager::initHighlightRuleList() const { + QVariantList id; QVariantMap highlightRuleListMap; QStringList name; QVariantList isRegEx; @@ -60,6 +69,7 @@ QVariantMap HighlightRuleManager::initHighlightRuleList() const QStringList channel; for (int i = 0; i < _highlightRuleList.count(); i++) { + id << _highlightRuleList[i].id; name << _highlightRuleList[i].name; isRegEx << _highlightRuleList[i].isRegEx; isCaseSensitive << _highlightRuleList[i].isCaseSensitive; @@ -69,6 +79,7 @@ QVariantMap HighlightRuleManager::initHighlightRuleList() const channel << _highlightRuleList[i].chanName; } + highlightRuleListMap["id"] = id; highlightRuleListMap["name"] = name; highlightRuleListMap["isRegEx"] = isRegEx; highlightRuleListMap["isCaseSensitive"] = isCaseSensitive; @@ -76,14 +87,12 @@ QVariantMap HighlightRuleManager::initHighlightRuleList() const highlightRuleListMap["isInverse"] = isInverse; highlightRuleListMap["sender"] = sender; highlightRuleListMap["channel"] = channel; - highlightRuleListMap["highlightNick"] = _highlightNick; - highlightRuleListMap["nicksCaseSensitive"] = _nicksCaseSensitive; return highlightRuleListMap; } -void HighlightRuleManager::initSetHighlightRuleList(const QVariantMap &highlightRuleList) -{ +void HighlightRuleManager::initSetHighlightRuleList(const QVariantMap &highlightRuleList) { + QVariantList id = highlightRuleList["id"].toList(); QStringList name = highlightRuleList["name"].toStringList(); QVariantList isRegEx = highlightRuleList["isRegEx"].toList(); QVariantList isCaseSensitive = highlightRuleList["isCaseSensitive"].toList(); @@ -92,37 +101,33 @@ void HighlightRuleManager::initSetHighlightRuleList(const QVariantMap &highlight QStringList sender = highlightRuleList["sender"].toStringList(); QStringList channel = highlightRuleList["channel"].toStringList(); - int count = name.count(); - if (count != isRegEx.count() || count != isCaseSensitive.count() || count != isActive.count() || - count != isInverse.count() || count != sender.count() || count != channel.count()) { + int count = id.count(); + if (count != name.count() || count != isRegEx.count() || count != isCaseSensitive.count() || + count != isActive.count() || count != isInverse.count() || count != sender.count() || + count != channel.count()) { qWarning() << "Corrupted HighlightRuleList settings! (Count mismatch)"; return; } _highlightRuleList.clear(); for (int i = 0; i < name.count(); i++) { - _highlightRuleList << HighlightRule(name[i], isRegEx[i].toBool(), isCaseSensitive[i].toBool(), + _highlightRuleList << HighlightRule(id[i].toInt(), name[i], isRegEx[i].toBool(), isCaseSensitive[i].toBool(), isActive[i].toBool(), isInverse[i].toBool(), sender[i], channel[i]); } - - // Make sure the default for _highlightNick is "CurrentNick" if not set - _highlightNick = HighlightNickType( - highlightRuleList.value("highlightNick", HighlightNickType::CurrentNick).toInt()); - - _nicksCaseSensitive = highlightRuleList["nicksCaseSensitive"].toBool(); } -void HighlightRuleManager::addHighlightRule(const QString &name, bool isRegEx, bool isCaseSensitive, bool isActive, - bool isInverse, const QString &sender, const QString &channel) -{ - if (contains(name)) { +void HighlightRuleManager::addHighlightRule(int id, const QString &name, bool isRegEx, bool isCaseSensitive, + bool isActive, bool isInverse, const QString &sender, + const QString &channel) { + if (contains(id)) { return; } - HighlightRule newItem = HighlightRule(name, isRegEx, isCaseSensitive, isActive, isInverse, sender, channel); + HighlightRule newItem = HighlightRule(id, name, isRegEx, isCaseSensitive, isActive, isInverse, sender, channel); _highlightRuleList << newItem; - SYNC(ARG(name), ARG(isRegEx), ARG(isCaseSensitive), ARG(isActive), ARG(isInverse), ARG(sender), ARG(channel)) + SYNC(ARG(id), ARG(name), ARG(isRegEx), ARG(isCaseSensitive), ARG(isActive), ARG(isInverse), ARG(sender), + ARG(channel)) } @@ -132,8 +137,7 @@ bool HighlightRuleManager::match(const QString &msgContents, Message::Flags msgFlags, const QString &bufferName, const QString ¤tNick, - const QStringList identityNicks) -{ + const QStringList identityNicks) { if (!((msgType & (Message::Plain | Message::Notice | Message::Action)) && !(msgFlags & Message::Self))) { return false; } @@ -203,15 +207,13 @@ bool HighlightRuleManager::match(const QString &msgContents, return false; } -void HighlightRuleManager::removeHighlightRule(const QString &highlightRule) -{ +void HighlightRuleManager::removeHighlightRule(int highlightRule) { removeAt(indexOf(highlightRule)); SYNC(ARG(highlightRule)) } -void HighlightRuleManager::toggleHighlightRule(const QString &highlightRule) -{ +void HighlightRuleManager::toggleHighlightRule(int highlightRule) { int idx = indexOf(highlightRule); if (idx == -1) return; @@ -219,7 +221,6 @@ void HighlightRuleManager::toggleHighlightRule(const QString &highlightRule) SYNC(ARG(highlightRule)) } -bool HighlightRuleManager::match(const Message &msg, const QString ¤tNick, const QStringList &identityNicks) -{ +bool HighlightRuleManager::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); }