Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorGuillaume Desmottes <guillaume.desmottes@collabora.co.uk>2008-10-28 10:55:46 (GMT)
committer Guillaume Desmottes <guillaume.desmottes@collabora.co.uk>2008-10-28 10:55:46 (GMT)
commitbe000b84871de2015a10fdb41c07e77b7ed979f9 (patch)
tree5dc3273d8272d8f3d756f860be1cceb5bae86bf1 /src
parent4ff4e22a1f85fcf2ebae80c79c5360d8533031d9 (diff)
Re-request closed random views (#8900)
Diffstat (limited to 'src')
-rw-r--r--src/jarabe/model/neighborhood.py24
1 files changed, 21 insertions, 3 deletions
diff --git a/src/jarabe/model/neighborhood.py b/src/jarabe/model/neighborhood.py
index 7aada26..7f95875 100644
--- a/src/jarabe/model/neighborhood.py
+++ b/src/jarabe/model/neighborhood.py
@@ -27,7 +27,8 @@ from jarabe.model import bundleregistry
from jarabe.util.telepathy import connection_watcher
from dbus import PROPERTIES_IFACE
-from telepathy.interfaces import CONNECTION_INTERFACE_REQUESTS
+from telepathy.interfaces import CONNECTION_INTERFACE_REQUESTS, CHANNEL_INTERFACE
+from telepathy.client import Channel
CONN_INTERFACE_GADGET = 'org.laptop.Telepathy.Gadget'
CHAN_INTERFACE_VIEW = 'org.laptop.Telepathy.Channel.Interface.View'
@@ -125,21 +126,38 @@ class Neighborhood(gobject.GObject):
def _request_random_buddies(self, conn, nb):
logging.debug("Request %d random buddies" % nb)
- conn[CONNECTION_INTERFACE_REQUESTS].CreateChannel(
+ path, props = conn[CONNECTION_INTERFACE_REQUESTS].CreateChannel(
{ 'org.freedesktop.Telepathy.Channel.ChannelType':
'org.laptop.Telepathy.Channel.Type.BuddyView',
'org.laptop.Telepathy.Channel.Interface.View.MaxSize': nb
})
+ view = Channel(conn.service_name, path)
+ view[CHANNEL_INTERFACE].connect_to_signal('Closed',
+ lambda: self.__respawnable_view_closed_cb(
+ lambda: self._request_random_buddies(conn, nb)))
+
def _request_random_activities(self, conn, nb):
logging.debug("Request %d random activities" % nb)
- conn[CONNECTION_INTERFACE_REQUESTS].CreateChannel(
+ path, props = conn[CONNECTION_INTERFACE_REQUESTS].CreateChannel(
{ 'org.freedesktop.Telepathy.Channel.ChannelType':
'org.laptop.Telepathy.Channel.Type.ActivityView',
'org.laptop.Telepathy.Channel.Interface.View.MaxSize': nb
})
+ view = Channel(conn.service_name, path)
+ view[CHANNEL_INTERFACE].connect_to_signal('Closed',
+ lambda: self.__respawnable_view_closed_cb(
+ lambda: self._request_random_activities(conn, nb)))
+
+ def __respawnable_view_closed_cb(self, request_fct):
+ # Views are closed if the Gadget component is restarted. As we always
+ # want to have the random views opened, we re-request them if they are
+ # closed.
+ logging.debug('View closed. Re-request it')
+ request_fct()
+
def _get_buddies_cb(self, buddy_list):
for buddy in buddy_list:
self._buddy_appeared_cb(self._pservice, buddy)