Mercurial > libervia-backend
changeset 54:2ce9e350cdf9
Wix: clicking on group in contact_list now (un)hide it.
Quick App: added a method to get all contacts in a group in contact_management
author | Goffi <goffi@goffi.org> |
---|---|
date | Sun, 10 Jan 2010 17:25:43 +1100 |
parents | 6dfe5bb10008 |
children | 20e54702fc0b |
files | frontends/quick_frontend/quick_contact_management.py frontends/wix/main_window.py |
diffstat | 2 files changed, 36 insertions(+), 5 deletions(-) [+] |
line wrap: on
line diff
--- a/frontends/quick_frontend/quick_contact_management.py Sun Jan 10 16:42:09 2010 +1100 +++ b/frontends/quick_frontend/quick_contact_management.py Sun Jan 10 17:25:43 2010 +1100 @@ -42,7 +42,16 @@ if entity.resource in self.__contactlist[entity.short]['resources']: self.__contactlist[entity.short]['resources'].remove(entity.resource) self.__contactlist[entity.short]['resources'].append(entity.resource) - + + def getContFromGroup(self, group): + """Return all contacts which are in given group""" + result = [] + for contact in self.__contactlist: + if self.__contactlist[contact].has_key('groups'): + if group in self.__contactlist[contact]['groups']: + result.append(JID(contact)) + return result + def getAttr(self, entity, name): """Return a specific attribute of contact, or all attributes @param entity: jid of the contact
--- a/frontends/wix/main_window.py Sun Jan 10 16:42:09 2010 +1100 +++ b/frontends/wix/main_window.py Sun Jan 10 17:25:43 2010 +1100 @@ -79,7 +79,7 @@ self.Bind(wx.EVT_LISTBOX_DCLICK, self.onActivated) def __find_idx(self, entity, reverse=False): - """Find indexes of given jid in contact list + """Find indexes of given jid (or groups) in contact list @return: list of indexes""" result=[] for i in range(self.GetCount()): @@ -98,10 +98,23 @@ def disconnect(self, jid): self.remove(jid) #for now, we only show online contacts + + def __eraseGroup(self, group): + """Erase all contacts in group + @param group: group to erase + @return: True if something as been erased""" + erased = False + indexes = self.__find_idx(group) + for idx in indexes: + while idx<self.GetCount()-1 and type(self.GetClientData(idx+1)) == JID: + erased = True + self.Delete(idx+1) + return erased + def __presentGroup(self, group): """Make a nice presentation for the contact groups""" - html = """[%s]""" % group + html = """-- [%s] --""" % group return html @@ -172,7 +185,14 @@ if type(data) == JID: event.Skip() else: - #We don't want to select groups + group = self.GetClientData(self.GetSelection()) + erased = self.__eraseGroup(group) + if not erased: #the group was already erased, we can add again the contacts + contacts = self.CM.getContFromGroup(group) + contacts.sort() + id_insert = self.GetSelection()+1 + for contact in contacts: + self.Insert(self.__presentItem(contact), id_insert, contact) self.SetSelection(wx.NOT_FOUND) event.Skip(False) @@ -185,8 +205,10 @@ def getSelection(self): """Return the selected contact, or an empty string if there is not""" if self.GetSelection() == wx.NOT_FOUND: - return "" #FIXME: gof: à améliorer + return None data = self.GetClientData(self.GetSelection()) + if type(data) != JID: + return None return data def registerActivatedCB(self, cb):