Add function to "(Dis-)Connect from/to all" in connection dropdown
authorromibi <romibi@bluewin.ch>
Sun, 14 Feb 2016 10:50:44 +0000 (11:50 +0100)
committerManuel Nickschas <sputnick@quassel-irc.org>
Wed, 14 Sep 2016 20:29:37 +0000 (22:29 +0200)
If I'm not mistaken there needs to be one ActionType per different
button layout (with icon/text only)...

src/uisupport/networkmodelcontroller.cpp
src/uisupport/networkmodelcontroller.h
src/uisupport/toolbaractionprovider.cpp

index 6ec88a2..ca00c49 100644 (file)
@@ -236,12 +236,12 @@ 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) {
         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;
index 48b189f..3abc79d 100644 (file)
@@ -45,8 +45,10 @@ public:
         NetworkMask = 0x0f,
         NetworkConnect = 0x01,
         NetworkDisconnect = 0x02,
-        NetworkConnectAll = 0x03,
-        NetworkDisconnectAll = 0x04,
+        NetworkConnectAllWithDropdown = 0x03,
+        NetworkDisconnectAllWithDropdown = 0x04,
+        NetworkConnectAll = 0x05,
+        NetworkDisconnectAll = 0x06,
 
         // Buffer actions
         BufferMask = 0xf0,
index 1adf268..b94e76d 100644 (file)
 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, QIcon::fromTheme("network-connect"), tr("Connect"))->setToolTip(tr("Connect to IRC"));
+    registerAction(NetworkDisconnectAllWithDropdown, QIcon::fromTheme("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"));
@@ -47,16 +49,16 @@ ToolBarActionProvider::ToolBarActionProvider(QObject *parent)
     _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)));
@@ -90,8 +92,8 @@ 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;
@@ -204,8 +206,8 @@ 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);
 }