[kepi] ability to use subkeys. Fixes #6051
[gajim.git] / src / network_manager_listener.py
blob303c1488b5d915e1475e9dde0db9a2b379c0d8a5
1 # -*- coding: utf-8 -*-
2 ## src/network_manager_listener.py
3 ##
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>
8 ##
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/>.
24 import sys
25 from common import gajim
28 def device_now_active(self, *args):
29 """
30 For Network Manager 0.6
31 """
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):
38 """
39 For Network Manager 0.6
40 """
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):
47 """
48 For Network Manager 0.7
49 """
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()
55 else:
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()
61 supported = False
63 from common import dbus_support
65 if dbus_support.supported:
66 import dbus
67 import dbus.glib
69 try:
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,
79 'StateChanged',
80 'org.freedesktop.NetworkManager',
81 'org.freedesktop.NetworkManager',
82 '/org/freedesktop/NetworkManager')
83 supported = True
85 except dbus.DBusException:
86 try:
87 if 'org.freedesktop.NetworkManager' in bus.list_names():
88 supported = True
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,
97 'DeviceNowActive',
98 'org.freedesktop.NetworkManager',
99 'org.freedesktop.NetworkManager',
100 '/org/freedesktop/NetworkManager')
101 except Exception:
102 pass