--- 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):