contact.name can now be empty. So use contact.get_shown_name() that returns a user friendly name

This commit is contained in:
Yann Leboulanger 2006-01-10 18:30:57 +00:00
parent 9901ebbca0
commit d2ab3031f1
12 changed files with 61 additions and 49 deletions

View File

@ -791,7 +791,7 @@ class ChatControl(ChatControlBase):
jid = contact.jid
banner_name_label = self.xml.get_widget('banner_name_label')
name = gtkgui_helpers.escape_for_pango_markup(contact.name)
name = gtkgui_helpers.escape_for_pango_markup(contact.get_shown_name())
status = contact.status
if status is not None:
@ -841,7 +841,7 @@ class ChatControl(ChatControlBase):
tb.set_sensitive(False)
#we talk about a contact here
tt = _('%s has not broadcast an OpenPGP key, nor has one been assigned') %\
self.contact.name
self.contact.get_shown_name()
gtk.Tooltips().set_tip(self.xml.get_widget('gpg_eventbox'), tt)
def send_message(self, message, keyID = '', chatstate = None):
@ -972,10 +972,10 @@ class ChatControl(ChatControlBase):
self.xml.get_widget('gpg_togglebutton').set_active(encrypted)
if not frm:
kind = 'incoming'
name = contact.name
name = contact.get_shown_name()
elif frm == 'print_queue': # incoming message, but do not update time
kind = 'incoming_queue'
name = contact.name
name = contact.get_shown_name()
else:
kind = 'outgoing'
name = gajim.nicks[self.account]
@ -1018,7 +1018,8 @@ class ChatControl(ChatControlBase):
self.parent_win.get_active_control() != self:
color = self.lighten_color(color)
label_str = gtkgui_helpers.escape_for_pango_markup(self.contact.name)
label_str = gtkgui_helpers.escape_for_pango_markup(
self.contact.get_shown_name())
if num_unread: # if unread, text in the label becomes bold
label_str = '<b>' + unread + label_str + '</b>'
return (label_str, color)
@ -1268,7 +1269,7 @@ class ChatControl(ChatControlBase):
elif row[1] in (constants.KIND_SINGLE_MSG_RECV,
constants.KIND_CHAT_MSG_RECV):
kind = 'incoming'
name = self.contact.name
name = self.contact.get_shown_name()
tim = time.localtime(float(row[0]))

View File

@ -56,6 +56,11 @@ class Contact:
return self.jid + '/' + self.resource
return self.jid
def get_shown_name(self):
if self.name:
return self.name
return self.jid.split('@')[0]
class GC_Contact:
'''Information concerning each groupchat contact'''
def __init__(self, room_jid='', name='', show='', status='', role='',
@ -72,6 +77,9 @@ class GC_Contact:
def get_full_jid(self):
return self.room_jid + '/' + self.name
def get_shown_name(self):
return self.name
class Contacts:
'''Information concerning all contacts and groupchat contacts'''
def __init__(self):

View File

@ -64,7 +64,7 @@ class EditGroupsDialog:
self.changes_made = False
self.list = self.xml.get_widget('groups_treeview')
self.xml.get_widget('nickname_label').set_markup(
_("Contact's name: <i>%s</i>") % user.name)
_("Contact's name: <i>%s</i>") % user.get_shown_name())
self.xml.get_widget('jid_label').set_markup(
_('JID: <i>%s</i>') % user.jid)
@ -842,10 +842,12 @@ class PopupNotificationWindow:
event_description_label = xml.get_widget('event_description_label')
eventbox = xml.get_widget('eventbox')
event_type_label.set_markup('<span foreground="black" weight="bold">%s</span>' %event_type)
event_type_label.set_markup(
'<span foreground="black" weight="bold">%s</span>' % event_type)
if self.jid in gajim.contacts.get_jid_list(account):
txt = gajim.contacts.get_first_contact_from_jid(account, self.jid).name
txt = gajim.contacts.get_first_contact_from_jid(account,
self.jid).get_shown_name()
else:
txt = self.jid
@ -856,12 +858,14 @@ class PopupNotificationWindow:
limegreen = gtk.gdk.color_parse('limegreen')
close_button.modify_bg(gtk.STATE_NORMAL, limegreen)
eventbox.modify_bg(gtk.STATE_NORMAL, limegreen)
event_description_label.set_markup('<span foreground="black">%s</span>' % txt)
event_description_label.set_markup(
'<span foreground="black">%s</span>' % txt)
elif event_type == _('Contact Signed Out'):
red = gtk.gdk.color_parse('red')
close_button.modify_bg(gtk.STATE_NORMAL, red)
eventbox.modify_bg(gtk.STATE_NORMAL, red)
event_description_label.set_markup('<span foreground="black">%s</span>' % txt)
event_description_label.set_markup(
'<span foreground="black">%s</span>' % txt)
elif event_type in (_('New Message'), _('New Single Message'),
_('New Private Message')):
dodgerblue = gtk.gdk.color_parse('dodgerblue')
@ -895,7 +899,7 @@ class PopupNotificationWindow:
# get the name of the sender, as it is in the roster
sender = unicode(file_props['sender']).split('/')[0]
name = gajim.contacts.get_first_contact_from_jid(account,
sender).name
sender).get_shown_name()
txt = _('From %s') % name
else:
receiver = file_props['receiver']
@ -904,7 +908,7 @@ class PopupNotificationWindow:
receiver = receiver.split('/')[0]
# get the name of the contact, as it is in the roster
name = gajim.contacts.get_first_contact_from_jid(account,
receiver).name
receiver).get_shown_name()
txt = _('To %s') % name
else:
txt = ''

View File

@ -178,7 +178,7 @@ class FileTransfersWindow:
if file_props['type'] == 'r':
jid = unicode(file_props['sender']).split('/')[0]
sender_name = gajim.contacts.get_first_contact_from_jid(
file_props['tt_account'], jid).name
file_props['tt_account'], jid).get_shown_name()
sender = gtkgui_helpers.escape_for_pango_markup(sender_name)
else:
#You is a reply of who sent a file
@ -188,7 +188,7 @@ class FileTransfersWindow:
if file_props['type'] == 's':
jid = unicode(file_props['receiver']).split('/')[0]
receiver_name = gajim.contacts.get_first_contact_from_jid(
file_props['tt_account'], jid).name
file_props['tt_account'], jid).get_shown_name()
recipient = gtkgui_helpers.escape_for_pango_markup(receiver_name)
else:
#You is a reply of who received a file
@ -567,7 +567,8 @@ _('Connection with peer cannot be established.'))
else:
file_name = file_props['name']
text_props = gtkgui_helpers.escape_for_pango_markup(file_name) + '\n'
text_props += gtkgui_helpers.escape_for_pango_markup(contact.name)
text_props += gtkgui_helpers.escape_for_pango_markup(
contact.get_shown_name())
self.model.set(iter, 1, text_labels, 2, text_props, C_SID,
file_props['type'] + file_props['sid'])
self.set_progress(file_props['type'], file_props['sid'], 0, iter)

View File

@ -771,8 +771,9 @@ class Interface:
return
for contact in contacts:
name = array[1]
if name:
contact.name = name
if not name:
name = ''
contact.name = name
contact.sub = array[2]
contact.ask = array[3]
if array[4]:

View File

@ -108,7 +108,7 @@ class HistoryWindow:
contact = gajim.contacts.get_first_contact_from_jid(account, jid)
if contact:
title = _('Conversation History with %s') % contact.name
title = _('Conversation History with %s') % contact.get_shown_name()
else:
title = _('Conversation History with %s') % jid
self.window.set_title(title)
@ -241,7 +241,7 @@ class HistoryWindow:
self.jid)
if contact:
# he is in our roster, use the name
contact_name = contact.name
contact_name = contact.get_shown_name()
else:
room_jid, nick = gajim.get_room_and_nick_from_fjid(self.jid)
# do we have him as gc_contact?
@ -337,7 +337,7 @@ class HistoryWindow:
if self.account and gajim.contacts[self.account].has_key(self.jid):
contact = gajim.get_first_contact_instance_from_jid(
self.account, self.jid)
contact_name = contact.name
contact_name = contact.get_shown_name()
else:
contact_name = self.jid
tim = row[1]

View File

@ -190,10 +190,8 @@ class MessageWindow:
control = self.get_active_control()
if control.type_id == message_control.TYPE_GC:
title = control.room_jid
elif control.contact.name:
title = control.contact.name
else:
title = control.contact.jid
title = control.contact.get_shown_name()
title = unread_str + title
self.window.set_title(title)
@ -382,7 +380,7 @@ class MessageWindow:
jid = ctl.contact.jid
if jid != self.get_active_jid():
item = gtk.ImageMenuItem(_('Switch to %s') %\
ctl.contact.name)
ctl.contact.get_shown_name())
img = gtk.image_new_from_stock(gtk.STOCK_JUMP_TO,
gtk.ICON_SIZE_MENU)
item.set_image(img)

View File

@ -107,7 +107,7 @@ class DesktopNotification:
contact = gajim.contacts.get_first_contact_from_jid(account, jid)
if contact:
actor = contact.name
actor = contact.get_shown_name()
else:
actor = jid
@ -168,7 +168,7 @@ class DesktopNotification:
# get the name of the sender, as it is in the roster
sender = unicode(file_props['sender']).split('/')[0]
name = gajim.contacts.get_first_contact_from_jid(account,
sender).name
sender).get_shown_name()
filename = os.path.basename(file_props['file-name'])
if event_type == _('File Transfer Completed'):
txt = _('You successfully received %(filename)s from %(name)s.')\
@ -185,7 +185,7 @@ class DesktopNotification:
receiver = receiver.split('/')[0]
# get the name of the contact, as it is in the roster
name = gajim.contacts.get_first_contact_from_jid(account,
receiver).name
receiver).get_shown_name()
filename = os.path.basename(file_props['file-name'])
if event_type == _('File Transfer Completed'):
txt = _('You successfully sent %(filename)s to %(name)s.')\

View File

@ -199,9 +199,10 @@ class RosterWindow:
if g == _('Transports'):
typestr = 'agent'
name = contcat.get_shown_name()
# we add some values here. see draw_contact for more
model.append(iterG, (None, contact.name,
typestr, contact.jid, account, False, None))
model.append(iterG, (None, name, typestr, contact.jid, account,
False, None))
if gajim.groups[account][g]['expand']:
self.tree.expand_row(model.get_path(iterG), False)
@ -267,7 +268,7 @@ class RosterWindow:
contact_instances)
if not contact:
return
name = gtkgui_helpers.escape_for_pango_markup(contact.name)
name = gtkgui_helpers.escape_for_pango_markup(contact.get_shown_name())
if len(contact_instances) > 1:
name += ' (' + unicode(len(contact_instances)) + ')'
@ -665,10 +666,7 @@ class RosterWindow:
#get name
name = array[jid]['name']
if not name:
if ji.find('@') <= 0:
name = ji
else:
name = jid.split('@')[0]
name = ''
show = 'offline' # show is offline by default
status = '' #no status message by default
@ -731,7 +729,7 @@ class RosterWindow:
ctl.update_ui()
win.redraw_tab(contact)
name = contact.name
name = contact.get_shown_name()
if contact.resource != '':
name += '/' + contact.resource
uf_show = helpers.get_uf_show(show)
@ -1255,8 +1253,6 @@ class RosterWindow:
def req_sub(self, widget, jid, txt, account, group=None, pseudo=None):
'''Request subscription to a contact'''
if not pseudo:
pseudo = jid
gajim.connections[account].request_subscription(jid, txt)
if group:
group = [group]
@ -1279,7 +1275,8 @@ class RosterWindow:
_('If "%s" accepts this request you will know his or her status.') % jid)
return
contact.groups = group
contact.name = pseudo
if pseudo:
contact.name = pseudo
self.remove_contact(contact, account)
self.add_contact_to_roster(jid, account)
@ -1434,7 +1431,8 @@ _('If "%s" accepts this request you will know his or her status.') % jid)
def on_req_usub(self, widget, contact, account):
'''Remove a contact'''
window = dialogs.ConfirmationDialogCheck(
_('Contact "%s" will be removed from your roster') % (contact.name),
_('Contact "%s" will be removed from your roster') % (
contact.get_shown_name()),
_('By removing this contact you also by default remove authorization resulting in him or her always seeing you as offline.'),
_('I want this contact to know my status after removal'))
# maybe use 2 optionboxes from which the contact can select? (better)
@ -2414,13 +2412,13 @@ _('If "%s" accepts this request you will know his or her status.') % jid)
contact1 = gajim.contacts.get_first_contact_from_jid(account1, jid1)
if not contact1:
return 0
name1 = contact1.name
name1 = contact1.get_shown_name()
if type2 == 'contact':
lcontact2 = gajim.contacts.get_contact(account2, jid2)
contact2 = gajim.contacts.get_first_contact_from_jid(account2, jid2)
if not contact2:
return 0
name2 = contact2.name
name2 = contact2.get_shown_name()
# We first compare by show if sort_by_show is True
if type1 == 'contact' and type2 == 'contact' and \
gajim.config.get('sort_by_show'):

View File

@ -255,7 +255,7 @@ class Systray:
if group in contact.groups and contact.show != 'offline' and \
contact.show != 'error':
at_least_one = True
s = contact.name.replace('_', '__') # two _ show one _ and no underline happens
s = contact.get_shown_name().replace('_', '__') # two _ show one _ and no underline happens
item = gtk.ImageMenuItem(s)
# any given gtk widget can only be used in one place
# (here we use it in status menu too)

View File

@ -323,7 +323,7 @@ class GCTooltip(BaseTooltip):
if contact.jid.strip() != '':
info = '<span size="large" weight="bold">' + contact.jid + '</span>'
else:
info = '<span size="large" weight="bold">' + contact.name + '</span>'
info = '<span size="large" weight="bold">' + contact.get_shown_name() + '</span>'
info += '\n<span weight="bold">' + _('Role: ') + '</span>' + \
helpers.get_uf_role(contact.role)
@ -404,7 +404,7 @@ class RosterTooltip(NotificationAreaTooltip):
info = '<span size="large" weight="bold">' + prim_contact.jid + '</span>'
info += '\n<span weight="bold">' + _('Name: ') + '</span>' + \
gtkgui_helpers.escape_for_pango_markup(prim_contact.name)
gtkgui_helpers.escape_for_pango_markup(prim_contact.get_shown_name())
if prim_contact.sub:
info += '\n<span weight="bold">' + _('Subscription: ') + '</span>' + \
gtkgui_helpers.escape_for_pango_markup(prim_contact.sub)
@ -484,7 +484,7 @@ class FileTransfersTooltip(BaseTooltip):
text += '\n<b>' + _('Sender: ') + '</b>'
sender = unicode(file_props['sender']).split('/')[0]
name = gajim.contacts.get_first_contact_from_jid(
file_props['tt_account'], sender).name
file_props['tt_account'], sender).get_shown_name()
else:
text += '\n<b>' + _('Recipient: ') + '</b>'
receiver = file_props['receiver']
@ -495,7 +495,7 @@ class FileTransfersTooltip(BaseTooltip):
name = receiver
else:
name = gajim.contacts.get_first_contact_from_jid(
file_props['tt_account'], receiver).name
file_props['tt_account'], receiver).get_shown_name()
text += gtkgui_helpers.escape_for_pango_markup(name)
text += '\n<b>' + _('Size: ') + '</b>'
text += helpers.convert_bytes(file_props['size'])

View File

@ -135,7 +135,7 @@ class VcardWindow:
if self.vcard:
self.window.destroy()
return
#update contact.name if it's not ''
# update contact.name if it's not ''
name_entry = self.xml.get_widget('nickname_entry')
new_name = name_entry.get_text().decode('utf-8')
if new_name != self.contact.name and new_name != '':
@ -283,7 +283,8 @@ class VcardWindow:
def fill_jabber_page(self):
tooltips = gtk.Tooltips()
self.xml.get_widget('nickname_label').set_text(self.contact.name)
self.xml.get_widget('nickname_label').set_text(
self.contact.get_shown_name())
self.xml.get_widget('jid_label').set_text(self.contact.jid)
uf_sub = helpers.get_uf_sub(self.contact.sub)
self.xml.get_widget('subscription_label').set_text(uf_sub)