X-Git-Url: https://git.quassel-irc.org/?p=quassel.git;a=blobdiff_plain;f=src%2Fuisupport%2Ftoolbaractionprovider.cpp;h=c65a62dd26931b4e730f95ab9263e57c50cf0b4b;hp=00d5cd114a319ee97ce69e41e66015a1ae9cceaf;hb=45645a28bdc5b6c1052b3e4cebf8cc80832d205a;hpb=f3d6f8088d8be6af9319a99fb8d2fee2837b540a diff --git a/src/uisupport/toolbaractionprovider.cpp b/src/uisupport/toolbaractionprovider.cpp index 00d5cd11..c65a62dd 100644 --- a/src/uisupport/toolbaractionprovider.cpp +++ b/src/uisupport/toolbaractionprovider.cpp @@ -1,5 +1,5 @@ /*************************************************************************** - * Copyright (C) 2005-2014 by the Quassel Project * + * Copyright (C) 2005-2019 by the Quassel Project * * devel@quassel-irc.org * * * * This program is free software; you can redistribute it and/or modify * @@ -18,58 +18,55 @@ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * ***************************************************************************/ -#include +#include "toolbaractionprovider.h" + #include #include -#include "toolbaractionprovider.h" +#include "icon.h" -ToolBarActionProvider::ToolBarActionProvider(QObject *parent) +ToolBarActionProvider::ToolBarActionProvider(QObject* parent) : NetworkModelController(parent) { - registerAction(NetworkConnectAll, QIcon::fromTheme("network-connect"), tr("Connect"))->setToolTip(tr("Connect to IRC")); - registerAction(NetworkDisconnectAll, QIcon::fromTheme("network-disconnect"), tr("Disconnect"))->setToolTip(tr("Disconnect from IRC")); + registerAction(NetworkConnectAllWithDropdown, icon::get("network-connect"), tr("Connect"))->setToolTip(tr("Connect to IRC")); + registerAction(NetworkDisconnectAllWithDropdown, icon::get("network-disconnect"), tr("Disconnect"))->setToolTip(tr("Disconnect from IRC")); + registerAction(NetworkConnectAll, tr("Connect to all")); + registerAction(NetworkDisconnectAll, tr("Disconnect from all")); - registerAction(BufferPart, QIcon::fromTheme("irc-close-channel"), tr("Part"))->setToolTip(tr("Leave currently selected channel")); - registerAction(JoinChannel, QIcon::fromTheme("irc-join-channel"), tr("Join"))->setToolTip(tr("Join a channel")); + registerAction(BufferPart, icon::get("irc-close-channel"), tr("Part"))->setToolTip(tr("Leave currently selected channel")); + registerAction(JoinChannel, icon::get("irc-join-channel"), tr("Join"))->setToolTip(tr("Join a channel")); - registerAction(NickQuery, QIcon::fromTheme("mail-message-new"), tr("Query"))->setToolTip(tr("Start a private conversation")); // fix icon - registerAction(NickWhois, QIcon::fromTheme("im-user"), tr("Whois"))->setToolTip(tr("Request user information")); // fix icon + registerAction(NickQuery, icon::get("mail-message-new"), tr("Query"))->setToolTip(tr("Start a private conversation")); // fix icon + registerAction(NickWhois, icon::get("im-user"), tr("Whois"))->setToolTip(tr("Request user information")); // fix icon - registerAction(NickOp, QIcon::fromTheme("irc-operator"), tr("Op"))->setToolTip(tr("Give operator privileges to user")); - registerAction(NickDeop, QIcon::fromTheme("irc-remove-operator"), tr("Deop"))->setToolTip(tr("Take operator privileges from user")); - registerAction(NickVoice, QIcon::fromTheme("irc-voice"), tr("Voice"))->setToolTip(tr("Give voice to user")); - registerAction(NickDevoice, QIcon::fromTheme("irc-unvoice"), tr("Devoice"))->setToolTip(tr("Take voice from user")); - registerAction(NickKick, QIcon::fromTheme("im-kick-user"), tr("Kick"))->setToolTip(tr("Remove user from channel")); - registerAction(NickBan, QIcon::fromTheme("im-ban-user"), tr("Ban"))->setToolTip(tr("Ban user from channel")); - registerAction(NickKickBan, QIcon::fromTheme("im-ban-kick-user"), tr("Kick/Ban"))->setToolTip(tr("Remove and ban user from channel")); + registerAction(NickOp, icon::get("irc-operator"), tr("Op"))->setToolTip(tr("Give operator privileges to user")); + registerAction(NickDeop, icon::get("irc-remove-operator"), tr("Deop"))->setToolTip(tr("Take operator privileges from user")); + registerAction(NickVoice, icon::get("irc-voice"), tr("Voice"))->setToolTip(tr("Give voice to user")); + registerAction(NickDevoice, icon::get("irc-unvoice"), tr("Devoice"))->setToolTip(tr("Take voice from user")); + registerAction(NickKick, icon::get("im-kick-user"), tr("Kick"))->setToolTip(tr("Remove user from channel")); + registerAction(NickBan, icon::get("im-ban-user"), tr("Ban"))->setToolTip(tr("Ban user from channel")); + registerAction(NickKickBan, icon::get("im-ban-kick-user"), tr("Kick/Ban"))->setToolTip(tr("Remove and ban user from channel")); _networksConnectMenu = new QMenu(); _networksConnectMenu->setSeparatorsCollapsible(false); _networksConnectMenu->addSeparator(); - _networksConnectMenu->addAction(tr("Connect to all")); - action(NetworkConnectAll)->setMenu(_networksConnectMenu); - action(NetworkConnectAll)->setEnabled(false); + _networksConnectMenu->addAction(action(NetworkConnectAll)); + action(NetworkConnectAllWithDropdown)->setMenu(_networksConnectMenu); + action(NetworkConnectAllWithDropdown)->setEnabled(false); _networksDisconnectMenu = new QMenu(); _networksDisconnectMenu->setSeparatorsCollapsible(false); _networksDisconnectMenu->addSeparator(); - _networksDisconnectMenu->addAction(tr("Disconnect from all")); - action(NetworkDisconnectAll)->setMenu(_networksDisconnectMenu); - action(NetworkDisconnectAll)->setEnabled(false); + _networksDisconnectMenu->addAction(action(NetworkDisconnectAll)); + action(NetworkDisconnectAllWithDropdown)->setMenu(_networksDisconnectMenu); + action(NetworkDisconnectAllWithDropdown)->setEnabled(false); - connect(Client::instance(), SIGNAL(networkCreated(NetworkId)), SLOT(networkCreated(NetworkId))); - connect(Client::instance(), SIGNAL(networkRemoved(NetworkId)), SLOT(networkRemoved(NetworkId))); + connect(Client::instance(), &Client::networkCreated, this, &ToolBarActionProvider::networkCreated); + connect(Client::instance(), &Client::networkRemoved, this, &ToolBarActionProvider::networkRemoved); updateStates(); } - -ToolBarActionProvider::~ToolBarActionProvider() -{ -} - - void ToolBarActionProvider::disconnectedFromCore() { _currentBuffer = QModelIndex(); @@ -77,21 +74,19 @@ void ToolBarActionProvider::disconnectedFromCore() NetworkModelController::disconnectedFromCore(); } - void ToolBarActionProvider::updateStates() { - action(BufferPart)->setEnabled(_currentBuffer.isValid() - && _currentBuffer.data(NetworkModel::BufferTypeRole) == BufferInfo::ChannelBuffer - && _currentBuffer.data(NetworkModel::ItemActiveRole).toBool()); + action(BufferPart) + ->setEnabled(_currentBuffer.isValid() && _currentBuffer.data(NetworkModel::BufferTypeRole) == BufferInfo::ChannelBuffer + && _currentBuffer.data(NetworkModel::ItemActiveRole).toBool()); } - -void ToolBarActionProvider::addActions(QToolBar *bar, ToolBarType type) +void ToolBarActionProvider::addActions(QToolBar* bar, ToolBarType type) { switch (type) { case MainToolBar: - bar->addAction(action(NetworkConnectAll)); - bar->addAction(action(NetworkDisconnectAll)); + bar->addAction(action(NetworkConnectAllWithDropdown)); + bar->addAction(action(NetworkDisconnectAllWithDropdown)); bar->addAction(action(JoinChannel)); bar->addAction(action(BufferPart)); break; @@ -112,91 +107,82 @@ void ToolBarActionProvider::addActions(QToolBar *bar, ToolBarType type) } } - -void ToolBarActionProvider::currentBufferChanged(const QModelIndex &index) +void ToolBarActionProvider::onCurrentBufferChanged(const QModelIndex& index) { _currentBuffer = index; updateStates(); } - -void ToolBarActionProvider::nickSelectionChanged(const QModelIndexList &indexList) +void ToolBarActionProvider::onNickSelectionChanged(const QModelIndexList& indexList) { _selectedNicks = indexList; updateStates(); } - // override those to set indexes right -void ToolBarActionProvider::handleNetworkAction(ActionType type, QAction *action) +void ToolBarActionProvider::handleNetworkAction(ActionType type, QAction* action) { setIndexList(_currentBuffer); NetworkModelController::handleNetworkAction(type, action); } - -void ToolBarActionProvider::handleBufferAction(ActionType type, QAction *action) +void ToolBarActionProvider::handleBufferAction(ActionType type, QAction* action) { setIndexList(_currentBuffer); NetworkModelController::handleBufferAction(type, action); } - -void ToolBarActionProvider::handleNickAction(ActionType type, QAction *action) +void ToolBarActionProvider::handleNickAction(ActionType type, QAction* action) { setIndexList(_selectedNicks); NetworkModelController::handleNickAction(type, action); } - -void ToolBarActionProvider::handleGeneralAction(ActionType type, QAction *action) +void ToolBarActionProvider::handleGeneralAction(ActionType type, QAction* action) { setIndexList(_currentBuffer); NetworkModelController::handleGeneralAction(type, action); } - void ToolBarActionProvider::networkCreated(NetworkId id) { - const Network *net = Client::network(id); - Action *act = new Action(net->networkName(), this); + const Network* net = Client::network(id); + Action* act = new Action(net->networkName(), this); _networkActions[id] = act; act->setObjectName(QString("NetworkAction-%1").arg(id.toInt())); act->setData(QVariant::fromValue(id)); - connect(net, SIGNAL(updatedRemotely()), SLOT(networkUpdated())); - connect(act, SIGNAL(triggered()), SLOT(connectOrDisconnectNet())); + connect(net, &Network::updatedRemotely, this, [this]() { networkUpdated(); }); + connect(act, &QAction::triggered, this, &ToolBarActionProvider::connectOrDisconnectNet); networkUpdated(net); } - void ToolBarActionProvider::networkRemoved(NetworkId id) { - Action *act = _networkActions.take(id); + Action* act = _networkActions.take(id); if (act) act->deleteLater(); } - -void ToolBarActionProvider::networkUpdated(const Network *net) +void ToolBarActionProvider::networkUpdated(const Network* net) { if (!net) - net = qobject_cast(sender()); + net = qobject_cast(sender()); if (!net) return; - Action *act = _networkActions.value(net->networkId()); + Action* act = _networkActions.value(net->networkId()); if (!act) return; _networksConnectMenu->removeAction(act); _networksDisconnectMenu->removeAction(act); - QMenu *newMenu = net->connectionState() != Network::Disconnected ? _networksDisconnectMenu : _networksConnectMenu; + QMenu* newMenu = net->connectionState() != Network::Disconnected ? _networksDisconnectMenu : _networksConnectMenu; act->setText(net->networkName()); const int lastidx = newMenu->actions().count() - 2; - QAction *beforeAction = newMenu->actions().at(lastidx); + QAction* beforeAction = newMenu->actions().at(lastidx); for (int i = 0; i < newMenu->actions().count() - 2; i++) { - QAction *action = newMenu->actions().at(i); + QAction* action = newMenu->actions().at(i); if (net->networkName().localeAwareCompare(action->text()) < 0) { beforeAction = action; break; @@ -204,24 +190,24 @@ void ToolBarActionProvider::networkUpdated(const Network *net) } newMenu->insertAction(beforeAction, act); - action(NetworkConnectAll)->setEnabled(_networksConnectMenu->actions().count() > 2); - action(NetworkDisconnectAll)->setEnabled(_networksDisconnectMenu->actions().count() > 2); + action(NetworkConnectAllWithDropdown)->setEnabled(_networksConnectMenu->actions().count() > 2); + action(NetworkDisconnectAllWithDropdown)->setEnabled(_networksDisconnectMenu->actions().count() > 2); action(JoinChannel)->setEnabled(_networksDisconnectMenu->actions().count() > 2); } - void ToolBarActionProvider::connectOrDisconnectNet() { - QAction *act = qobject_cast(sender()); + auto* act = qobject_cast(sender()); if (!act) return; - const Network *net = Client::network(act->data().value()); + const Network* net = Client::network(act->data().value()); if (!net) return; - if (net->connectionState() == Network::Disconnected) net->requestConnect(); - else net->requestDisconnect(); + if (net->connectionState() == Network::Disconnected) + net->requestConnect(); + else + net->requestDisconnect(); } - -//void ToolBarActionProvider:: +// void ToolBarActionProvider::