Network/IRC/IrcNetworkListDialog.py

changeset 2237
baddb671c326
parent 2236
e30d5f978919
child 2238
9977d3081ab6
--- a/Network/IRC/IrcNetworkListDialog.py	Thu Nov 29 20:02:43 2012 +0100
+++ b/Network/IRC/IrcNetworkListDialog.py	Fri Nov 30 20:14:50 2012 +0100
@@ -38,10 +38,13 @@
         for networkName in networkNames:
             topitm = QTreeWidgetItem(self.networksList, [networkName])
             network = self.__manager.getNetwork(networkName)
-            server = network.getServer(network.getServerNames()[0])
+            server = network.getServer()
             identityName = network.getIdentityName()
             if identityName == IrcIdentity.DefaultIdentityName:
                 identityName = IrcIdentity.DefaultIdentityDisplay
+            autoConnect = self.trUtf8("Yes") if network.autoConnect() \
+                          else self.trUtf8("No")
+            
             QTreeWidgetItem(topitm,
                 [self.trUtf8("Identity"), identityName])
             QTreeWidgetItem(topitm,
@@ -49,6 +52,8 @@
                  server.getName(), server.getPort())])
             QTreeWidgetItem(topitm,
                 [self.trUtf8("Channels"), ", ".join(network.getChannelNames())])
+            QTreeWidgetItem(topitm,
+                [self.trUtf8("Auto-Connect"), autoConnect])
             topitm.setExpanded(True)
         self.__resizeColumns()
         
@@ -75,6 +80,12 @@
         
         self.editButton.setEnabled(enable)
         self.deleteButton.setEnabled(enable)
+        self.autoConnectButton.setEnabled(enable)
+        
+        if enable:
+            itm = self.networksList.selectedItems()[0]
+            check = self.__manager.getNetwork(itm.text(0)).autoConnect()
+            self.autoConnectButton.setChecked(check)
     
     @pyqtSlot()
     def on_networksList_itemSelectionChanged(self):
@@ -135,3 +146,53 @@
         Private slot handling the collapse of a top level item.
         """
         self.__resizeColumns()
+    
+    @pyqtSlot(bool)
+    def on_autoConnectButton_clicked(self, checked):
+        """
+        Private slot handling the auto-connect selection.
+        
+        @param checked flag indicating the state of the button (boolean)
+        """
+        itm = self.networksList.selectedItems()[0]
+        if itm.parent() is None:
+            networkName = itm.text(0)
+            if checked:
+                # enable the selected network, disable all others
+                # step 1: update network objects
+                for name in self.__manager.getNetworkNames():
+                    network = self.__manager.getNetwork(networkName)
+                    if name == networkName:
+                        network.setAutoConnect(True)
+                    else:
+                        network.setAutoConnect(False)
+                    self.__manager.networkChanged()
+                
+                # step 2: update list entries
+                for index in range(self.networksList.topLevelItemCount()):
+                    titm = self.networksList.topLevelItem(index)
+                    if titm.text(0) == networkName:
+                        self.__setAutoConnectEntry(titm, True)
+                    else:
+                        self.__setAutoConnectEntry(titm, False)
+            else:
+                # step 1: update network object
+                network = self.__manager.getNetwork(networkName)
+                network.setAutoConnect(False)
+                self.__manager.networkChanged()
+                
+                # step 2: update list entry
+                self.__setAutoConnectEntry(itm, False)
+    
+    def __setAutoConnectEntry(self, itm, on):
+        """
+        Private method to set the auto-connect entry of a network item.
+        
+        @param itm reference to the network item (QTreeWidgetItem)
+        @param on flag indicating the auto-connect state (boolean)
+        """
+        autoConnect = self.trUtf8("Yes") if on else self.trUtf8("No")
+        for index in range(itm.childCount()):
+            citm = itm.child(index)
+            if citm.text(0) == self.trUtf8("Auto-Connect"):
+                citm.setText(1, autoConnect)

eric ide

mercurial