systray.add_jid and systray.remove_jid now have another argument: the typ of message: ('gc' or 'chat' or 'single_chat' or 'pm')
systary now can handle pm messages
This commit is contained in:
parent
8cc1bd3cea
commit
63c890da2b
23
src/chat.py
23
src/chat.py
|
@ -264,6 +264,12 @@ class Chat:
|
||||||
nickname.set_max_width_chars(10)
|
nickname.set_max_width_chars(10)
|
||||||
nickname.set_text(unread + self.names[jid])
|
nickname.set_text(unread + self.names[jid])
|
||||||
|
|
||||||
|
def get_type(self, jid):
|
||||||
|
if self.widget_name == 'groupchat_window':
|
||||||
|
return 'gc'
|
||||||
|
if gajim.contacts[self.account].has_key(jid):
|
||||||
|
return 'chat'
|
||||||
|
return 'pm'
|
||||||
|
|
||||||
def on_window_destroy(self, widget, kind): #kind is 'chats' or 'gc'
|
def on_window_destroy(self, widget, kind): #kind is 'chats' or 'gc'
|
||||||
'''clean self.plugin.windows[self.account][kind]'''
|
'''clean self.plugin.windows[self.account][kind]'''
|
||||||
|
@ -275,7 +281,8 @@ class Chat:
|
||||||
gobject.source_remove(self.possible_paused_timeout_id[jid])
|
gobject.source_remove(self.possible_paused_timeout_id[jid])
|
||||||
gobject.source_remove(self.possible_inactive_timeout_id[jid])
|
gobject.source_remove(self.possible_inactive_timeout_id[jid])
|
||||||
if self.plugin.systray_enabled and self.nb_unread[jid] > 0:
|
if self.plugin.systray_enabled and self.nb_unread[jid] > 0:
|
||||||
self.plugin.systray.remove_jid(jid, self.account)
|
self.plugin.systray.remove_jid(jid, self.account,
|
||||||
|
self.get_type(jid))
|
||||||
del windows[jid]
|
del windows[jid]
|
||||||
if self.print_time_timeout_id.has_key(jid):
|
if self.print_time_timeout_id.has_key(jid):
|
||||||
gobject.source_remove(self.print_time_timeout_id[jid])
|
gobject.source_remove(self.print_time_timeout_id[jid])
|
||||||
|
@ -321,7 +328,8 @@ class Chat:
|
||||||
self.nb_unread[jid] = 0 + self.get_specific_unread(jid)
|
self.nb_unread[jid] = 0 + self.get_specific_unread(jid)
|
||||||
self.show_title()
|
self.show_title()
|
||||||
if self.plugin.systray_enabled:
|
if self.plugin.systray_enabled:
|
||||||
self.plugin.systray.remove_jid(jid, self.account)
|
self.plugin.systray.remove_jid(jid, self.account,
|
||||||
|
self.get_type(jid))
|
||||||
|
|
||||||
'''TC/GC window received focus, so if we had urgency REMOVE IT
|
'''TC/GC window received focus, so if we had urgency REMOVE IT
|
||||||
NOTE: we do not have to read the message (it maybe in a bg tab)
|
NOTE: we do not have to read the message (it maybe in a bg tab)
|
||||||
|
@ -485,7 +493,8 @@ class Chat:
|
||||||
self.redraw_tab(new_jid)
|
self.redraw_tab(new_jid)
|
||||||
self.show_title()
|
self.show_title()
|
||||||
if self.plugin.systray_enabled:
|
if self.plugin.systray_enabled:
|
||||||
self.plugin.systray.remove_jid(new_jid, self.account)
|
self.plugin.systray.remove_jid(new_jid, self.account,
|
||||||
|
self.get_type(new_jid))
|
||||||
|
|
||||||
conversation_textview.grab_focus()
|
conversation_textview.grab_focus()
|
||||||
|
|
||||||
|
@ -521,7 +530,8 @@ class Chat:
|
||||||
if self.nb_unread[jid] > 0:
|
if self.nb_unread[jid] > 0:
|
||||||
self.nb_unread[jid] = 0
|
self.nb_unread[jid] = 0
|
||||||
if self.plugin.systray_enabled:
|
if self.plugin.systray_enabled:
|
||||||
self.plugin.systray.remove_jid(jid, self.account)
|
self.plugin.systray.remove_jid(jid, self.account,
|
||||||
|
self.get_type(jid))
|
||||||
if self.print_time_timeout_id.has_key(jid):
|
if self.print_time_timeout_id.has_key(jid):
|
||||||
gobject.source_remove(self.print_time_timeout_id[jid])
|
gobject.source_remove(self.print_time_timeout_id[jid])
|
||||||
del self.print_time_timeout_id[jid]
|
del self.print_time_timeout_id[jid]
|
||||||
|
@ -840,7 +850,8 @@ class Chat:
|
||||||
self.redraw_tab(jid)
|
self.redraw_tab(jid)
|
||||||
self.show_title()
|
self.show_title()
|
||||||
if self.plugin.systray_enabled:
|
if self.plugin.systray_enabled:
|
||||||
self.plugin.systray.remove_jid(jid, self.account)
|
self.plugin.systray.remove_jid(jid, self.account,
|
||||||
|
self.get_type(jid))
|
||||||
|
|
||||||
def on_conversation_textview_motion_notify_event(self, widget, event):
|
def on_conversation_textview_motion_notify_event(self, widget, event):
|
||||||
'''change the cursor to a hand when we are over a mail or an url'''
|
'''change the cursor to a hand when we are over a mail or an url'''
|
||||||
|
@ -1307,7 +1318,7 @@ class Chat:
|
||||||
self.nb_unread[jid] += 1
|
self.nb_unread[jid] += 1
|
||||||
if self.plugin.systray_enabled and gajim.config.get(
|
if self.plugin.systray_enabled and gajim.config.get(
|
||||||
'trayicon_notification_on_new_messages'):
|
'trayicon_notification_on_new_messages'):
|
||||||
self.plugin.systray.add_jid(jid, self.account)
|
self.plugin.systray.add_jid(jid, self.account, self.get_type(jid))
|
||||||
self.redraw_tab(jid)
|
self.redraw_tab(jid)
|
||||||
self.show_title(urgent)
|
self.show_title(urgent)
|
||||||
|
|
||||||
|
|
|
@ -1259,7 +1259,6 @@ current room topic.') % command, room_jid)
|
||||||
qs[fjid] = []
|
qs[fjid] = []
|
||||||
qs[fjid].append((msg, 'incoming', tim, False)) # False is for encrypted
|
qs[fjid].append((msg, 'incoming', tim, False)) # False is for encrypted
|
||||||
self.nb_unread[room_jid] += 1
|
self.nb_unread[room_jid] += 1
|
||||||
#FIXME: when we scroll to end we set nb_unread to 0
|
|
||||||
|
|
||||||
autopopup = gajim.config.get('autopopup')
|
autopopup = gajim.config.get('autopopup')
|
||||||
autopopupaway = gajim.config.get('autopopupaway')
|
autopopupaway = gajim.config.get('autopopupaway')
|
||||||
|
@ -1272,6 +1271,8 @@ current room topic.') % command, room_jid)
|
||||||
state_images = self.plugin.roster.get_appropriate_state_images(room_jid)
|
state_images = self.plugin.roster.get_appropriate_state_images(room_jid)
|
||||||
image = state_images['message']
|
image = state_images['message']
|
||||||
model[iter][C_IMG] = image
|
model[iter][C_IMG] = image
|
||||||
|
if self.plugin.systray_enabled:
|
||||||
|
self.plugin.systray.add_jid(fjid, self.account, 'pm')
|
||||||
self.show_title()
|
self.show_title()
|
||||||
else:
|
else:
|
||||||
show = gajim.gc_contacts[self.account][room_jid][nick].show
|
show = gajim.gc_contacts[self.account][room_jid][nick].show
|
||||||
|
|
|
@ -1540,7 +1540,7 @@ _('If "%s" accepts this request you will know his status.') %jid)
|
||||||
model = self.tree.get_model()
|
model = self.tree.get_model()
|
||||||
self.draw_contact(jid, account)
|
self.draw_contact(jid, account)
|
||||||
if self.plugin.systray_enabled:
|
if self.plugin.systray_enabled:
|
||||||
self.plugin.systray.add_jid(jid, account)
|
self.plugin.systray.add_jid(jid, account, 'chat')
|
||||||
self.show_title() # we show the * or [n]
|
self.show_title() # we show the * or [n]
|
||||||
if not path:
|
if not path:
|
||||||
self.add_contact_to_roster(jid, account)
|
self.add_contact_to_roster(jid, account)
|
||||||
|
|
|
@ -26,6 +26,7 @@ import os
|
||||||
|
|
||||||
import tooltips
|
import tooltips
|
||||||
|
|
||||||
|
from gajim import Contact
|
||||||
from common import gajim
|
from common import gajim
|
||||||
from common import helpers
|
from common import helpers
|
||||||
from common import i18n
|
from common import i18n
|
||||||
|
@ -53,7 +54,7 @@ class Systray:
|
||||||
|
|
||||||
def __init__(self, plugin):
|
def __init__(self, plugin):
|
||||||
self.plugin = plugin
|
self.plugin = plugin
|
||||||
self.jids = []
|
self.jids = [] # Contain things like [account, jid, type_of_msg]
|
||||||
self.new_message_handler_id = None
|
self.new_message_handler_id = None
|
||||||
self.t = None
|
self.t = None
|
||||||
self.img_tray = gtk.Image()
|
self.img_tray = gtk.Image()
|
||||||
|
@ -73,8 +74,8 @@ class Systray:
|
||||||
elif image.get_storage_type() == gtk.IMAGE_PIXBUF:
|
elif image.get_storage_type() == gtk.IMAGE_PIXBUF:
|
||||||
self.img_tray.set_from_pixbuf(image.get_pixbuf())
|
self.img_tray.set_from_pixbuf(image.get_pixbuf())
|
||||||
|
|
||||||
def add_jid(self, jid, account):
|
def add_jid(self, jid, account, typ):
|
||||||
l = [account, jid]
|
l = [account, jid, typ]
|
||||||
if not l in self.jids:
|
if not l in self.jids:
|
||||||
self.jids.append(l)
|
self.jids.append(l)
|
||||||
self.set_img()
|
self.set_img()
|
||||||
|
@ -88,8 +89,8 @@ class Systray:
|
||||||
if jid != 'tabbed':
|
if jid != 'tabbed':
|
||||||
nb += jids[jid].nb_unread[jid]
|
nb += jids[jid].nb_unread[jid]
|
||||||
|
|
||||||
def remove_jid(self, jid, account):
|
def remove_jid(self, jid, account, typ):
|
||||||
l = [account, jid]
|
l = [account, jid, typ]
|
||||||
if l in self.jids:
|
if l in self.jids:
|
||||||
self.jids.remove(l)
|
self.jids.remove(l)
|
||||||
self.set_img()
|
self.set_img()
|
||||||
|
@ -260,17 +261,31 @@ class Systray:
|
||||||
else:
|
else:
|
||||||
account = self.jids[0][0]
|
account = self.jids[0][0]
|
||||||
jid = self.jids[0][1]
|
jid = self.jids[0][1]
|
||||||
acc = self.plugin.windows[account]
|
typ = self.jids[0][2]
|
||||||
|
wins = self.plugin.windows[account]
|
||||||
w = None
|
w = None
|
||||||
if acc['gc'].has_key(jid):
|
if typ == 'gc':
|
||||||
w = acc['gc'][jid]
|
if wins['gc'].has_key(jid):
|
||||||
elif acc['chats'].has_key(jid):
|
w = wins['gc'][jid]
|
||||||
w = acc['chats'][jid]
|
elif typ == 'chat':
|
||||||
|
if wins['chats'].has_key(jid):
|
||||||
|
w = wins['chats'][jid]
|
||||||
else:
|
else:
|
||||||
self.plugin.roster.new_chat(
|
self.plugin.roster.new_chat(
|
||||||
gajim.contacts[account][jid][0], account)
|
gajim.contacts[account][jid][0], account)
|
||||||
acc['chats'][jid].set_active_tab(jid)
|
w = wins['chats'][jid]
|
||||||
acc['chats'][jid].window.present()
|
elif typ == 'single_chat':
|
||||||
|
pass
|
||||||
|
elif typ == 'pm':
|
||||||
|
if wins['chats'].has_key(jid):
|
||||||
|
w = wins['chats'][jid]
|
||||||
|
else:
|
||||||
|
room_jid, nick = jid.split('/', 1)
|
||||||
|
show = gajim.gc_contacts[account][room_jid][nick].show
|
||||||
|
c = Contact(jid = jid, name = nick, groups = ['none'],
|
||||||
|
show = show, ask = 'none')
|
||||||
|
self.plugin.roster.new_chat(c, account)
|
||||||
|
w = wins['chats'][jid]
|
||||||
if w:
|
if w:
|
||||||
w.set_active_tab(jid)
|
w.set_active_tab(jid)
|
||||||
w.window.present()
|
w.window.present()
|
||||||
|
|
|
@ -250,8 +250,8 @@ class SystrayWin32(systray.Systray):
|
||||||
elif lparam == win32con.WM_LBUTTONUP: # Left click
|
elif lparam == win32con.WM_LBUTTONUP: # Left click
|
||||||
self.on_left_click()
|
self.on_left_click()
|
||||||
|
|
||||||
def add_jid(self, jid, account):
|
def add_jid(self, jid, account, typ):
|
||||||
l = [account, jid]
|
l = [account, jid, typ]
|
||||||
if not l in self.jids:
|
if not l in self.jids:
|
||||||
self.jids.append(l)
|
self.jids.append(l)
|
||||||
self.set_img()
|
self.set_img()
|
||||||
|
@ -272,8 +272,8 @@ class SystrayWin32(systray.Systray):
|
||||||
|
|
||||||
self.systray_winapi.notify_icon.set_tooltip(text)
|
self.systray_winapi.notify_icon.set_tooltip(text)
|
||||||
|
|
||||||
def remove_jid(self, jid, account):
|
def remove_jid(self, jid, account, typ):
|
||||||
l = [account, jid]
|
l = [account, jid, typ]
|
||||||
if l in self.jids:
|
if l in self.jids:
|
||||||
self.jids.remove(l)
|
self.jids.remove(l)
|
||||||
self.set_img()
|
self.set_img()
|
||||||
|
|
|
@ -722,15 +722,17 @@ timestamp, contact):
|
||||||
else:
|
else:
|
||||||
self.plugin.roster.show_title()
|
self.plugin.roster.show_title()
|
||||||
del gajim.awaiting_messages[self.account][jid]
|
del gajim.awaiting_messages[self.account][jid]
|
||||||
|
typ = 'chat' # Is it a normal chat or a pm ?
|
||||||
# reset to status image in gc if it is a pm
|
# reset to status image in gc if it is a pm
|
||||||
room_jid = jid.split('/', 1)[0]
|
room_jid = jid.split('/', 1)[0]
|
||||||
gcs = self.plugin.windows[self.account]['gc']
|
gcs = self.plugin.windows[self.account]['gc']
|
||||||
if gcs.has_key(room_jid):
|
if gcs.has_key(room_jid):
|
||||||
gcs[room_jid].update_state_images()
|
gcs[room_jid].update_state_images()
|
||||||
|
typ = 'pm'
|
||||||
|
|
||||||
self.plugin.roster.draw_contact(jid, self.account)
|
self.plugin.roster.draw_contact(jid, self.account)
|
||||||
if self.plugin.systray_enabled:
|
if self.plugin.systray_enabled:
|
||||||
self.plugin.systray.remove_jid(jid, self.account)
|
self.plugin.systray.remove_jid(jid, self.account, typ)
|
||||||
showOffline = gajim.config.get('showoffline')
|
showOffline = gajim.config.get('showoffline')
|
||||||
if (user.show == 'offline' or user.show == 'error') and \
|
if (user.show == 'offline' or user.show == 'error') and \
|
||||||
not showOffline:
|
not showOffline:
|
||||||
|
|
Loading…
Reference in New Issue