X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Fnetworkmodelcontroller.cpp;h=94dd8d9ac4490500a77da506a943cde2c0cc7bea;hp=e4472380d4d313da870143e72e8dc87dcda49ade;hb=00e1a9c29e792ba4d65dba21b7ba04131bcb13bc;hpb=921e54680da16fcf2adb7a90506875aceb6633a4 diff --git a/src/uisupport/networkmodelcontroller.cpp b/src/uisupport/networkmodelcontroller.cpp index e4472380..94dd8d9a 100644 --- a/src/uisupport/networkmodelcontroller.cpp +++ b/src/uisupport/networkmodelcontroller.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2015 by the Quassel Project * + * Copyright (C) 2005-2018 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -18,6 +18,8 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ +#include "networkmodelcontroller.h" + #include #include #include @@ -28,15 +30,14 @@ #include #include -#include "networkmodelcontroller.h" - #include "buffermodel.h" #include "buffersettings.h" +#include "client.h" #include "clientidentity.h" +#include "clientignorelistmanager.h" +#include "icon.h" #include "network.h" #include "util.h" -#include "clientignorelistmanager.h" -#include "client.h" NetworkModelController::NetworkModelController(QObject *parent) : QObject(parent), @@ -236,12 +237,16 @@ void NetworkModelController::actionTriggered(QAction *action) void NetworkModelController::handleNetworkAction(ActionType type, QAction *) { - if (type == NetworkConnectAll || type == NetworkDisconnectAll) { + if (type == NetworkConnectAllWithDropdown || type == NetworkDisconnectAllWithDropdown || type == NetworkConnectAll || type == NetworkDisconnectAll) { + if (type == NetworkConnectAllWithDropdown && QMessageBox::question(0, tr("Question"), tr("Really Connect to all IRC Networks?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes) == QMessageBox::No) + return; + if (type == NetworkDisconnectAllWithDropdown && QMessageBox::question(0, tr("Question"), tr("Really disconnect from all IRC Networks?"), QMessageBox::Yes | QMessageBox::No, QMessageBox::No) == QMessageBox::No) + return; foreach(NetworkId id, Client::networkIds()) { const Network *net = Client::network(id); - if (type == NetworkConnectAll && net->connectionState() == Network::Disconnected) + if ((type == NetworkConnectAllWithDropdown || type == NetworkConnectAll) && net->connectionState() == Network::Disconnected) net->requestConnect(); - if (type == NetworkDisconnectAll && net->connectionState() != Network::Disconnected) + if ((type == NetworkDisconnectAllWithDropdown || type == NetworkDisconnectAll) && net->connectionState() != Network::Disconnected) net->requestDisconnect(); } return; @@ -307,6 +312,19 @@ void NetworkModelController::handleHideAction(ActionType type, QAction *action) { Q_UNUSED(action) + if (type == HideJoinPartQuit) { + bool anyChecked = NetworkModelController::action(HideJoin)->isChecked(); + anyChecked |= NetworkModelController::action(HidePart)->isChecked(); + anyChecked |= NetworkModelController::action(HideQuit)->isChecked(); + + // If any are checked, uncheck them all. + // If none are checked, check them all. + bool newCheckedState = !anyChecked; + NetworkModelController::action(HideJoin)->setChecked(newCheckedState); + NetworkModelController::action(HidePart)->setChecked(newCheckedState); + NetworkModelController::action(HideQuit)->setChecked(newCheckedState); + } + int filter = 0; if (NetworkModelController::action(HideJoin)->isChecked()) filter |= Message::Join | Message::NetsplitJoin; @@ -324,6 +342,7 @@ void NetworkModelController::handleHideAction(ActionType type, QAction *action) filter |= Message::Topic; switch (type) { + case HideJoinPartQuit: case HideJoin: case HidePart: case HideQuit: @@ -344,6 +363,7 @@ void NetworkModelController::handleHideAction(ActionType type, QAction *action) return; case HideApplyToAll: BufferSettings().setMessageFilter(filter); + // fallthrough case HideUseDefaults: if (_messageFilter) BufferSettings(_messageFilter->idString()).removeFilter(); @@ -392,8 +412,14 @@ void NetworkModelController::handleGeneralAction(ActionType type, QAction *actio break; } case ShowChannelList: + if (networkId.isValid()) { + // Don't immediately list channels, allowing customization of filter first + emit showChannelList(networkId, {}, false); + } + break; + case ShowNetworkConfig: if (networkId.isValid()) - emit showChannelList(networkId); + emit showNetworkConfig(networkId); break; case ShowIgnoreList: if (networkId.isValid()) @@ -526,7 +552,7 @@ void NetworkModelController::handleNickAction(ActionType type, QAction *action) NetworkModelController::JoinDlg::JoinDlg(const QModelIndex &index, QWidget *parent) : QDialog(parent) { - setWindowIcon(QIcon::fromTheme("irc-join-channel")); + setWindowIcon(icon::get("irc-join-channel")); setWindowTitle(tr("Join Channel")); QGridLayout *layout = new QGridLayout(this);