Skip to content
Snippets Groups Projects
Commit b5fe6011 authored by nkour's avatar nkour
Browse files

nick was utf8, room_jid was unicode so we had a problem. it is fixed [stills...

nick was utf8, room_jid was unicode so we had a problem. it is fixed [stills Tracebacks because of TODO: use gc_contacts in common/gaim.py]
parent 45ead83f
No related branches found
No related tags found
No related merge requests found
...@@ -61,15 +61,52 @@ sleeper_state = {} # whether we pass auto away / xa or not ...@@ -61,15 +61,52 @@ sleeper_state = {} # whether we pass auto away / xa or not
#'autoxa': autoxa and use sleeper #'autoxa': autoxa and use sleeper
def get_fjid_from_nick(room_jid, nick):
# fake jid is the jid for a contact in a room
# gaim@conference.jabber.org/nick
fjid = room_jid + '/' + nick
return fjid
def get_nick_from_jid(jid):
pos = jid.find('@')
return jid[:pos]
def get_nick_from_fjid(jid):
# fake jid is the jid for a contact in a room
# gaim@conference.jabber.org/nick/nick-continued
return jid.split('/', 1)[1]
def get_contact_instances_from_jid(account, jid): def get_contact_instances_from_jid(account, jid):
''' we may have two or more resources on that jid ''' ''' we may have two or more resources on that jid '''
return contacts[account][jid] #print contacts
if jid in contacts[account]:
contacts_instances = contacts[account][jid]
return contacts_instances
def get_first_contact_instance_from_jid(account, jid): def get_first_contact_instance_from_jid(account, jid):
return contacts[account][jid][0] if jid in contacts[account]:
contact = contacts[account][jid][0]
else: # it's fake jid
nick = get_nick_from_fjid(jid)
if nick in gc_contacts[room_jid]:
contact = gc_contacts[room_jid][nick] # always only one instance
return contact
def get_contact_name_from_jid(account, jid): def get_contact_name_from_jid(account, jid):
return contacts[account][jid][0].name return contacts[account][jid][0].name
def get_jid_without_resource(jid): def get_jid_without_resource(jid):
return jid.split('/')[0] return jid.split('/')[0]
def construct_fjid(room_jid, nick):
''' nick is in utf8 (taken from treeview); room_jid is in unicode'''
return room_jid + '/' + unicode(nick, 'utf-8')
def get_resource_from_jid(jid):
return jid.split('/', 1)[1] # abc@doremi.org/res/res-continued
'''\
[15:34:28] <asterix> we should add contact.fake_jid I think
[15:34:46] <asterix> so if we know real jid, it wil be in contact.jid, or we look in contact.fake_jid
[15:32:54] <asterix> they can have resource if we know the real jid
[15:33:07] <asterix> and that resource is in contact.resource
'''
...@@ -51,24 +51,6 @@ def get_sorted_keys(adict): ...@@ -51,24 +51,6 @@ def get_sorted_keys(adict):
keys.sort() keys.sort()
return keys return keys
def get_fjid_from_nick(room_jid, nick):
# fake jid is the jid for a contact in a room
# gaim@conference.jabber.org/nick
fjid = room_jid + '/' + nick
return fjid
def get_nick_from_jid(jid):
pos = jid.find('@')
return jid[:pos]
def get_nick_from_fjid(jid):
# fake jid is the jid for a contact in a room
# gaim@conference.jabber.org/nick/nick-continued
return jid.split('/', 1)[1]
def get_resource_from_jid(jid):
return jid.split('/', 1)[1] # abc@doremi.org/res/res-continued
def to_one_line(msg): def to_one_line(msg):
msg = msg.replace('\\', '\\\\') msg = msg.replace('\\', '\\\\')
msg = msg.replace('\n', '\\n') msg = msg.replace('\n', '\\n')
...@@ -93,3 +75,16 @@ def from_one_line(msg): ...@@ -93,3 +75,16 @@ def from_one_line(msg):
# s14 # s14
# 'test\ntest\\ntest' # 'test\ntest\\ntest'
return msg return msg
def get_uf_chatstate(chatstate):
'''removes chatstate jargon and returns user friendly messages'''
if chatstate == 'active':
return _('is paying attention to the conversation')
elif chatstate == 'inactive':
return _('is doing something else')
elif chatstate == 'composing':
return _('is composing a message...')
elif chatstate == 'paused':
return _('paused composing a message...')
elif chatstate == 'gone':
return _('closed the chat window or tab')
...@@ -180,7 +180,7 @@ class Interface: ...@@ -180,7 +180,7 @@ class Interface:
def handle_event_roster(self, account, data): def handle_event_roster(self, account, data):
#('ROSTER', account, array) #('ROSTER', account, array)
self.roster.mklists(data, account) self.roster.fill_contacts_and_groups_dicts(data, account)
self.roster.draw_roster() self.roster.draw_roster()
if self.remote and self.remote.is_enabled(): if self.remote and self.remote.is_enabled():
self.remote.raise_signal('Roster', (account, data)) self.remote.raise_signal('Roster', (account, data))
......
...@@ -658,7 +658,7 @@ class GroupchatWindow(chat.Chat): ...@@ -658,7 +658,7 @@ class GroupchatWindow(chat.Chat):
def ban(self, widget, room_jid, jid): def ban(self, widget, room_jid, jid):
"""ban a user""" """ban a user"""
# to ban we know the real jid. so jid is not fakejid # to ban we know the real jid. so jid is not fakejid
nick = helpers.get_nick_from_jid(jid) nick = gajim.get_nick_from_jid(jid)
# ask for reason # ask for reason
instance = dialogs.InputDialog(_('Banning %s') % nick, instance = dialogs.InputDialog(_('Banning %s') % nick,
_('You may specify a reason below:')) _('You may specify a reason below:'))
...@@ -704,7 +704,7 @@ class GroupchatWindow(chat.Chat): ...@@ -704,7 +704,7 @@ class GroupchatWindow(chat.Chat):
jid = c.jid jid = c.jid
fjid = c.jid + '/' + c.resource fjid = c.jid + '/' + c.resource
else: else:
fjid = room_jid + '/' + nick fjid = gajim.construct_fjid(room_jid, nick)
jid = fjid jid = fjid
if self.plugin.windows[self.account]['infos'].has_key(jid): if self.plugin.windows[self.account]['infos'].has_key(jid):
self.plugin.windows[self.account]['infos'][jid].window.present() self.plugin.windows[self.account]['infos'][jid].window.present()
...@@ -723,9 +723,9 @@ class GroupchatWindow(chat.Chat): ...@@ -723,9 +723,9 @@ class GroupchatWindow(chat.Chat):
'''opens a chat window and msg is not None sends private message to a '''opens a chat window and msg is not None sends private message to a
contact in a room''' contact in a room'''
if nick is None: if nick is None:
nick = model.get_value(iter, 1) nick = model[iter][1]
room_jid = self.get_active_jid() room_jid = self.get_active_jid()
fjid = room_jid + '/' + nick # 'fake' jid fjid = gajim.construct_fjid(room_jid, nick) # 'fake' jid
if not self.plugin.windows[self.account]['chats'].has_key(fjid): if not self.plugin.windows[self.account]['chats'].has_key(fjid):
show = self.contacts[room_jid][nick].show show = self.contacts[room_jid][nick].show
u = Contact(jid = fjid, name = nick, groups = ['none'], show = show, u = Contact(jid = fjid, name = nick, groups = ['none'], show = show,
...@@ -772,7 +772,7 @@ class GroupchatWindow(chat.Chat): ...@@ -772,7 +772,7 @@ class GroupchatWindow(chat.Chat):
def mk_menu(self, room_jid, event, iter): def mk_menu(self, room_jid, event, iter):
"""Make user's popup menu""" """Make user's popup menu"""
model = self.list_treeview[room_jid].get_model() model = self.list_treeview[room_jid].get_model()
nick = model.get_value(iter, 1) nick = model[iter][1]
c = self.contacts[room_jid][nick] c = self.contacts[room_jid][nick]
jid = c.jid jid = c.jid
target_affiliation = c.affiliation target_affiliation = c.affiliation
...@@ -999,8 +999,8 @@ class GroupchatWindow(chat.Chat): ...@@ -999,8 +999,8 @@ class GroupchatWindow(chat.Chat):
model = widget.get_model() model = widget.get_model()
iter = model.get_iter(path) iter = model.get_iter(path)
if len(path) == 2: if len(path) == 2:
nick = model.get_value(iter, 1) nick = model[iter][1]
fjid = room_jid + '/' + nick fjid = gajim.construct_fjid(room_jid, nick)
if not self.plugin.windows[self.account]['chats'].has_key(fjid): if not self.plugin.windows[self.account]['chats'].has_key(fjid):
show = self.contacts[room_jid][nick].show show = self.contacts[room_jid][nick].show
u = Contact(jid = fjid, name = nick, groups = ['none'], u = Contact(jid = fjid, name = nick, groups = ['none'],
...@@ -1019,7 +1019,7 @@ class GroupchatWindow(chat.Chat): ...@@ -1019,7 +1019,7 @@ class GroupchatWindow(chat.Chat):
model = widget.get_model() model = widget.get_model()
iter = model.get_iter(path) iter = model.get_iter(path)
nick = model.get_value(iter, 1) nick = model[iter][1]
if not nick in self.contacts[room_jid]: #it's a group if not nick in self.contacts[room_jid]: #it's a group
if x < 20: # first cell in 1st column (the arrow SINGLE clicked) if x < 20: # first cell in 1st column (the arrow SINGLE clicked)
if (widget.row_expanded(path)): if (widget.row_expanded(path)):
...@@ -1045,8 +1045,8 @@ class GroupchatWindow(chat.Chat): ...@@ -1045,8 +1045,8 @@ class GroupchatWindow(chat.Chat):
widget.expand_row(path, False) widget.expand_row(path, False)
else: # We want to send a private message else: # We want to send a private message
room_jid = self.get_active_jid() room_jid = self.get_active_jid()
nick = model.get_value(iter, 1) nick = model[iter][1]
fjid = room_jid + '/' + nick fjid = gajim.construct_fjid(room_jid, nick)
if not self.plugin.windows[self.account]['chats'].has_key(fjid): if not self.plugin.windows[self.account]['chats'].has_key(fjid):
show = self.contacts[room_jid][nick].show show = self.contacts[room_jid][nick].show
u = Contact(jid = fjid, name = nick, groups = ['none'], show = show, u = Contact(jid = fjid, name = nick, groups = ['none'], show = show,
......
...@@ -546,7 +546,7 @@ class RosterWindow: ...@@ -546,7 +546,7 @@ class RosterWindow:
for jid in gajim.contacts[acct].keys(): for jid in gajim.contacts[acct].keys():
self.add_contact_to_roster(jid, acct) self.add_contact_to_roster(jid, acct)
def mklists(self, array, account): def fill_contacts_and_groups_dicts(self, array, account):
'''fill gajim.contacts and gajim.groups''' '''fill gajim.contacts and gajim.groups'''
if not gajim.contacts.has_key(account): if not gajim.contacts.has_key(account):
gajim.contacts[account] = {} gajim.contacts[account] = {}
...@@ -575,13 +575,13 @@ class RosterWindow: ...@@ -575,13 +575,13 @@ class RosterWindow:
'attached_gpg_keys').split() 'attached_gpg_keys').split()
if jid in attached_keys: if jid in attached_keys:
keyID = attached_keys[attached_keys.index(jid) + 1] keyID = attached_keys[attached_keys.index(jid) + 1]
user1 = Contact(jid = ji, name = name, groups = array[jid]['groups'], contact1 = Contact(jid = ji, name = name, groups = array[jid]['groups'],
show = show, status = status, sub = array[jid]['subscription'], show = show, status = status, sub = array[jid]['subscription'],
ask = array[jid]['ask'], resource = resource, keyID = keyID) ask = array[jid]['ask'], resource = resource, keyID = keyID)
# when we draw the roster, we avoid having the same contact # when we draw the roster, we avoid having the same contact
# more than once (eg. we avoid showing it twice with 2 resources) # more than once (f.e. we avoid showing it twice when 2 resources)
gajim.contacts[account][ji] = [user1] gajim.contacts[account][ji] = [contact1]
for g in array[jid]['groups'] : for g in array[jid]['groups'] :
if g in gajim.groups[account].keys(): if g in gajim.groups[account].keys():
continue continue
......
...@@ -144,9 +144,9 @@ class TabbedChatWindow(chat.Chat): ...@@ -144,9 +144,9 @@ class TabbedChatWindow(chat.Chat):
# % (name, fulljid) # % (name, fulljid)
if chatstate: if chatstate:
chatstate = helpers.get_uf_chatstate(chatstate)
label_text = \ label_text = \
'<span weight="heavy" size="x-large">%s</span> (chat state: %s)' \ '<span weight="heavy" size="x-large">%s</span> %s' % (name, chatstate)
% (name, chatstate)
else: else:
label_text = '<span weight="heavy" size="x-large">%s</span>' % name label_text = '<span weight="heavy" size="x-large">%s</span>' % name
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment