From 9456f7fc35538f98414eeac8e11745672317692c Mon Sep 17 00:00:00 2001
From: "louiz@4325f9fc-e183-4c21-96ce-0ab188b42d13"
 <louiz@4325f9fc-e183-4c21-96ce-0ab188b42d13>
Date: Sun, 13 Jun 2010 01:50:28 +0000
Subject: show only what has really changed, in the change-status-messages.
 fixed #1473

---
 src/gui.py  | 25 +++++++++++++++++++++----
 src/user.py |  4 ----
 2 files changed, 21 insertions(+), 8 deletions(-)

(limited to 'src')

diff --git a/src/gui.py b/src/gui.py
index da70c1df..685bcb97 100644
--- a/src/gui.py
+++ b/src/gui.py
@@ -388,12 +388,29 @@ class Gui(object):
                         self.add_message_to_room(room, _('%s has left the room') % (from_nick))
                 # status change
                 else:
-                    user.update(affiliation, show, status, role)
                     hide_status_change = config.get('hide_status_change', -1) if config.get('hide_status_change', -1) >= -1 else -1
-                    if hide_status_change == -1 or \
+                    if (hide_status_change == -1 or \
                             user.has_talked_since(hide_status_change) or\
-                            user.nick == room.own_nick:
-                        self.add_message_to_room(room, _('%(nick)s changed his/her status : %(a)s, %(b)s, %(c)s, %(d)s') % {'nick':from_nick, 'a':affiliation, 'b':role, 'c':show, 'd':status})
+                            user.nick == room.own_nick)\
+                            and\
+                            (affiliation != user.affiliation or\
+                                role != user.role or\
+                                show != user.show or\
+                                status != user.status):
+                        msg = _('%s changed his/her status: ')% from_nick
+                        if affiliation != user.affiliation:
+                            msg += _('affiliation: %s,') % affiliation
+                        if role != user.role:
+                            msg += _('role: %s,') % role
+                        if show != user.show:
+                            msg += _('show: %s,') % show
+                        if status != user.status:
+                            msg += _('status: %s,') % status
+                        # (a)s, %(b)s, %(c)s, %(d)s') % {'nick':from_nick, 'a':affiliation, 'b':role, 'c':show, 'd':status})
+                        user.update(affiliation, show, status, role)
+                        msg = msg[:-1] # remove the last ","
+                        self.add_message_to_room(room, msg)
+
             if room == self.current_room():
                 self.window.user_win.refresh(room.users)
         self.window.input.refresh()
diff --git a/src/user.py b/src/user.py
index 6dc87c73..6f0f3328 100644
--- a/src/user.py
+++ b/src/user.py
@@ -52,14 +52,10 @@ class User(object):
         Return True if the user talked since the last s seconds
         """
         from common import debug
-        debug('anus===========\n')
         if self.last_talked is None:
-            debug('return False1\n')
             return False
         delta = timedelta(0, t)
         debug("Last talk: %s\nDelai:%s\nDelta:%s\n" % (str(self.last_talked), str(t), str(delta)))
         if datetime.now() - delta > self.last_talked:
-            debug('return False2\n')
             return False
-        debug('return True')
         return True
-- 
cgit v1.2.3