Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
gajim
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
eta
gajim
Commits
229006a2
Commit
229006a2
authored
16 years ago
by
js
Browse files
Options
Downloads
Patches
Plain Diff
Coding style.
parent
6239ae57
No related branches found
Branches containing commit
No related tags found
Tags containing commit
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
src/gajim.py
+106
-59
106 additions, 59 deletions
src/gajim.py
with
106 additions
and
59 deletions
src/gajim.py
+
106
−
59
View file @
229006a2
...
...
@@ -589,15 +589,15 @@ class Interface:
gajim
.
connections
[
account
].
request_vcard
(
jid
)
def
handle_event_notify
(
self
,
account
,
array
):
# 'NOTIFY' (account, (jid, status, status message, resource,
priority,
# keyID, timestamp, contact_nickname))
# 'NOTIFY' (account, (jid, status, status message, resource,
#
priority, #
keyID, timestamp, contact_nickname))
#
# Contact changed show
# 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
...
...
@@ -622,7 +622,8 @@ class Interface:
else
:
ji
=
jid
highest
=
gajim
.
contacts
.
get_contact_with_highest_priority
(
account
,
jid
)
highest
=
gajim
.
contacts
.
\
get_contact_with_highest_priority
(
account
,
jid
)
was_highest
=
(
highest
and
highest
.
resource
==
resource
)
# Update contact
...
...
@@ -646,30 +647,42 @@ class Interface:
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 SelfContact and add to roster
if
resource
==
gajim
.
connections
[
account
].
server_resource
:
# Presence of another resource of our
# jid
# Create self contact and add to roster
if
resource
==
gajim
.
connections
\
[
account
].
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
)
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
A
m I?
# FIXME: What
a
m I?
if
(
resources
!=
[
''
]
and
(
len
(
lcontact
)
!=
1
or
lcontact
[
0
].
show
!=
'
offline
'
))
and
jid
.
find
(
'
@
'
)
>
0
:
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
...
...
@@ -678,20 +691,31 @@ class Interface:
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
\
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
,
contact1
.
jid
,
account
)
contact1
.
show
=
array
[
1
]
contact1
.
status
=
status_message
...
...
@@ -710,24 +734,33 @@ class Interface:
if
ji
in
jid_list
:
# Update existing iter
self
.
roster
.
draw_contact
(
ji
,
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_
)
# transport just signed in/out, don't show popup notifications
# for 30s
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_
)
# transport just signed in/out, don't show
# popup notifications for 30s
account_ji
=
account
+
'
/
'
+
ji
gajim
.
block_signed_in_notifications
[
account_ji
]
=
True
gobject
.
timeout_add_seconds
(
30
,
self
.
unblock_signed_in_notifications
,
gajim
.
block_signed_in_notifications
\
[
account_ji
]
=
True
gobject
.
timeout_add_seconds
(
30
,
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
...
...
@@ -736,34 +769,48 @@ class Interface:
if
array
[
1
]
in
(
'
offline
'
,
'
error
'
):
contact1
.
our_chatstate
=
contact1
.
chatstate
=
\
contact1
.
composing_xep
=
None
gajim
.
connections
[
account
].
remove_transfers_for_contact
(
contact1
)
self
.
roster
.
chg_contact_status
(
contact1
,
array
[
1
],
status_message
,
account
)
# TODO: This causes problems when another
# resource signs off!
gajim
.
connections
[
account
].
\
remove_transfers_for_contact
(
contact1
)
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
'
,
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
,
ccount
,
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
elif
new_show
>
1
:
# Status change (not connected/disconnected or error (<1))
notify
.
notify
(
'
status_change
'
,
jid
,
account
,
[
new_show
,
status_message
])
# Status change (not connected/disconnected or
# error (<1))
elif
new_show
>
1
:
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) doesn'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
))
highest
=
gajim
.
contacts
.
get_contact_with_highest_priority
(
account
,
jid
)
# 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
))
highest
=
gajim
.
contacts
.
get_contact_with_highest_priority
(
account
,
jid
)
is_highest
=
(
highest
and
highest
.
resource
==
resource
)
if
was_highest
and
not
is_highest
:
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment