when new_chat give the oontact with higher priority not the first resource

This commit is contained in:
Nikos Kouremenos 2005-08-06 10:20:04 +00:00
parent 11e85d4984
commit de46aeaa08
5 changed files with 37 additions and 22 deletions

View file

@ -100,7 +100,18 @@ def get_first_contact_instance_from_jid(account, jid):
contact = gc_contacts[account][room][nick] contact = gc_contacts[account][room][nick]
return contact return contact
def get_contact_instance_with_highest_priority(account, jid):
contact_instances = contacts[account][jid]
which_has_highest_prio = 0 # which resource has highest priority?
which = 0
for c in contact_instances[1:]:
which += 1
if c.priority > which_has_highest_prio:
which_has_highest_prio = which
return contacts[account][jid][which_has_highest_prio]
def get_contact_name_from_jid(account, jid): def get_contact_name_from_jid(account, jid):
print `contacts[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):

View file

@ -516,8 +516,8 @@ class PreferencesWindow:
#open new tabbed chat windows #open new tabbed chat windows
for jid in jids: for jid in jids:
if kind == 'chats': if kind == 'chats':
user = gajim.contacts[acct][jid][0] c = gajim.get_contact_instance_with_highest_priority(acct, jid)
self.plugin.roster.new_chat(user, acct) self.plugin.roster.new_chat(c, acct)
if kind == 'gc': if kind == 'gc':
self.plugin.roster.new_room(jid, saved_var[jid]['nick'], acct) self.plugin.roster.new_room(jid, saved_var[jid]['nick'], acct)
window = windows[jid] window = windows[jid]
@ -549,8 +549,8 @@ class PreferencesWindow:
#open new tabbed chat windows #open new tabbed chat windows
for jid in jids: for jid in jids:
if kind == 'chats': if kind == 'chats':
user = gajim.contacts[acct][jid][0] c = gajim.get_contact_instance_with_highest_priority(acct, jid)
self.plugin.roster.new_chat(user, acct) self.plugin.roster.new_chat(c, acct)
if kind == 'gc': if kind == 'gc':
self.plugin.roster.new_room(jid, saved_var[jid]['nick'], acct) self.plugin.roster.new_room(jid, saved_var[jid]['nick'], acct)
window = windows[jid] window = windows[jid]

View file

@ -1135,7 +1135,8 @@ class PopupNotificationWindow:
# use Contact class, new_chat expects it that way # use Contact class, new_chat expects it that way
# is it in the roster? # is it in the roster?
if gajim.contacts[self.account].has_key(self.jid): if gajim.contacts[self.account].has_key(self.jid):
contact = gajim.contacts[self.account][self.jid][0] contact = gajim.get_contact_instance_with_highest_priority(
self.account, self.jid)
else: else:
keyID = '' keyID = ''
attached_keys = gajim.config.get_per('accounts', self.account, attached_keys = gajim.config.get_per('accounts', self.account,

View file

@ -472,12 +472,12 @@ class Interface:
model = tv.get_model() model = tv.get_model()
i = gc.get_contact_iter(jid, nick) i = gc.get_contact_iter(jid, nick)
if i: if i:
show = model.get_value(i, 3) show = model[i][3]
else: else:
show = 'offline' show = 'offline'
u = Contact(jid = fjid, name = nick, groups = ['none'], c = Contact(jid = fjid, name = nick, groups = ['none'],
show = show, ask = 'none') show = show, ask = 'none')
self.roster.new_chat(u, account) self.roster.new_chat(c, account)
self.windows[account]['chats'][fjid].print_conversation( self.windows[account]['chats'][fjid].print_conversation(
'Error %s: %s' % (array[1], array[2]), fjid, 'status') 'Error %s: %s' % (array[1], array[2]), fjid, 'status')
return return

View file

@ -1147,7 +1147,8 @@ _('If "%s" accepts this request you will know his status.') %jid).get_response()
if self.plugin.windows[account]['chats'].has_key(jid): if self.plugin.windows[account]['chats'].has_key(jid):
self.plugin.windows[account]['chats'][jid].set_active_tab(jid) self.plugin.windows[account]['chats'][jid].set_active_tab(jid)
elif gajim.contacts[account].has_key(jid): elif gajim.contacts[account].has_key(jid):
self.new_chat(gajim.contacts[account][jid][0], account) c = gajim.get_contact_instance_with_highest_priority(account, jid)
self.new_chat(c, account)
self.plugin.windows[account]['chats'][jid].set_active_tab(jid) self.plugin.windows[account]['chats'][jid].set_active_tab(jid)
self.plugin.windows[account]['chats'][jid].window.present() self.plugin.windows[account]['chats'][jid].window.present()
return True return True
@ -1346,37 +1347,37 @@ _('If "%s" accepts this request you will know his status.') %jid).get_response()
self.update_status_comboxbox() self.update_status_comboxbox()
self.make_menu() self.make_menu()
def new_chat(self, user, account): def new_chat(self, contact, account):
if gajim.config.get('usetabbedchat'): if gajim.config.get('usetabbedchat'):
if not self.plugin.windows[account]['chats'].has_key('tabbed'): if not self.plugin.windows[account]['chats'].has_key('tabbed'):
self.plugin.windows[account]['chats']['tabbed'] = \ self.plugin.windows[account]['chats']['tabbed'] = \
tabbed_chat_window.TabbedChatWindow(user, self.plugin, account) tabbed_chat_window.TabbedChatWindow(contact, self.plugin, account)
else: else:
self.plugin.windows[account]['chats']['tabbed'].new_user(user) self.plugin.windows[account]['chats']['tabbed'].new_user(contact)
self.plugin.windows[account]['chats'][user.jid] = \ self.plugin.windows[account]['chats'][contact.jid] = \
self.plugin.windows[account]['chats']['tabbed'] self.plugin.windows[account]['chats']['tabbed']
else: else:
self.plugin.windows[account]['chats'][user.jid] = \ self.plugin.windows[account]['chats'][contact.jid] = \
tabbed_chat_window.TabbedChatWindow(user, self.plugin, account) tabbed_chat_window.TabbedChatWindow(contact, self.plugin, account)
def new_chat_from_jid(self, account, jid): def new_chat_from_jid(self, account, jid):
if gajim.contacts[account].has_key(jid): if gajim.contacts[account].has_key(jid):
user = gajim.contacts[account][jid][0] contact = gajim.get_contact_instance_with_highest_priority(account, jid)
else: else:
keyID = '' keyID = ''
attached_keys = gajim.config.get_per('accounts', account, attached_keys = gajim.config.get_per('accounts', account,
'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]
user = Contact(jid = jid, name = jid.split('@')[0], contact = Contact(jid = jid, name = jid.split('@')[0],
groups = [_('not in the roster')], show = 'not in the roster', groups = [_('not in the roster')], show = 'not in the roster',
status = '', sub = 'none', keyID = keyID) status = '', sub = 'none', keyID = keyID)
gajim.contacts[account][jid] = [user] gajim.contacts[account][jid] = [contact]
self.add_contact_to_roster(user.jid, account) self.add_contact_to_roster(contact.jid, account)
if not self.plugin.windows[account]['chats'].has_key(jid): if not self.plugin.windows[account]['chats'].has_key(jid):
self.new_chat(user, account) self.new_chat(contact, account)
self.plugin.windows[account]['chats'][jid].set_active_tab(jid) self.plugin.windows[account]['chats'][jid].set_active_tab(jid)
self.plugin.windows[account]['chats'][jid].window.present() self.plugin.windows[account]['chats'][jid].window.present()
@ -1460,7 +1461,8 @@ _('If "%s" accepts this request you will know his status.') %jid).get_response()
self.tree.set_cursor(path) self.tree.set_cursor(path)
else: else:
if not self.plugin.windows[account]['chats'].has_key(jid): if not self.plugin.windows[account]['chats'].has_key(jid):
self.new_chat(gajim.contacts[account][jid][0], account) c = gajim.get_contact_instance_with_highest_priority(account, jid)
self.new_chat(c, account)
if path: if path:
self.tree.expand_row(path[0:1], False) self.tree.expand_row(path[0:1], False)
self.tree.expand_row(path[0:2], False) self.tree.expand_row(path[0:2], False)
@ -1621,7 +1623,8 @@ _('If "%s" accepts this request you will know his status.') %jid).get_response()
if self.plugin.windows[account]['chats'].has_key(jid): if self.plugin.windows[account]['chats'].has_key(jid):
self.plugin.windows[account]['chats'][jid].set_active_tab(jid) self.plugin.windows[account]['chats'][jid].set_active_tab(jid)
elif gajim.contacts[account].has_key(jid): elif gajim.contacts[account].has_key(jid):
self.new_chat(gajim.contacts[account][jid][0], account) c = gajim.get_contact_instance_with_highest_priority(account, jid)
self.new_chat(c, account)
self.plugin.windows[account]['chats'][jid].set_active_tab(jid) self.plugin.windows[account]['chats'][jid].set_active_tab(jid)
self.plugin.windows[account]['chats'][jid].window.present() self.plugin.windows[account]['chats'][jid].window.present()