diff src/browser/sat_browser/html_tools.py @ 684:e876f493dccc

browser_side: follow changes made on quick_frontend for chat states and MUC symbols + minor fixes following the refactorisation: - some MUC handlers are no more needed, the presence handler is enough - move the chat states logic to quick_frontend - display MUC games symbols - remove classes contact_list.ContactsPanel, contact_panel.Occupant and contact_panel.OccupantsList - move buildPresenceStyle and setPresenceStyle to html_tools - fixes games menu callback
author souliane <souliane@mailoo.org>
date Wed, 18 Mar 2015 10:17:04 +0100
parents f030491cff75
children 9877607c719a
line wrap: on
line diff
--- a/src/browser/sat_browser/html_tools.py	Thu Mar 19 20:41:46 2015 +0100
+++ b/src/browser/sat_browser/html_tools.py	Wed Mar 18 10:17:04 2015 +0100
@@ -29,20 +29,55 @@
     """Naive sanitization of HTML"""
     return html.replace('<', '&lt;').replace('>', '&gt;')
 
+
 def html_strip(html):
     """Strip leading/trailing white spaces, HTML line breaks and &nbsp; sequences."""
     cleaned = re.sub(r"^(<br/?>|&nbsp;|\s)+", "", html)
     cleaned = re.sub(r"(<br/?>|&nbsp;|\s)+$", "", cleaned)
     return cleaned
 
+
 def inlineRoot(xhtml):
     """ make root element inline """
     doc = dom.parseString(xhtml)
     return xmltools.inlineRoot(doc)
 
+
 def convertNewLinesToXHTML(text):
     return text.replace('\n', '<br/>')
 
+
 def XHTML2Text(xhtml):
     """Helper method to apply both html_sanitize and convertNewLinesToXHTML"""
     return convertNewLinesToXHTML(html_sanitize(xhtml))
+
+
+def buildPresenceStyle(presence, base_style=None):
+    """Return the CSS classname to be used for displaying the given presence information.
+
+    @param presence (unicode): presence is a value in ('', 'chat', 'away', 'dnd', 'xa')
+    @param base_style (unicode): base classname
+    @return: unicode
+    """
+    if not base_style:
+        base_style = "contactLabel"
+    return '%s-%s' % (base_style, presence or 'connected')
+
+
+def setPresenceStyle(widget, presence, base_style=None):
+    """
+    Set the CSS style of a contact's element according to its presence.
+
+    @param widget (Widget): the UI element of the contact
+    @param presence (unicode): a value in ("", "chat", "away", "dnd", "xa").
+    @param base_style (unicode): the base name of the style to apply
+    """
+    if not hasattr(widget, 'presence_style'):
+        widget.presence_style = None
+    style = buildPresenceStyle(presence, base_style)
+    if style == widget.presence_style:
+        return
+    if widget.presence_style is not None:
+        widget.removeStyleName(widget.presence_style)
+    widget.addStyleName(style)
+    widget.presence_style = style