Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src/jarabe/model
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@tomeuvizoso.net>2008-10-22 10:44:47 (GMT)
committer Tomeu Vizoso <tomeu@tomeuvizoso.net>2008-10-22 10:44:47 (GMT)
commit247cd39d53cff1fc6ee526b95f54681f7d0ab797 (patch)
tree41c094d199f7e79d30e09dc80814965b47e74ed6 /src/jarabe/model
parent520a7223f32e198bf8b633f524d52a04ac8e40ad (diff)
parent83a507cf6b306099adf49258e1b7c16781328415 (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.am1
-rw-r--r--src/jarabe/model/neighborhood.py36
-rw-r--r--src/jarabe/model/network.py28
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