diff --git a/src/common/pep.py b/src/common/pep.py index 0e1bd4005ee763d1644bc3b7673a59e370e30018..69dd9e208f5b481ba16e3e1ba7207354c4b992d0 100644 --- a/src/common/pep.py +++ b/src/common/pep.py @@ -163,11 +163,10 @@ def user_mood(items, name, jid): if jid == gajim.get_jid_from_account(name): gajim.interface.roster.draw_account(name) - else: - gajim.interface.roster.draw_mood(user, name) - ctrl = gajim.interface.msg_win_mgr.get_control(user, name) - if ctrl: - ctrl.update_mood() + gajim.interface.roster.draw_mood(user, name) + ctrl = gajim.interface.msg_win_mgr.get_control(user, name) + if ctrl: + ctrl.update_mood() def user_tune(items, name, jid): has_child = False @@ -268,11 +267,10 @@ def user_tune(items, name, jid): if jid == gajim.get_jid_from_account(name): gajim.interface.roster.draw_account(name) - else: - gajim.interface.roster.draw_tune(user, name) - ctrl = gajim.interface.msg_win_mgr.get_control(user, name) - if ctrl: - ctrl.update_tune() + gajim.interface.roster.draw_tune(user, name) + ctrl = gajim.interface.msg_win_mgr.get_control(user, name) + if ctrl: + ctrl.update_tune() def user_geoloc(items, name, jid): pass @@ -346,8 +344,7 @@ def user_activity(items, name, jid): if jid == gajim.get_jid_from_account(name): gajim.interface.roster.draw_account(name) - else: - gajim.interface.roster.draw_activity(user, name) + gajim.interface.roster.draw_activity(user, name) ctrl = gajim.interface.msg_win_mgr.get_control(user, name) if ctrl: ctrl.update_activity() @@ -468,4 +465,4 @@ def user_retract_tune(account): def user_retract_nickname(account): gajim.connections[account].send_pb_retract('', xmpp.NS_NICK, '0') -# vim: se ts=3: \ No newline at end of file +# vim: se ts=3: diff --git a/src/gajim.py b/src/gajim.py index 7d49236964cb91f7344e1a6927fd09f9a8e297b5..06b2e7cd228effeddd11823827dcecf43ef5259c 100755 --- a/src/gajim.py +++ b/src/gajim.py @@ -655,8 +655,8 @@ def handle_event_notify(self, account, array): # FIXME: Drop and rewrite... - statuss = ['offline', 'error', 'online', 'chat', 'away', 'xa', - 'dnd', 'invisible'] + statuss = ['offline', 'error', 'online', 'chat', 'away', 'xa', 'dnd', + 'invisible'] # Ignore invalid show if array[1] not in statuss: return @@ -668,8 +668,7 @@ def handle_event_notify(self, account, array): contact_nickname = array[7] # Get the proper keyID - keyID = helpers.prepare_and_validate_gpg_keyID(account, - jid, keyID) + keyID = helpers.prepare_and_validate_gpg_keyID(account, jid, keyID) resource = array[3] if not resource: @@ -685,6 +684,8 @@ def handle_event_notify(self, account, array): get_contact_with_highest_priority(account, jid) was_highest = (highest and highest.resource == resource) + conn = gajim.connections[account] + # Update contact jid_list = gajim.contacts.get_jid_list(account) if ji in jid_list or jid == gajim.get_jid_from_account(account): @@ -706,42 +707,32 @@ def handle_event_notify(self, account, array): contact1.contact_name = contact_nickname self.roster.draw_contact(jid, account) - if old_show == new_show and \ - contact1.status == status_message and \ + if old_show == new_show and contact1.status == status_message and \ contact1.priority == priority: # no change return else: - contact1 = gajim.contacts. \ - get_first_contact_from_jid(account, ji) + contact1 = gajim.contacts.get_first_contact_from_jid(account, ji) if not contact1: # Presence of another resource of our # jid # Create self contact and add to roster - if resource == gajim.connections \ - [account].server_resource: + if resource == conn.server_resource: return - contact1 = gajim.contacts. \ - create_contact(jid=ji, - name=gajim.nicks[account], - groups=['self_contact'], - show=array[1], - status=status_message, - sub='both', ask='none', - priority=priority, keyID=keyID, - resource=resource) + contact1 = gajim.contacts.create_contact(jid=ji, + name=gajim.nicks[account], groups=['self_contact'], + show=array[1], status=status_message, sub='both', ask='none', + priority=priority, keyID=keyID, resource=resource, + mood=conn.mood, tune=conn.tune, activity=conn.activity) old_show = 0 - gajim.contacts.add_contact(account, - contact1) + gajim.contacts.add_contact(account, contact1) lcontact.append(contact1) elif contact1.show in statuss: old_show = statuss.index(contact1.show) # FIXME: What am I? - if (resources != [''] and (len(lcontact) != 1 or - lcontact[0].show != 'offline')) and \ - jid.find('@') > 0: + if (resources != [''] and (len(lcontact) != 1 or \ + lcontact[0].show != 'offline')) and jid.find('@') > 0: old_show = 0 - contact1 = gajim.contacts. \ - copy_contact(contact1) + contact1 = gajim.contacts.copy_contact(contact1) lcontact.append(contact1) contact1.resource = resource @@ -750,31 +741,19 @@ def handle_event_notify(self, account, array): if contact1.jid.find('@') > 0 and len(lcontact) == 1: # It's not an agent if old_show == 0 and new_show > 1: - if not contact1.jid in \ - gajim.newly_added[account]: - gajim.newly_added[account]. \ - append(contact1.jid) - if contact1.jid in \ - gajim.to_be_removed[account]: - gajim.to_be_removed[account]. \ - remove(contact1.jid) - gobject.timeout_add_seconds(5, self. \ - roster.remove_newly_added, + if not contact1.jid in gajim.newly_added[account]: + gajim.newly_added[account].append(contact1.jid) + if contact1.jid in gajim.to_be_removed[account]: + gajim.to_be_removed[account].remove(contact1.jid) + gobject.timeout_add_seconds(5, self.roster.remove_newly_added, contact1.jid, account) - elif old_show > 1 and new_show == 0 and \ - gajim.connections[account].connected > 1: - if not contact1.jid in \ - gajim.to_be_removed[account]: - gajim.to_be_removed[account]. \ - append(contact1.jid) - if contact1.jid in \ - gajim.newly_added[account]: - gajim.newly_added[account]. \ - remove(contact1.jid) - self.roster.draw_contact(contact1.jid, - account) - gobject.timeout_add_seconds(5, self. \ - roster.remove_to_be_removed, + elif old_show > 1 and new_show == 0 and conn.connected > 1: + if not contact1.jid in gajim.to_be_removed[account]: + gajim.to_be_removed[account].append(contact1.jid) + if contact1.jid in gajim.newly_added[account]: + gajim.newly_added[account].remove(contact1.jid) + self.roster.draw_contact(contact1.jid, account) + gobject.timeout_add_seconds(5, self.roster.remove_to_be_removed, contact1.jid, account) contact1.show = array[1] contact1.status = status_message @@ -794,33 +773,25 @@ def handle_event_notify(self, account, array): # Update existing iter and group counting self.roster.draw_contact(ji, account) self.roster.draw_group(_('Transports'), account) - if new_show > 1 and ji in \ - gajim.transport_avatar[account]: + if new_show > 1 and ji in gajim.transport_avatar[account]: # transport just signed in. # request avatars - for jid_ in gajim.transport_avatar \ - [account][ji]: - gajim.connections[account]. \ - request_vcard(jid_) + for jid_ in gajim.transport_avatar[account][ji]: + conn.request_vcard(jid_) # transport just signed in/out, don't show # popup notifications for 30s account_ji = account + '/' + ji - gajim.block_signed_in_notifications \ - [account_ji] = True + gajim.block_signed_in_notifications[account_ji] = True gobject.timeout_add_seconds(30, - self.unblock_signed_in_notifications, - account_ji) + self.unblock_signed_in_notifications, account_ji) locations = (self.instances, self.instances[account]) for location in locations: if location.has_key('add_contact'): if old_show == 0 and new_show > 1: - location['add_contact']. \ - transport_signed_in(jid) + location['add_contact'].transport_signed_in(jid) break elif old_show > 1 and new_show == 0: - location['add_contact']. \ - transport_signed_out( - jid) + location['add_contact'].transport_signed_out(jid) break elif ji in jid_list: # It isn't an agent @@ -830,8 +801,6 @@ def handle_event_notify(self, account, array): contact1.our_chatstate = contact1.chatstate = \ contact1.composing_xep = None - conn = gajim.connections[account] - # TODO: This causes problems when another # resource signs off! conn.remove_transfers_for_contact(contact1) @@ -855,44 +824,35 @@ def handle_event_notify(self, account, array): conn.delete_session(jid, sess.thread_id) - self.roster.chg_contact_status(contact1, array[1], - status_message, account) + self.roster.chg_contact_status(contact1, array[1], status_message, + account) # Notifications if old_show < 2 and new_show > 1: - notify.notify('contact_connected', jid, - account, status_message) + notify.notify('contact_connected', jid, account, status_message) if self.remote_ctrl: - self.remote_ctrl.raise_signal( - 'ContactPresence', - (account, array)) + self.remote_ctrl.raise_signal('ContactPresence', (account, + array)) elif old_show > 1 and new_show < 2: - notify.notify('contact_disconnected', jid, - account, status_message) + notify.notify('contact_disconnected', jid, account, status_message) if self.remote_ctrl: - self.remote_ctrl.raise_signal( - 'ContactAbsence', - (account, array)) + self.remote_ctrl.raise_signal('ContactAbsence', (account, array)) # FIXME: stop non active file transfers # Status change (not connected/disconnected or # error (<1)) elif new_show > 1: - notify.notify('status_change', jid, account, - [new_show, status_message]) + notify.notify('status_change', jid, account, [new_show, + status_message]) if self.remote_ctrl: - self.remote_ctrl.raise_signal( - 'ContactStatus', - (account, array)) + self.remote_ctrl.raise_signal('ContactStatus', (account, array)) else: # FIXME: MSN transport (CMSN1.2.1 and PyMSN) don't # follow the XEP, still the case in 2008. # It's maybe a GC_NOTIFY (specialy for MSN gc) - self.handle_event_gc_notify(account, (jid, array[1], - status_message, array[3], None, None, None, - None, None, [], None, None)) + self.handle_event_gc_notify(account, (jid, array[1], status_message, + array[3], None, None, None, None, None, [], None, None)) - highest = gajim.contacts.get_contact_with_highest_priority( - account, jid) + highest = gajim.contacts.get_contact_with_highest_priority(account, jid) is_highest = (highest and highest.resource == resource) if was_highest and not is_highest: