primitivus: contacts list improvments:
- icon and color are used to show availability (away, do not disturb, etc) - status are shown with meta-s (hidden by default)
This commit is contained in:
parent
086fefa779
commit
b068c6a536
1 changed files with 22 additions and 3 deletions
|
|
@ -33,6 +33,7 @@ class ContactList(urwid.WidgetWrap, QuickContactList):
|
|||
self.selected = None
|
||||
self.groups={}
|
||||
self.alert_jid=set()
|
||||
self.show_status = False
|
||||
|
||||
#we now build the widget
|
||||
self.frame = urwid.Frame(self.__buildList())
|
||||
|
|
@ -44,6 +45,13 @@ class ContactList(urwid.WidgetWrap, QuickContactList):
|
|||
urwid.connect_signal(self, 'change', on_change, user_data)
|
||||
QuickContactList.__init__(self, CM)
|
||||
|
||||
def keypress(self, size, key):
|
||||
if key == "meta s": #user wants to (un)hide contacts' statuses
|
||||
self.show_status = not self.show_status
|
||||
self.frame.body = self.__buildList()
|
||||
self.host.redraw()
|
||||
return super(ContactList, self).keypress(size, key)
|
||||
|
||||
def __contains__(self, jid):
|
||||
for group in self.groups:
|
||||
if jid.short in self.groups[group][1]:
|
||||
|
|
@ -93,10 +101,21 @@ class ContactList(urwid.WidgetWrap, QuickContactList):
|
|||
jid=JID(contact)
|
||||
name = self.CM.getAttr(jid,'name')
|
||||
nick = self.CM.getAttr(jid,'nick')
|
||||
display = nick or name or jid.node or jid.short
|
||||
status = self.CM.getAttr(jid, 'status')
|
||||
show = self.CM.getAttr(jid, 'show')
|
||||
show_icon, show_attr = const_SHOW_ICON.get(show,('','default'))
|
||||
contact_disp = ('alert' if contact in self.alert_jid else show_attr, nick or name or jid.node or jid.short)
|
||||
display = [ show_icon + " " , contact_disp]
|
||||
display_selected = [ show_icon + " " , "[ %s ]" % contact_disp[1]]
|
||||
if self.show_status:
|
||||
status_disp = ('status',"\n" + status) if status else ""
|
||||
display.append(status_disp)
|
||||
display_selected.append(status_disp)
|
||||
header = '(*) ' if contact in self.alert_jid else ''
|
||||
widget = sat_widgets.SelectableText(('alert' if contact in self.alert_jid else 'default',display),
|
||||
selected = contact==self.selected, header=header)
|
||||
widget = sat_widgets.SelectableText(display,
|
||||
selected_text = display_selected,
|
||||
selected = contact==self.selected,
|
||||
header=header)
|
||||
widget.data = contact
|
||||
content.append(widget)
|
||||
urwid.connect_signal(widget, 'change', self.__contactClicked)
|
||||
|
|
|
|||
Loading…
Reference in a new issue