Mercurial > libervia-backend
diff frontends/src/primitivus/chat.py @ 678:a630b94280d5
primitivus: code factorization for user notification
author | souliane <souliane@mailoo.org> |
---|---|
date | Mon, 21 Oct 2013 15:52:28 +0200 |
parents | 6821fc06a324 |
children | f7878ad3c846 |
line wrap: on
line diff
--- a/frontends/src/primitivus/chat.py Fri Oct 18 19:23:03 2013 +0200 +++ b/frontends/src/primitivus/chat.py Mon Oct 21 15:52:28 2013 +0200 @@ -262,60 +262,56 @@ def printMessage(self, from_jid, msg, profile, timestamp=""): assert isinstance(from_jid, JID) try: - jid,nick,mymess = QuickChat.printMessage(self, from_jid, msg, profile, timestamp) + jid, nick, mymess = QuickChat.printMessage(self, from_jid, msg, profile, timestamp) except TypeError: return new_text = ChatText(self, timestamp or None, nick, mymess, msg) if timestamp and self.content: - for idx in range(len(self.content)-1,-1,-1): + for idx in range(len(self.content) - 1, -1, -1): current_text = self.content[idx] if new_text.timestamp < current_text.timestamp and idx > 0: - continue #the new message is older, we need to insert it upper + continue # the new message is older, we need to insert it upper #we discard double messages, to avoid backlog / history conflict - if ((idx and self.content[idx-1].message == msg) or + if ((idx and self.content[idx - 1].message == msg) or (self.content[idx].message == msg) or - (idx<len(self.content)-2 and self.content[idx+1].message)): + (idx < len(self.content) - 2 and self.content[idx + 1].message)): return - self.content.insert(idx+1, new_text) + self.content.insert(idx + 1, new_text) break else: self.content.append(new_text) + self._notify(from_jid, msg) - if self.text_list.get_focus()[1] == len(self.content)-2: - #we don't change focus if user is not at the bottom - #as that mean that he is probably watching discussion history - self.text_list.set_focus(len(self.content)-1) - self.host.redraw() - if not self.host.x_notify.hasFocus(): - if self.type=="one2one": - self.host.x_notify.sendNotification(_("Primitivus: %s is talking to you") % from_jid) - elif self.getUserNick().lower() in msg.lower(): - self.host.x_notify.sendNotification(_("Primitivus: Somebody pinged your name in %s room") % self.target) - - def printInfo(self, msg, type='normal', timestamp=""): + def printInfo(self, msg, type_='normal', timestamp=""): """Print general info @param msg: message to print @type: one of: normal: general info like "toto has joined the room" me: "/me" information like "/me clenches his fist" ==> "toto clenches his fist" """ - #FIXME: duplicated code, this must be refactored _widget = ChatText(self, timestamp or None, None, False, msg, is_info=True) self.content.append(_widget) - if self.text_list.get_focus()[1] == len(self.content)-2: + self._notify(msg=msg) + + def _notify(self, from_jid="somebody", msg=""): + """Notify the user of a new message if primitivus doesn't have the focus. + @param from_jid: contact who wrote to the users + @param msg: the message that has been received + """ + if self.text_list.get_focus()[1] == len(self.content) - 2: #we don't change focus if user is not at the bottom #as that mean that he is probably watching discussion history - self.text_list.set_focus(len(self.content)-1) + self.text_list.set_focus(len(self.content) - 1) self.host.redraw() if not self.host.x_notify.hasFocus(): - if self.type=="one2one": - self.host.x_notify.sendNotification(_("Primitivus: there is a message about you")) + if self.type == "one2one": + self.host.x_notify.sendNotification(_("Primitivus: %s is talking to you") % from_jid) elif self.getUserNick().lower() in msg.lower(): - self.host.x_notify.sendNotification(_("Primitivus: Somebody is talking about you in %s room") % self.target) + self.host.x_notify.sendNotification(_("Primitivus: %s mentioned you in room '%s'") % (from_jid, self.target)) def startGame(self, game_type, referee, players): """Configure the chat window to start a game"""