summaryrefslogtreecommitdiff
path: root/src/window.py
diff options
context:
space:
mode:
authorlouiz@4325f9fc-e183-4c21-96ce-0ab188b42d13 <louiz@4325f9fc-e183-4c21-96ce-0ab188b42d13>2010-09-27 01:40:34 +0000
committerlouiz@4325f9fc-e183-4c21-96ce-0ab188b42d13 <louiz@4325f9fc-e183-4c21-96ce-0ab188b42d13>2010-09-27 01:40:34 +0000
commit7453b87f30e00e70ae76dbf19e45de6aed79ab27 (patch)
tree7f4eebdf77e8865ebe7fee739e54e11fdcd1a7f0 /src/window.py
parent27938ecf1eec28bbe8967e98e3c77698da18c33f (diff)
downloadpoezio-7453b87f30e00e70ae76dbf19e45de6aed79ab27.tar.gz
poezio-7453b87f30e00e70ae76dbf19e45de6aed79ab27.tar.bz2
poezio-7453b87f30e00e70ae76dbf19e45de6aed79ab27.tar.xz
poezio-7453b87f30e00e70ae76dbf19e45de6aed79ab27.zip
fold groups, display-name, focus the tab if user tries to open an already opened conversation (on /join too !), and nicer roster
Diffstat (limited to 'src/window.py')
-rw-r--r--src/window.py36
1 files changed, 23 insertions, 13 deletions
diff --git a/src/window.py b/src/window.py
index 6e0ec174..bef3bc9c 100644
--- a/src/window.py
+++ b/src/window.py
@@ -254,21 +254,19 @@ class ConversationInfoWin(InfoWin):
def resize(self, height, width, y, x, stdscr, visible):
self._resize(height, width, y, x, stdscr, visible)
- def refresh(self, room):
+ def refresh(self, room, contact):
if not self.visible:
return
g_lock.acquire()
self.win.erase()
- self.write_room_name(room)
+ self.write_room_name(contact)
self.print_scroll_position(room)
self.finish_line(theme.COLOR_INFORMATION_BAR)
self.win.refresh()
g_lock.release()
- def write_room_name(self, room):
- # (room_name, nick) = room.name.split('/', 1)
- # self.addnstr(nick, len(nick), curses.color_pair(13))
- txt = '%s' % room.name
+ def write_room_name(self, contact):
+ txt = '%s' % contact.get_jid().bare
self.addnstr(txt, len(txt), curses.color_pair(theme.COLOR_INFORMATION_BAR))
class MucInfoWin(InfoWin):
@@ -951,7 +949,7 @@ class RosterWin(Win):
'chat':theme.COLOR_STATUS_CHAT,
'unavailable': theme.COLOR_STATUS_UNAVAILABLE
}
-
+ # subscription_char = {'both': '
def __init__(self, height, width, y, x, parent_win, visible):
self.visible = visible
Win.__init__(self, height, width, y, x, parent_win)
@@ -1000,6 +998,8 @@ class RosterWin(Win):
if y >= self.start_pos:
self.draw_group(y-self.start_pos+1, group, y-1==self.pos)
y += 1
+ if group.folded:
+ continue
for contact in group.get_contacts():
if y-1 == self.pos:
self.selected_row = contact
@@ -1022,7 +1022,7 @@ class RosterWin(Win):
Draw the indicator that shows that
the list is longer that what is displayed
"""
- self.win.addstr(y, self.width-4, '+++', curses.color_pair(42))
+ self.win.addstr(y, self.width-5, '++++', curses.color_pair(42))
def draw_roster_information(self, roster):
"""
@@ -1035,9 +1035,14 @@ class RosterWin(Win):
Draw a groupname on a line
"""
if colored:
- self.addstr(y, 0, group.name, curses.color_pair(34))
+ self.win.attron(curses.color_pair(14))
+ if group.folded:
+ self.addstr(y, 0, '[+] ')
else:
- self.addstr(y, 0, group.name)
+ self.addstr(y, 0, '[-] ')
+ self.addstr(y, 4, group.name)
+ if colored:
+ self.win.attroff(curses.color_pair(14))
def draw_contact_line(self, y, contact, colored):
"""
@@ -1046,11 +1051,16 @@ class RosterWin(Win):
is currently selected contact in the list
"""
color = RosterWin.color_show[contact.get_presence()]
- self.win.addstr(y, 1, "!", curses.color_pair(color))
+ if contact.get_name():
+ display_name = '%s (%s)' % (contact.get_name(),
+ contact.get_jid().bare)
+ else:
+ display_name = '%s' % (contact.get_jid().bare,)
+ self.win.addstr(y, 1, " ", curses.color_pair(color))
if colored:
- self.win.addstr(y, 2, contact.get_jid().bare, curses.color_pair(34))
+ self.win.addstr(y, 4, display_name, curses.color_pair(14))
else:
- self.win.addstr(y, 2, contact.get_jid().bare)
+ self.win.addstr(y, 4, display_name)
def get_selected_row(self):
return self.selected_row