diff options
author | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2008-10-22 10:44:47 (GMT) |
---|---|---|
committer | Tomeu Vizoso <tomeu@tomeuvizoso.net> | 2008-10-22 10:44:47 (GMT) |
commit | 247cd39d53cff1fc6ee526b95f54681f7d0ab797 (patch) | |
tree | 41c094d199f7e79d30e09dc80814965b47e74ed6 /src/jarabe/model | |
parent | 520a7223f32e198bf8b633f524d52a04ac8e40ad (diff) | |
parent | 83a507cf6b306099adf49258e1b7c16781328415 (diff) |
Merge branch 'master' of git+ssh://dev.laptop.org/git/sugar
Diffstat (limited to 'src/jarabe/model')
-rw-r--r-- | src/jarabe/model/Makefile.am | 1 | ||||
-rw-r--r-- | src/jarabe/model/neighborhood.py | 36 | ||||
-rw-r--r-- | src/jarabe/model/network.py | 28 |
3 files changed, 60 insertions, 5 deletions
diff --git a/src/jarabe/model/Makefile.am b/src/jarabe/model/Makefile.am index d968602..9ab6779 100644 --- a/src/jarabe/model/Makefile.am +++ b/src/jarabe/model/Makefile.am @@ -7,6 +7,7 @@ sugar_PYTHON = \ invites.py \ owner.py \ neighborhood.py \ + network.py \ shell.py \ screen.py \ session.py \ diff --git a/src/jarabe/model/neighborhood.py b/src/jarabe/model/neighborhood.py index b8dd5c3..79b2d1e 100644 --- a/src/jarabe/model/neighborhood.py +++ b/src/jarabe/model/neighborhood.py @@ -15,6 +15,8 @@ # Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA import gobject +import gconf +import logging from sugar.graphics.xocolor import XoColor from sugar.presence import presenceservice @@ -22,6 +24,13 @@ from sugar import activity from jarabe.model.buddy import BuddyModel from jarabe.model import bundleregistry +from jarabe.util.telepathy import connection_watcher + +from dbus import PROPERTIES_IFACE +import telepathy +from telepathy.interfaces import CONNECTION_INTERFACE_REQUESTS + +CONN_INTERFACE_GADGET = 'org.laptop.Telepathy.Gadget' class ActivityModel: def __init__(self, act, bundle): @@ -78,6 +87,33 @@ class Neighborhood(gobject.GObject): self._pservice.get_activities_async( reply_handler=self._get_activities_cb) + self._conn_watcher = connection_watcher.ConnectionWatcher() + self._conn_watcher.connect('connection-added', self._conn_addded_cb) + + for conn in self._conn_watcher.get_connections(): + self._conn_addded_cb(self._conn_watcher, conn) + + def _conn_addded_cb(self, watcher, conn): + if CONN_INTERFACE_GADGET not in conn: + return + + conn[CONN_INTERFACE_GADGET].connect_to_signal('GadgetDiscovered', + lambda: self._gadget_discovered(conn)) + + gadget_discovered = conn[PROPERTIES_IFACE].Get(CONN_INTERFACE_GADGET, + 'GadgetAvailable') + if gadget_discovered: + self._gadget_discovered(conn) + + def _gadget_discovered(self, conn): + # FIXME: watch change of the gconf key + client = gconf.client_get_default() + publish = client.get_bool('/desktop/sugar/collaboration/publish_gadget') + logging.debug("Gadget discovered on connection %s." + " Publish our status: %r" % + (conn.service_name.split('.')[-1], publish)) + conn[CONN_INTERFACE_GADGET].Publish(publish) + def _get_buddies_cb(self, buddy_list): for buddy in buddy_list: self._buddy_appeared_cb(self._pservice, buddy) diff --git a/src/jarabe/model/network.py b/src/jarabe/model/network.py index dcfc71e..77521cb 100644 --- a/src/jarabe/model/network.py +++ b/src/jarabe/model/network.py @@ -18,6 +18,22 @@ import dbus from sugar import dispatch +DEVICE_TYPE_802_11_WIRELESS = 2 + +DEVICE_STATE_UNKNOWN = 0 +DEVICE_STATE_UNMANAGED = 1 +DEVICE_STATE_UNAVAILABLE = 2 +DEVICE_STATE_DISCONNECTED = 3 +DEVICE_STATE_PREPARE = 4 +DEVICE_STATE_CONFIG = 5 +DEVICE_STATE_NEED_AUTH = 6 +DEVICE_STATE_IP_CONFIG = 7 +DEVICE_STATE_ACTIVATED = 8 +DEVICE_STATE_FAILED = 9 + +AP_FLAGS_802_11_NONE = 0 +AP_FLAGS_802_11_PRIVACY = 1 + NM_SETTINGS_PATH = '/org/freedesktop/NetworkManagerSettings' NM_SETTINGS_IFACE = 'org.freedesktop.NetworkManagerSettings' NM_CONNECTION_IFACE = 'org.freedesktop.NetworkManagerSettings.Connection' @@ -42,17 +58,17 @@ class NMSettings(dbus.service.Object): pass def add_connection(self, conn): - self.connections.append(conn.object_path) - self.NewConnection(conn.object_path) + self.connections.append(conn.path) + self.NewConnection(conn.path) class NMSettingsConnection(dbus.service.Object): _counter = 0 def __init__(self, settings, secrets): - path = NM_SETTINGS_PATH + '/' + self._counter + self.path = NM_SETTINGS_PATH + '/' + str(self._counter) self._counter += 1 - dbus.service.Object.__init__(self, dbus.SystemBus(), path) + dbus.service.Object.__init__(self, dbus.SystemBus(), self.path) self.secrets_request = dispatch.Signal() @@ -77,8 +93,10 @@ def add_connection(settings, secrets=None): if _nm_settings is None: _nm_settings = NMSettings() - conn = NMSettingsConnection() + conn = NMSettingsConnection(settings, secrets) _nm_settings.add_connection(conn) + return conn + def load_connections(): pass |