changeset 1393:50d5d6325f62

quick_frontend, primitivus: various fixes (MUC and cached signals): - actually call the cached signals, everything was there but the call was not done - display '[]' instead of '[None]' when group message coming from the room (no resource) - catch the exception when trying to delete an occupant who's not in the room - do not cache a "main resource" for MUC entities
author souliane <souliane@mailoo.org>
date Wed, 25 Mar 2015 15:25:51 +0100
parents c7082457d03f
children e3624cb3765d
files frontends/src/primitivus/chat.py frontends/src/quick_frontend/quick_app.py frontends/src/quick_frontend/quick_contact_list.py
diffstat 3 files changed, 10 insertions(+), 4 deletions(-) [+]
line wrap: on
line diff
--- a/frontends/src/primitivus/chat.py	Wed Mar 25 15:28:02 2015 +0100
+++ b/frontends/src/primitivus/chat.py	Wed Mar 25 15:25:51 2015 +0100
@@ -73,7 +73,7 @@
             if self.parent.show_short_nick:
                 render_txt.append(('my_nick' if self.my_mess else 'other_nick', "**" if self.my_mess else "*"))
             else:
-                render_txt.append(('my_nick' if self.my_mess else 'other_nick', "[%s] " % self.nick))
+                render_txt.append(('my_nick' if self.my_mess else 'other_nick', "[%s] " % (self.nick or '')))
         render_txt.append(self.message)
         txt_widget = urwid.Text(render_txt, align=self.align)
         if self.is_info:
@@ -188,7 +188,10 @@
             nick = entity.resource
             show = contact_list.getCache(entity, C.PRESENCE_SHOW)
             if show == C.PRESENCE_UNAVAILABLE or show is None:
-                self.occupants_list.deleteValue(nick)
+                try:
+                    self.occupants_list.deleteValue(nick)
+                except ValueError:
+                    pass
             else:
                 values = self.occupants_list.getAllValues()
                 markup = self._buildOccupantMarkup(entity)
--- a/frontends/src/quick_frontend/quick_app.py	Wed Mar 25 15:28:02 2015 +0100
+++ b/frontends/src/quick_frontend/quick_app.py	Wed Mar 25 15:25:51 2015 +0100
@@ -388,6 +388,7 @@
         cached_signals = self.signals_cache.pop(profile, [])
         for function_name, handler, args, kwargs in cached_signals:
             log.debug(u"Calling cached signal [%s] with args %s and kwargs %s" % (function_name, args, kwargs))
+            handler(*args, **kwargs)
 
         self.callListeners('profilePlugged', profile=profile)
 
--- a/frontends/src/quick_frontend/quick_contact_list.py	Wed Mar 25 15:28:02 2015 +0100
+++ b/frontends/src/quick_frontend/quick_contact_list.py	Wed Mar 25 15:25:51 2015 +0100
@@ -296,6 +296,7 @@
                 self._specials.remove(entity_bare)
             else:
                 self._specials.add(entity_bare)
+                cache[C.CONTACT_MAIN_RESOURCE] = None
 
         # now the attribute we keep in cache
         for attribute, value in attributes.iteritems():
@@ -401,8 +402,9 @@
             resource_data[C.PRESENCE_PRIORITY] = int(priority)
             resource_data[C.PRESENCE_STATUSES] = statuses
 
-            priority_resource = max(resources_data, key=lambda res: resources_data[res][C.PRESENCE_PRIORITY])
-            cache[C.CONTACT_MAIN_RESOURCE] = priority_resource
+            if entity.bare not in self._specials:
+                priority_resource = max(resources_data, key=lambda res: resources_data[res][C.PRESENCE_PRIORITY])
+                cache[C.CONTACT_MAIN_RESOURCE] = priority_resource
         self.update()
 
     def onNickUpdate(self, entity, new_nick, profile):