Mercurial > libervia-backend
view frontends/src/quick_frontend/quick_contact_list.py @ 504:65ecbb473cbb
core, quick frontend, plugin xep-0054, bridge: use of memory's entities data for vcard:
- bridge: new bridge method getEntityData and signal entityDataUpdated
- core: entityDataUpdated signal sent on new string data
- quick frontend: fixed avatars/vcard infos, fixed _replace in quick_contact_list
- plugin xep-0054: dropped updatedValue signal, use entities data instead
author | Goffi <goffi@goffi.org> |
---|---|
date | Wed, 26 Sep 2012 01:23:56 +0200 |
parents | debcf5dd404a |
children | 886754295efe |
line wrap: on
line source
#!/usr/bin/python # -*- coding: utf-8 -*- """ helper class for making a SAT frontend Copyright (C) 2009, 2010, 2011, 2012 Jérôme Poisson (goffi@goffi.org) This program is free software: you can redistribute it and/or modify it under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more details. You should have received a copy of the GNU Affero General Public License along with this program. If not, see <http://www.gnu.org/licenses/>. """ from logging import debug class QuickContactList(): """This class manage the visual representation of contacts""" def __init__(self): debug(_("Contact List init")) 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 clearContacts(self, jid): """Clear all the contact list""" raise NotImplementedError def _replace(self, jid, groups=None, attributes=None): if attributes and '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 remove(self, jid): """remove a contact from the list""" raise NotImplementedError def add(self, jid, param_groups=None): """add a contact to the list""" raise NotImplementedError def setSpecial(self, jid, _type): """Set entity as a special @param jid: jid of the entity @param _type: special type (e.g.: "MUC") """ 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)