X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fnetworkmodelcontroller.cpp;h=111e1c30858b2e965e7d348fbf1fb17dd7e78858;hp=cb882f81b1dd3df5c0ce8f5f02d1c19deafc642f;hb=c0952944e11623170024362f8317aae0cc453a63;hpb=f19fea582ace1d8f3dfe29c1096c48758079e56e diff --git a/src/uisupport/networkmodelcontroller.cpp b/src/uisupport/networkmodelcontroller.cpp index cb882f81..111e1c30 100644 --- a/src/uisupport/networkmodelcontroller.cpp +++ b/src/uisupport/networkmodelcontroller.cpp @@ -153,9 +153,18 @@ void NetworkModelController::removeBuffers(const QModelIndexList &indexList) { if(inactive.count()) { msg = tr("Do you want to delete the following buffer(s) permanently?", 0, inactive.count()); msg += ""; + if(count > 9 && inactive.size() - count != 0) + msg += tr("...and %1 more

").arg(inactive.size() - count); msg += tr("Note: This will delete all related data, including all backlog data, from the core's database and cannot be undone."); if(inactive.count() != indexList.count()) msg += tr("
Active channel buffers cannot be deleted, please part the channel first."); @@ -267,11 +276,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()) @@ -329,15 +338,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; } @@ -366,9 +380,6 @@ void NetworkModelController::handleNickAction(ActionType type, QAction *action) if(!bufferInfo.isValid()) continue; - // the validity of that cast is checked on contextmenu creation, take care - IrcUser *ircUser = qobject_cast(index.data(NetworkModel::IrcUserRole).value()); - switch(type) { case NickWhois: Client::userInput(bufferInfo, QString("/WHOIS %1 %1").arg(nick)); @@ -408,42 +419,55 @@ void NetworkModelController::handleNickAction(ActionType type, QAction *action) 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->text(), + 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->text(), + 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->text(), + 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(ircUser->hostmask()); + emit showIgnoreList(action->property("ignoreRule").toString()); break; case NickIgnoreToggleEnabled0: case NickIgnoreToggleEnabled1: case NickIgnoreToggleEnabled2: case NickIgnoreToggleEnabled3: case NickIgnoreToggleEnabled4: - Client::ignoreListManager()->requestToggleIgnoreRule(action->text()); + Client::ignoreListManager()->requestToggleIgnoreRule(action->property("ignoreRule").toString()); break; default: qWarning() << "Unhandled nick action"; @@ -464,12 +488,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())); @@ -501,6 +528,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()); }