/***************************************************************************
- * Copyright (C) 2005-2014 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 *
#include <QComboBox>
#include <QDialogButtonBox>
#include <QGridLayout>
+#include <QIcon>
#include <QLabel>
#include <QLineEdit>
#include <QInputDialog>
#include "buffermodel.h"
#include "buffersettings.h"
-#include "iconloader.h"
#include "clientidentity.h"
#include "network.h"
#include "util.h"
}
-Action *NetworkModelController::registerAction(ActionType type, const QPixmap &icon, const QString &text, bool checkable)
+Action *NetworkModelController::registerAction(ActionType type, const QIcon &icon, const QString &text, bool checkable)
{
Action *act;
if (icon.isNull())
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;
{
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;
filter |= Message::Topic;
switch (type) {
+ case HideJoinPartQuit:
case HideJoin:
case HidePart:
case HideQuit:
return;
case HideApplyToAll:
BufferSettings().setMessageFilter(filter);
+ [[clang::fallthrough]];
case HideUseDefaults:
if (_messageFilter)
BufferSettings(_messageFilter->idString()).removeFilter();
if (networkId.isValid())
emit showChannelList(networkId);
break;
+ case ShowNetworkConfig:
+ if (networkId.isValid())
+ emit showNetworkConfig(networkId);
+ break;
case ShowIgnoreList:
if (networkId.isValid())
emit showIgnoreList(QString());
NetworkModelController::JoinDlg::JoinDlg(const QModelIndex &index, QWidget *parent) : QDialog(parent)
{
- setWindowIcon(SmallIcon("irc-join-channel"));
+ setWindowIcon(QIcon::fromTheme("irc-join-channel"));
setWindowTitle(tr("Join Channel"));
QGridLayout *layout = new QGridLayout(this);