Network/IRC/IrcNetworkWidget.py

changeset 6514
f11a703e4664
parent 6048
82ad8ec9548c
child 6587
a04952159050
diff -r e1fcd71fbda3 -r f11a703e4664 Network/IRC/IrcNetworkWidget.py
--- a/Network/IRC/IrcNetworkWidget.py	Fri Sep 28 20:07:25 2018 +0200
+++ b/Network/IRC/IrcNetworkWidget.py	Sat Sep 29 19:32:33 2018 +0200
@@ -167,20 +167,37 @@
         Private slot to toggle the away status.
         """
         if self.__away:
-            self.sendData.emit("AWAY")
-            self.awayButton.setIcon(
-                UI.PixmapCache.getIcon("ircUserPresent.png"))
-            self.__away = False
+            self.handleAwayCommand("")
         else:
             networkName = self.networkCombo.currentText()
             identityName = self.__manager.getNetwork(networkName)\
                 .getIdentityName()
             awayMessage = self.__manager.getIdentity(identityName)\
                 .getAwayMessage()
+            self.handleAwayCommand(awayMessage)
+    
+    @pyqtSlot(str)
+    def handleAwayCommand(self, awayMessage):
+        """
+        Public slot to process an away command.
+        
+        @param awayMessage message to be set for being away
+        @type str
+        """
+        if awayMessage and not self.__away:
+            # set being away
+            # don't send away, if the status is already set
             self.sendData.emit("AWAY :" + awayMessage)
             self.awayButton.setIcon(UI.PixmapCache.getIcon("ircUserAway.png"))
             self.__away = True
-        self.away.emit(self.__away)
+            self.away.emit(self.__away)
+        elif not awayMessage and self.__away:
+            # cancel being away
+            self.sendData.emit("AWAY")
+            self.awayButton.setIcon(
+                UI.PixmapCache.getIcon("ircUserPresent.png"))
+            self.__away = False
+            self.away.emit(self.__away)
     
     @pyqtSlot()
     def on_editButton_clicked(self):

eric ide

mercurial