Mercurial > libervia-backend
diff frontends/src/quick_frontend/quick_contact_list.py @ 501:e9634d2e7b38
core, quick_frontend, primitivus, wix: Contacts List refactoring phase 1:
- QuickContactManagement is not used anymore and will be removed, ContactList + Core are used instead
- disconnected contacts are now displayed in Primitivus (M-d to show/hide them)
- avatars are temporary unavailable in wix
- new bridge method: getContactsFromGroup
author | Goffi <goffi@goffi.org> |
---|---|
date | Tue, 25 Sep 2012 00:58:34 +0200 |
parents | 2a072735e459 |
children | debcf5dd404a |
line wrap: on
line diff
--- a/frontends/src/quick_frontend/quick_contact_list.py Wed Sep 05 00:19:32 2012 +0200 +++ b/frontends/src/quick_frontend/quick_contact_list.py Tue Sep 25 00:58:34 2012 +0200 @@ -19,35 +19,49 @@ along with this program. If not, see <http://www.gnu.org/licenses/>. """ -from logging import debug, info, error -from sat.tools.jid import JID +from logging import debug class QuickContactList(): """This class manage the visual representation of contacts""" - def __init__(self, CM): - """ - @param CM: instance of QuickContactManagement - """ + def __init__(self): debug(_("Contact List init")) - self.CM = CM + self._cache = {} + + def update_jid(self, jid): + """Update the jid in the list when something changed""" + raise NotImplementedError + + def getCache(self, jid, name): + try: + jid_cache = self._cache[jid.short] + if name == 'status': #XXX: we get the first status for 'status' key + return jid_cache['statuses'].get('default','') + return jid_cache[name] + except (KeyError, IndexError): + return None + + def setCache(self, jid, name, value): + jid_cache = self._cache.setdefault(jid.short, {}) + jid_cache[name] = value def __contains__(self, jid): raise NotImplementedError - def clear_contacts(self, jid): + def clearContacts(self, jid): """Clear all the contact list""" raise NotImplementedError - def replace(self, jid, groups=None): + def _replace(self, jid, groups=None, attributes=None): + if 'name' in attributes: + self.setCache(jid, 'name', attributes['name']) + self.replace(jid, groups, attributes) + + def replace(self, jid, groups, attributes): """add a contact to the list if doesn't exist, else update it""" raise NotImplementedError - def disconnect(self, jid): - """mark a contact disconnected""" - raise NotImplementedError - def remove(self, jid): """remove a contact from the list""" raise NotImplementedError @@ -55,3 +69,14 @@ def add(self, jid, param_groups=None): """add a contact to the list""" raise NotImplementedError + + def updatePresence(self, jid, show, priority, statuses): + """Update entity's presence status + @param jid: entity to update's jid + @param show: availability + @parap priority: resource's priority + @param statuses: dict of statuses""" + self.setCache(jid, 'show', show) + self.setCache(jid, 'prority', priority) + self.setCache(jid, 'statuses', statuses) + self.update_jid(jid)