X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fnetworkmodelcontroller.cpp;h=75e6e8efff848e0df70ec77369aac98766e77e42;hp=ef1a020f483049451bbfa4255e7a402226914f34;hb=846375c0a783fa99c0780a0d701ccb21e0bffd61;hpb=506ac9f9b636ae3baf3f8ec85ac5785cd6abde0d diff --git a/src/uisupport/networkmodelcontroller.cpp b/src/uisupport/networkmodelcontroller.cpp index ef1a020f..75e6e8ef 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), @@ -232,11 +234,14 @@ void NetworkModelController::handleBufferAction(ActionType type, QAction *) { removeBuffers(indexList()); } else { + QList bufferList; // create temp list because model indexes might change foreach(QModelIndex index, indexList()) { BufferInfo bufferInfo = index.data(NetworkModel::BufferInfoRole).value(); - 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())); @@ -262,17 +267,19 @@ 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()) filter |= Message::Mode; if(NetworkModelController::action(HideDayChange)->isChecked()) filter |= Message::DayChange; + if(NetworkModelController::action(HideTopic)->isChecked()) + filter |= Message::Topic; switch(type) { case HideJoin: @@ -281,6 +288,7 @@ void NetworkModelController::handleHideAction(ActionType type, QAction *action) case HideNick: case HideMode: case HideDayChange: + case HideTopic: if(_messageFilter) BufferSettings(_messageFilter->idString()).setMessageFilter(filter); else { @@ -321,15 +329,20 @@ void NetworkModelController::handleGeneralAction(ActionType type, QAction *actio switch(type) { case JoinChannel: { QString channelName = contextItem(); + QString channelPassword; if(channelName.isEmpty()) { JoinDlg dlg(indexList().first()); if(dlg.exec() == QDialog::Accepted) { channelName = dlg.channelName(); networkId = dlg.networkId(); + channelPassword = dlg.channelPassword(); } } if(!channelName.isEmpty()) { - Client::instance()->userInput(BufferInfo::fakeStatusBuffer(networkId), QString("/JOIN %1").arg(channelName)); + if(!channelPassword.isEmpty()) + Client::instance()->userInput(BufferInfo::fakeStatusBuffer(networkId), QString("/JOIN %1 %2").arg(channelName).arg(channelPassword)); + else + Client::instance()->userInput(BufferInfo::fakeStatusBuffer(networkId), QString("/JOIN %1").arg(channelName)); } break; } @@ -339,14 +352,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()) @@ -397,10 +410,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"; @@ -421,12 +479,15 @@ NetworkModelController::JoinDlg::JoinDlg(const QModelIndex &index, QWidget *pare layout->addWidget(networks = new QComboBox, 0, 1); layout->addWidget(new QLabel(tr("Channel:")), 1, 0); layout->addWidget(channel = new QLineEdit, 1, 1); - layout->addWidget(buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel), 2, 0, 1, 2); + layout->addWidget(new QLabel(tr("Password:")), 2, 0); + layout->addWidget(password = new QLineEdit, 2, 1); + layout->addWidget(buttonBox = new QDialogButtonBox(QDialogButtonBox::Ok|QDialogButtonBox::Cancel), 3, 0, 1, 2); setLayout(layout); channel->setFocus(); buttonBox->button(QDialogButtonBox::Ok)->setEnabled(false); networks->setInsertPolicy(QComboBox::InsertAlphabetically); + password->setEchoMode(QLineEdit::Password); connect(buttonBox, SIGNAL(accepted()), SLOT(accept())); connect(buttonBox, SIGNAL(rejected()), SLOT(reject())); @@ -458,6 +519,10 @@ QString NetworkModelController::JoinDlg::channelName() const { return channel->text(); } +QString NetworkModelController::JoinDlg::channelPassword() const { + return password->text(); +} + void NetworkModelController::JoinDlg::on_channel_textChanged(const QString &text) { buttonBox->button(QDialogButtonBox::Ok)->setEnabled(!text.isEmpty()); }