we now have private messages ! (TODO: update the chat window when the contact change his status)

This commit is contained in:
Yann Leboulanger 2005-06-07 16:52:24 +00:00
parent 80c1dc36f2
commit 0c79775f5a
4 changed files with 41 additions and 5 deletions

View File

@ -313,7 +313,8 @@ class Chat:
if self.widget_name == 'tabbed_chat_window': if self.widget_name == 'tabbed_chat_window':
xm = gtk.glade.XML(GTKGUI_GLADE, 'chat_tab_hbox', APP) xm = gtk.glade.XML(GTKGUI_GLADE, 'chat_tab_hbox', APP)
tab_hbox = xm.get_widget('chat_tab_hbox') tab_hbox = xm.get_widget('chat_tab_hbox')
user = self.plugin.roster.contacts[self.account][jid][0] # user = self.plugin.roster.contacts[self.account][jid][0]
user = self.users[jid]
gtklabel = gtk.Label(user.name) gtklabel = gtk.Label(user.name)
gtklabel.set_property('xalign', 0) gtklabel.set_property('xalign', 0)
elif self.widget_name == 'groupchat_window': elif self.widget_name == 'groupchat_window':

View File

@ -331,6 +331,8 @@ class Interface:
elif self.windows[account]['gc'].has_key(ji): elif self.windows[account]['gc'].has_key(ji):
#it is a groupchat presence #it is a groupchat presence
#TODO: upgrade the chat instavces (for pm)
fjid = array[0] + '/' + array[3]
self.windows[account]['gc'][ji].chg_user_status(ji, resource, self.windows[account]['gc'][ji].chg_user_status(ji, resource,
array[1], array[2], array[6], array[7], array[8], array[9], array[1], array[2], array[6], array[7], array[8], array[9],
array[10], array[11], account) array[10], array[11], account)
@ -340,6 +342,24 @@ class Interface:
jid = array[0].split('/')[0] jid = array[0].split('/')[0]
if jid.find('@') <= 0: if jid.find('@') <= 0:
jid = jid.replace('@', '') jid = jid.replace('@', '')
if self.windows[account]['gc'].has_key(jid): # it's a Private Message
nick = array[0].split('/', 1)[1]
fjid = jid + '/' + nick
if not self.windows[account]['chats'].has_key(fjid):
gc = self.windows[account]['gc'][jid]
tv = gc.list_treeview[jid]
model = tv.get_model()
iter = gc.get_user_iter(jid, nick)
show = model.get_value(iter, 3)
u = User(fjid, nick, ['none'], show, '', 'none', None, '', 0,
'')
self.roster.new_chat(u, account)
chat_win = self.windows[account]['chats'][fjid]
chat_win.print_conversation(array[1], fjid, tim = array[2])
return
if gajim.config.get('ignore_unknown_contacts') and \ if gajim.config.get('ignore_unknown_contacts') and \
not self.roster.contacts[account].has_key(jid): not self.roster.contacts[account].has_key(jid):
return return

View File

@ -25,6 +25,7 @@ import time
import dialogs import dialogs
import chat import chat
import cell_renderer_image import cell_renderer_image
from gajim import User
from common import gajim from common import gajim
from common import i18n from common import i18n
@ -545,7 +546,7 @@ class Groupchat_window(chat.Chat):
'subject_entry') 'subject_entry')
self.subject_entry_tooltip[room_jid] = gtk.Tooltips() self.subject_entry_tooltip[room_jid] = gtk.Tooltips()
#status_image, nickname, real_jid, status #status_image, nickname, real_jid, show
store = gtk.TreeStore(gtk.Image, str, str, str) store = gtk.TreeStore(gtk.Image, str, str, str)
store.set_sort_column_id(1, gtk.SORT_ASCENDING) store.set_sort_column_id(1, gtk.SORT_ASCENDING)
column = gtk.TreeViewColumn('contacts') column = gtk.TreeViewColumn('contacts')
@ -620,11 +621,22 @@ class Groupchat_window(chat.Chat):
"""When an iter is double clicked: open the chat window""" """When an iter is double clicked: open the chat window"""
model = widget.get_model() model = widget.get_model()
iter = model.get_iter(path) iter = model.get_iter(path)
if len(path) == 1: if len(path) == 1: # It's a group
if (widget.row_expanded(path)): if (widget.row_expanded(path)):
widget.collapse_row(path) widget.collapse_row(path)
else: else:
widget.expand_row(path, False) widget.expand_row(path, False)
else: # We want to send a private message
room_jid = self.get_active_jid()
nick = model.get_value(iter, 1)
fjid = room_jid + '/' + nick
if not self.plugin.windows[self.account]['chats'].has_key(fjid):
show = model.get_value(iter, 3)
u = User(fjid, nick, ['none'], show, '', 'none', None, '', 0,
'')
self.plugin.roster.new_chat(u, self.account)
self.plugin.windows[self.account]['chats'][fjid].set_active_tab(fjid)
self.plugin.windows[self.account]['chats'][fjid].window.present()
def on_list_treeview_row_expanded(self, widget, iter, path): def on_list_treeview_row_expanded(self, widget, iter, path):
"""When a row is expanded: change the icon of the arrow""" """When a row is expanded: change the icon of the arrow"""

View File

@ -92,7 +92,10 @@ class Tabbed_chat_window(chat.Chat):
def set_state_image(self, jid): def set_state_image(self, jid):
prio = 0 prio = 0
list_users = self.plugin.roster.contacts[self.account][jid] if self.plugin.roster.contacts[self.account].has_key(jid):
list_users = self.plugin.roster.contacts[self.account][jid]
else:
list_users = [self.users[jid]]
user = list_users[0] user = list_users[0]
show = user.show show = user.show
jid = user.jid jid = user.jid
@ -180,10 +183,10 @@ class Tabbed_chat_window(chat.Chat):
self.names[user.jid] = user.name self.names[user.jid] = user.name
self.xmls[user.jid] = gtk.glade.XML(GTKGUI_GLADE, 'chats_vbox', APP) self.xmls[user.jid] = gtk.glade.XML(GTKGUI_GLADE, 'chats_vbox', APP)
self.childs[user.jid] = self.xmls[user.jid].get_widget('chats_vbox') self.childs[user.jid] = self.xmls[user.jid].get_widget('chats_vbox')
chat.Chat.new_tab(self, user.jid)
self.users[user.jid] = user self.users[user.jid] = user
self.encrypted[user.jid] = False self.encrypted[user.jid] = False
chat.Chat.new_tab(self, user.jid)
self.redraw_tab(user.jid) self.redraw_tab(user.jid)
self.draw_widgets(user) self.draw_widgets(user)