1 # -*- coding: utf-8 -*-
2 ## src/network_manager_listener.py
4 ## Copyright (C) 2006 Jeffrey C. Ollie <jeff AT ocjtech.us>
5 ## Nikos Kouremenos <kourem AT gmail.com>
6 ## Stefan Bethge <stefan AT lanpartei.de>
7 ## Copyright (C) 2006-2010 Yann Leboulanger <asterix AT lagaule.org>
9 ## This file is part of Gajim.
11 ## Gajim is free software; you can redistribute it and/or modify
12 ## it under the terms of the GNU General Public License as published
13 ## by the Free Software Foundation; version 3 only.
15 ## Gajim is distributed in the hope that it will be useful,
16 ## but WITHOUT ANY WARRANTY; without even the implied warranty of
17 ## MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18 ## GNU General Public License for more details.
20 ## You should have received a copy of the GNU General Public License
21 ## along with Gajim. If not, see <http://www.gnu.org/licenses/>.
25 from common
import gajim
28 def device_now_active(self
, *args
):
30 For Network Manager 0.6
32 for connection
in gajim
.connections
.itervalues():
33 if gajim
.config
.get_per('accounts', connection
.name
,
34 'listen_to_network_manager') and connection
.time_to_reconnect
:
35 connection
._reconnect
()
37 def device_no_longer_active(self
, *args
):
39 For Network Manager 0.6
41 for connection
in gajim
.connections
.itervalues():
42 if gajim
.config
.get_per('accounts', connection
.name
,
43 'listen_to_network_manager') and connection
.connected
> 1:
44 connection
._disconnectedReconnCB
()
46 def state_changed(state
):
48 For Network Manager 0.7
50 if props
.Get("org.freedesktop.NetworkManager", "State") == 3:
51 for connection
in gajim
.connections
.itervalues():
52 if gajim
.config
.get_per('accounts', connection
.name
,
53 'listen_to_network_manager') and connection
.time_to_reconnect
:
54 connection
._reconnect
()
56 for connection
in gajim
.connections
.itervalues():
57 if gajim
.config
.get_per('accounts', connection
.name
,
58 'listen_to_network_manager') and connection
.connected
> 1:
59 connection
._disconnectedReconnCB
()
63 from common
import dbus_support
65 if dbus_support
.supported
:
70 from common
.dbus_support
import system_bus
72 bus
= system_bus
.bus()
74 if 'org.freedesktop.NetworkManager' in bus
.list_names():
75 nm_object
= bus
.get_object('org.freedesktop.NetworkManager',
76 '/org/freedesktop/NetworkManager')
77 props
= dbus
.Interface(nm_object
, "org.freedesktop.DBus.Properties")
78 bus
.add_signal_receiver(state_changed
,
80 'org.freedesktop.NetworkManager',
81 'org.freedesktop.NetworkManager',
82 '/org/freedesktop/NetworkManager')
85 except dbus
.DBusException
:
87 if 'org.freedesktop.NetworkManager' in bus
.list_names():
90 bus
.add_signal_receiver(device_no_longer_active
,
91 'DeviceNoLongerActive',
92 'org.freedesktop.NetworkManager',
93 'org.freedesktop.NetworkManager',
94 '/org/freedesktop/NetworkManager')
96 bus
.add_signal_receiver(device_now_active
,
98 'org.freedesktop.NetworkManager',
99 'org.freedesktop.NetworkManager',
100 '/org/freedesktop/NetworkManager')