X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fnetworkmodelcontroller.cpp;h=be1db922a9fd58a04d17fa5b975c6dd9045ba9cb;hp=58db5617ae594edd0e82cb6e64dcbd83cdbe665c;hb=86bd6b1ffb870e65af6d830a2ea16471c348ed5a;hpb=342b6d8a5869e438362914f3848e639ac6c70bbc diff --git a/src/uisupport/networkmodelcontroller.cpp b/src/uisupport/networkmodelcontroller.cpp index 58db5617..be1db922 100644 --- a/src/uisupport/networkmodelcontroller.cpp +++ b/src/uisupport/networkmodelcontroller.cpp @@ -35,6 +35,8 @@ #include "clientidentity.h" #include "network.h" #include "util.h" +#include "clientignorelistmanager.h" +#include "client.h" NetworkModelController::NetworkModelController(QObject *parent) : QObject(parent), @@ -265,11 +267,11 @@ void NetworkModelController::handleHideAction(ActionType type, QAction *action) int filter = 0; if(NetworkModelController::action(HideJoin)->isChecked()) - filter |= Message::Join; + filter |= Message::Join | Message::NetsplitJoin; if(NetworkModelController::action(HidePart)->isChecked()) filter |= Message::Part; if(NetworkModelController::action(HideQuit)->isChecked()) - filter |= Message::Quit; + filter |= Message::Quit | Message::NetsplitQuit; if(NetworkModelController::action(HideNick)->isChecked()) filter |= Message::Nick; if(NetworkModelController::action(HideMode)->isChecked()) @@ -345,14 +347,14 @@ void NetworkModelController::handleGeneralAction(ActionType type, QAction *actio break; case ShowIgnoreList: if(networkId.isValid()) - emit showIgnoreList(networkId); + emit showIgnoreList(QString()); break; default: break; } } -void NetworkModelController::handleNickAction(ActionType type, QAction *) { +void NetworkModelController::handleNickAction(ActionType type, QAction *action) { foreach(QModelIndex index, indexList()) { NetworkId networkId = index.data(NetworkModel::NetworkIdRole).value(); if(!networkId.isValid()) @@ -403,10 +405,55 @@ void NetworkModelController::handleNickAction(ActionType type, QAction *) { Client::userInput(bufferInfo, QString("/KICK %1").arg(nick)); break; case NickSwitchTo: - Client::bufferModel()->switchToBuffer(findQueryBuffer(networkId, nick)); - break; case NickQuery: - Client::userInput(bufferInfo, QString("/QUERY %1").arg(nick)); + Client::bufferModel()->switchToOrStartQuery(networkId, nick); + break; + case NickIgnoreUser: + { + IrcUser *ircUser = qobject_cast(index.data(NetworkModel::IrcUserRole).value()); + if(!ircUser) + break; + Client::ignoreListManager()->requestAddIgnoreListItem(IgnoreListManager::SenderIgnore, + action->property("ignoreRule").toString(), + false, IgnoreListManager::SoftStrictness, + IgnoreListManager::NetworkScope, + ircUser->network()->networkName(), true); + break; + } + case NickIgnoreHost: + { + IrcUser *ircUser = qobject_cast(index.data(NetworkModel::IrcUserRole).value()); + if(!ircUser) + break; + Client::ignoreListManager()->requestAddIgnoreListItem(IgnoreListManager::SenderIgnore, + action->property("ignoreRule").toString(), + false, IgnoreListManager::SoftStrictness, + IgnoreListManager::NetworkScope, + ircUser->network()->networkName(), true); + break; + } + case NickIgnoreDomain: + { + IrcUser *ircUser = qobject_cast(index.data(NetworkModel::IrcUserRole).value()); + if(!ircUser) + break; + Client::ignoreListManager()->requestAddIgnoreListItem(IgnoreListManager::SenderIgnore, + action->property("ignoreRule").toString(), + false, IgnoreListManager::SoftStrictness, + IgnoreListManager::NetworkScope, + ircUser->network()->networkName(), true); + break; + } + case NickIgnoreCustom: + // forward that to mainwin since we can access the settingspage only from there + emit showIgnoreList(action->property("ignoreRule").toString()); + break; + case NickIgnoreToggleEnabled0: + case NickIgnoreToggleEnabled1: + case NickIgnoreToggleEnabled2: + case NickIgnoreToggleEnabled3: + case NickIgnoreToggleEnabled4: + Client::ignoreListManager()->requestToggleIgnoreRule(action->property("ignoreRule").toString()); break; default: qWarning() << "Unhandled nick action";