#include "clientidentity.h"
#include "network.h"
#include "util.h"
+#include "clientignorelistmanager.h"
+#include "client.h"
NetworkModelController::NetworkModelController(QObject *parent)
: QObject(parent),
BufferInfo bufferInfo = index.data(NetworkModel::BufferInfoRole).value<BufferInfo>();
if(!bufferInfo.isValid())
return QString();
- if(!bufferInfo.type() == BufferInfo::QueryBuffer)
+ if(bufferInfo.type() != BufferInfo::QueryBuffer)
return QString();
return bufferInfo.bufferName(); // FIXME this might break with merged queries maybe
removeBuffers(indexList());
} else {
+ QList<BufferInfo> bufferList; // create temp list because model indexes might change
foreach(QModelIndex index, indexList()) {
BufferInfo bufferInfo = index.data(NetworkModel::BufferInfoRole).value<BufferInfo>();
- if(!bufferInfo.isValid())
- continue;
+ if(bufferInfo.isValid())
+ bufferList << bufferInfo;
+ }
+ foreach(BufferInfo bufferInfo, bufferList) {
switch(type) {
case BufferJoin:
Client::userInput(bufferInfo, QString("/JOIN %1").arg(bufferInfo.bufferName()));
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())
filter |= Message::Mode;
if(NetworkModelController::action(HideDayChange)->isChecked())
filter |= Message::DayChange;
+ if(NetworkModelController::action(HideTopic)->isChecked())
+ filter |= Message::Topic;
switch(type) {
case HideJoin:
case HideNick:
case HideMode:
case HideDayChange:
+ case HideTopic:
if(_messageFilter)
BufferSettings(_messageFilter->idString()).setMessageFilter(filter);
else {
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<NetworkId>();
if(!networkId.isValid())
case NickQuery:
Client::userInput(bufferInfo, QString("/QUERY %1").arg(nick));
break;
+ case NickIgnoreUser:
+ {
+ IrcUser *ircUser = qobject_cast<IrcUser *>(index.data(NetworkModel::IrcUserRole).value<QObject *>());
+ 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<IrcUser *>(index.data(NetworkModel::IrcUserRole).value<QObject *>());
+ 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<IrcUser *>(index.data(NetworkModel::IrcUserRole).value<QObject *>());
+ 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";
}