This commit is contained in:
Brendan Taylor 2008-05-03 00:10:17 +00:00
parent 20beea4b49
commit 99f2997d27
6 changed files with 31 additions and 24 deletions

View file

@ -927,9 +927,8 @@ class ChatControlBase(MessageControl):
if contact: if contact:
gajim.interface.roster.draw_contact(room_jid, self.account) gajim.interface.roster.draw_contact(room_jid, self.account)
groupchat_control.draw_contact(nick) groupchat_control.draw_contact(nick)
mw = gajim.interface.msg_win_mgr.get_gc_window(room_jid, self.account) if groupchat_control.parent_win:
if mw: groupchat_control.parent_win.redraw_tab(groupchat_control)
mw.redraw_tab(groupchat_control)
else: else:
gajim.interface.roster.draw_contact(jid, self.account) gajim.interface.roster.draw_contact(jid, self.account)
gajim.interface.roster.show_title() gajim.interface.roster.show_title()

View file

@ -1029,7 +1029,7 @@ class ConnectionVcard:
gajim.interface.remove_avatar_files(our_jid) gajim.interface.remove_avatar_files(our_jid)
self.awaiting_answers[id] = (VCARD_PUBLISHED, iq2) self.awaiting_answers[id] = (VCARD_PUBLISHED, iq2)
def _IqCB(self, con, iq_obj): def _IqCB(self, con, iq_obj):
id = iq_obj.getID() id = iq_obj.getID()
@ -1081,6 +1081,7 @@ class ConnectionVcard:
our_jid = gajim.get_jid_from_account(self.name) our_jid = gajim.get_jid_from_account(self.name)
if iq_obj.getType() == 'error' and jid == our_jid: if iq_obj.getType() == 'error' and jid == our_jid:
# our server doesn't support vcard # our server doesn't support vcard
gajim.log.debug('xxx error xxx')
self.vcard_supported = False self.vcard_supported = False
if not iq_obj.getTag('vCard') or iq_obj.getType() == 'error': if not iq_obj.getTag('vCard') or iq_obj.getType() == 'error':
if frm and frm != our_jid: if frm and frm != our_jid:

View file

@ -727,7 +727,7 @@ class Interface:
full_jid_with_resource = array[0] full_jid_with_resource = array[0]
jids = full_jid_with_resource.split('/', 1) jids = full_jid_with_resource.split('/', 1)
jid = jids[0] jid = jids[0]
gc_control = self.msg_win_mgr.get_control(jid, account) gc_control = self.msg_win_mgr.get_gc_control(jid, account)
if not gc_control and \ if not gc_control and \
jid in self.minimized_controls[account]: jid in self.minimized_controls[account]:
gc_control = self.minimized_controls[account][jid] gc_control = self.minimized_controls[account][jid]

View file

@ -121,7 +121,7 @@ class PrivateChatControl(ChatControl):
def __init__(self, parent_win, gc_contact, contact, account, session): def __init__(self, parent_win, gc_contact, contact, account, session):
room_jid = contact.jid.split('/')[0] room_jid = contact.jid.split('/')[0]
room_ctrl = gajim.interface.msg_win_mgr.get_control(room_jid, account) room_ctrl = gajim.interface.msg_win_mgr.get_gc_control(room_jid, account)
if gajim.interface.minimized_controls[account].has_key(room_jid): if gajim.interface.minimized_controls[account].has_key(room_jid):
room_ctrl = gajim.interface.minimized_controls[account][room_jid] room_ctrl = gajim.interface.minimized_controls[account][room_jid]
self.room_name = room_ctrl.name self.room_name = room_ctrl.name
@ -448,9 +448,9 @@ class GroupchatControl(ChatControlBase):
'state_muc_msg_color') 'state_muc_msg_color')
if color_name: if color_name:
color = gtk.gdk.colormap_get_system().alloc_color(color_name) color = gtk.gdk.colormap_get_system().alloc_color(color_name)
label_str = self.name label_str = self.name
# count waiting highlighted messages # count waiting highlighted messages
unread = '' unread = ''
num_unread = self.get_nb_unread() num_unread = self.get_nb_unread()
@ -604,9 +604,11 @@ class GroupchatControl(ChatControlBase):
no_queue = len(gajim.events.get_events(self.account, fjid)) == 0 no_queue = len(gajim.events.get_events(self.account, fjid)) == 0
# We print if window is opened # We print if window is opened
pm_control = gajim.interface.msg_win_mgr.get_control(fjid, self.account) pm_control = gajim.interface.msg_win_mgr.get_control(fjid, self.account, session)
if pm_control: if pm_control:
pm_control.print_conversation(msg, tim = tim, xhtml = xhtml) pm_control.print_conversation(msg, tim = tim, xhtml = xhtml)
return return
event = gajim.events.create_event('pm', (msg, '', 'incoming', tim, event = gajim.events.create_event('pm', (msg, '', 'incoming', tim,
@ -883,7 +885,7 @@ class GroupchatControl(ChatControlBase):
def on_send_pm(self, widget = None, model = None, iter = None, nick = None, def on_send_pm(self, widget = None, model = None, iter = None, nick = None,
msg = None): msg = None):
'''opens a chat window and msg is not None sends private message to a '''opens a chat window and if 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[iter][C_NICK].decode('utf-8') nick = model[iter][C_NICK].decode('utf-8')
@ -1603,7 +1605,7 @@ class GroupchatControl(ChatControlBase):
for nick in nick_list: for nick in nick_list:
# Update pm chat window # Update pm chat window
fjid = self.room_jid + '/' + nick fjid = self.room_jid + '/' + nick
ctrl = gajim.interface.msg_win_mgr.get_control(fjid, self.account) ctrl = gajim.interface.msg_win_mgr.get_gc_control(fjid, self.account)
if ctrl: if ctrl:
contact = gajim.contacts.get_gc_contact(self.account, self.room_jid, nick) contact = gajim.contacts.get_gc_contact(self.account, self.room_jid, nick)
contact.show = 'offline' contact.show = 'offline'
@ -2033,7 +2035,10 @@ class GroupchatControl(ChatControlBase):
if not win: if not win:
gajim.interface.roster.new_private_chat(gc_c, self.account) gajim.interface.roster.new_private_chat(gc_c, self.account)
win = gajim.interface.msg_win_mgr.get_window(nick_jid, self.account) win = gajim.interface.msg_win_mgr.get_window(nick_jid, self.account)
win.set_active_tab(nick_jid, self.account)
ctrl = win.get_controls(nick_jid, self.account)[0]
win.set_active_tab(ctrl)
win.window.present() win.window.present()
def on_row_activated(self, widget, path): def on_row_activated(self, widget, path):

View file

@ -3927,6 +3927,9 @@ class RosterWindow:
if not mw: if not mw:
mw = gajim.interface.msg_win_mgr.create_window(contact, account, type_) mw = gajim.interface.msg_win_mgr.create_window(contact, account, type_)
if not session:
session = gajim.connections[account].get_session(fjid, None, 'pm')
chat_control = PrivateChatControl(mw, gc_contact, contact, account, session) chat_control = PrivateChatControl(mw, gc_contact, contact, account, session)
mw.new_tab(chat_control) mw.new_tab(chat_control)
if len(gajim.events.get_events(account, fjid)): if len(gajim.events.get_events(account, fjid)):

View file

@ -107,19 +107,18 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
if gajim.jid_is_transport(jid): if gajim.jid_is_transport(jid):
jid = jid.replace('@', '') jid = jid.replace('@', '')
#groupchat_control = gajim.interface.msg_win_mgr.get_control(jid, self.conn.name) groupchat_control = gajim.interface.msg_win_mgr.get_gc_control(jid, self.conn.name)
# XXX fixme if not groupchat_control and \
# if not groupchat_control and \ jid in gajim.interface.minimized_controls[self.conn.name]:
# jid in gajim.interface.minimized_controls[self.conn.name]: groupchat_control = self.minimized_controls[self.conn.name][jid]
# groupchat_control = self.minimized_controls[self.conn.name][jid]
pm = False pm = False
# if groupchat_control and groupchat_control.type_id == \ if groupchat_control and groupchat_control.type_id == \
# message_control.TYPE_GC: message_control.TYPE_GC:
# It's a Private message # It's a Private message
# pm = True pm = True
# msg_type = 'pm' msg_type = 'pm'
jid_of_control = full_jid_with_resource jid_of_control = full_jid_with_resource
@ -134,7 +133,7 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
contact.chatstate = chatstate contact.chatstate = chatstate
if contact.our_chatstate == 'ask': # we were jep85 disco? if contact.our_chatstate == 'ask': # we were jep85 disco?
contact.our_chatstate = 'active' # no more contact.our_chatstate = 'active' # no more
#self.control.handle_incoming_chatstate() XXX self.control.handle_incoming_chatstate()
elif contact.chatstate != 'active': elif contact.chatstate != 'active':
# got no valid jep85 answer, peer does not support it # got no valid jep85 answer, peer does not support it
contact.chatstate = False contact.chatstate = False
@ -168,8 +167,8 @@ class ChatControlSession(stanza_session.EncryptedStanzaSession):
if pm: if pm:
nickname = resource nickname = resource
groupchat_control.on_private_message(nickname, msgtxt, array[2], groupchat_control.on_private_message(nickname, msgtxt, tim,
xhtml, session, msg_id) xhtml, self, msg_id)
else: else:
self.roster_message(jid, msgtxt, tim, encrypted, msg_type, self.roster_message(jid, msgtxt, tim, encrypted, msg_type,
subject, resource, msg_id, user_nick, advanced_notif_num, subject, resource, msg_id, user_nick, advanced_notif_num,