Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTomeu Vizoso <tomeu@sugarlabs.org>2010-04-06 09:07:13 (GMT)
committer Tomeu Vizoso <tomeu.vizoso@collabora.co.uk>2010-08-20 13:02:26 (GMT)
commitad853d7684ffc96db646e5da63a6ee7eb4a9869a (patch)
treefd5e2d7df08558c664bed8a0b843a8c837f33c20
parent40e5531bc210efca8dff0af388b8cbbbc78446ea (diff)
Adapt to changes in the ActivityModel API
-rw-r--r--src/jarabe/desktop/meshbox.py63
-rw-r--r--src/jarabe/model/neighborhood.py63
2 files changed, 69 insertions, 57 deletions
diff --git a/src/jarabe/desktop/meshbox.py b/src/jarabe/desktop/meshbox.py
index d4408e1..dcb8e7a 100644
--- a/src/jarabe/desktop/meshbox.py
+++ b/src/jarabe/desktop/meshbox.py
@@ -75,33 +75,32 @@ class ActivityView(hippo.CanvasBox):
self._icon = self._create_icon()
self._layout.add(self._icon, center=True)
- self._update_palette()
-
- activity = self._model.activity
- activity.connect('notify::name', self._name_changed_cb)
- activity.connect('notify::color', self._color_changed_cb)
- activity.connect('notify::private', self._private_changed_cb)
- activity.connect('joined', self._joined_changed_cb)
- #FIXME: 'joined' signal not working, see #5032
+ self._palette = self._create_palette()
+ self._icon.set_palette(self._palette)
def _create_icon(self):
- icon = CanvasIcon(file_name=self._model.get_icon_name(),
+ icon = CanvasIcon(file_name=self._model.bundle.get_icon(),
xo_color=self._model.get_color(), cache=True,
size=style.STANDARD_ICON_SIZE)
icon.connect('activated', self._clicked_cb)
return icon
def _create_palette(self):
- p_text = glib.markup_escape_text(self._model.activity.props.name)
- p_icon = Icon(file=self._model.get_icon_name(),
+ p_text = glib.markup_escape_text(self._model.bundle.get_name())
+ p_icon = Icon(file=self._model.bundle.get_icon(),
xo_color=self._model.get_color())
p_icon.props.icon_size = gtk.ICON_SIZE_LARGE_TOOLBAR
p = palette.Palette(None,
primary_text=p_text,
icon=p_icon)
- private = self._model.activity.props.private
- joined = self._model.activity.props.joined
+ logging.info('KILL_PS display private activities in the neighborhood')
+ #private = self._model.activity.props.private
+ private = False
+
+ logging.info('KILL_PS check if we are already in this activity')
+ #joined = self._model.activity.props.joined
+ joined = False
if joined:
item = MenuItem(_('Resume'), 'activity-start')
@@ -116,10 +115,6 @@ class ActivityView(hippo.CanvasBox):
return p
- def _update_palette(self):
- self._palette = self._create_palette()
- self._icon.set_palette(self._palette)
-
def has_buddy_icon(self, key):
return self._icons.has_key(key)
@@ -133,15 +128,12 @@ class ActivityView(hippo.CanvasBox):
icon.destroy()
def _clicked_cb(self, item):
- bundle_id = self._model.get_bundle_id()
- bundle = bundleregistry.get_registry().get_bundle(bundle_id)
-
- misc.launch(bundle, activity_id=self._model.get_id(),
+ misc.launch(self._model.bundle, activity_id=self._model.activity_id,
color=self._model.get_color())
def set_filter(self, query):
- text_to_check = self._model.activity.props.name.lower() + \
- self._model.activity.props.type.lower()
+ text_to_check = self._model.bundle.get_name().lower() + \
+ self._model.bundle.get_bundle_id().lower()
if text_to_check.find(query) == -1:
self._icon.props.stroke_color = '#D5D5D5'
self._icon.props.fill_color = style.COLOR_TRANSPARENT.get_svg()
@@ -152,21 +144,6 @@ class ActivityView(hippo.CanvasBox):
if hasattr(icon, 'set_filter'):
icon.set_filter(query)
- def _name_changed_cb(self, activity, pspec):
- self._update_palette()
-
- def _color_changed_cb(self, activity, pspec):
- self._layout.remove(self._icon)
- self._icon = self._create_icon()
- self._layout.add(self._icon, center=True)
- self._icon.set_palette(self._palette)
-
- def _private_changed_cb(self, activity, pspec):
- self._update_palette()
-
- def _joined_changed_cb(self, widget, event):
- logging.debug('ActivityView._joined_changed_cb')
-
_AUTOSEARCH_TIMEOUT = 1000
@@ -528,8 +505,8 @@ class MeshBox(gtk.VBox):
if activity_model == None:
self._add_alone_buddy(buddy_model)
- elif activity_model.get_id() in self._activities:
- activity = self._activities[activity_model.get_id()]
+ elif activity_model.activity_id in self._activities:
+ activity = self._activities[activity_model.activity_id]
icon = BuddyIcon(buddy_model, style.STANDARD_ICON_SIZE)
activity.add_buddy_icon(buddy_model.get_buddy().object_path(), icon)
@@ -544,12 +521,12 @@ class MeshBox(gtk.VBox):
if hasattr(icon, 'set_filter'):
icon.set_filter(self._query)
- self._activities[activity_model.get_id()] = icon
+ self._activities[activity_model.activity_id] = icon
def _remove_activity(self, activity_model):
- icon = self._activities[activity_model.get_id()]
+ icon = self._activities[activity_model.activity_id]
self._layout.remove(icon)
- del self._activities[activity_model.get_id()]
+ del self._activities[activity_model.activity_id]
icon.destroy()
# add AP to its corresponding network icon on the desktop,
diff --git a/src/jarabe/model/neighborhood.py b/src/jarabe/model/neighborhood.py
index ccb2fdf..da6b3db 100644
--- a/src/jarabe/model/neighborhood.py
+++ b/src/jarabe/model/neighborhood.py
@@ -50,22 +50,16 @@ CHANNEL_DISPATCHER_PATH = '/org/freedesktop/Telepathy/ChannelDispatcher'
SUGAR_CLIENT_SERVICE = 'org.freedesktop.Telepathy.Client.Sugar'
SUGAR_CLIENT_PATH = '/org/freedesktop/Telepathy/Client/Sugar'
-class ActivityModel:
- def __init__(self, act, bundle):
- self.activity = act
- self.bundle = bundle
-
- def get_id(self):
- return self.activity.props.id
+CONNECTION_INTERFACE_APPLICATIONS = CONNECTION + '.Interface.Applications.DRAFT'
- def get_icon_name(self):
- return self.bundle.get_icon()
+class ActivityModel(object):
+ def __init__(self, bundle, activity_id):
+ self.bundle = bundle
+ self.activity_id = activity_id
def get_color(self):
- return XoColor(self.activity.props.color)
-
- def get_bundle_id(self):
- return self.bundle.get_bundle_id()
+ logging.info('KILL_PS get the initiator''s colors')
+ return None
class Neighborhood(gobject.GObject):
__gsignals__ = {
@@ -94,7 +88,7 @@ class Neighborhood(gobject.GObject):
obj = bus.get_object(ACCOUNT_MANAGER_SERVICE, ACCOUNT_MANAGER_PATH)
account_manager = dbus.Interface(obj, ACCOUNT_MANAGER)
- accounts = account_manager.Get(ACCOUNT_MANAGER_SERVICE, 'ValidAccounts',
+ accounts = account_manager.Get(ACCOUNT_MANAGER, 'ValidAccounts',
dbus_interface=PROPERTIES_IFACE)
logging.debug('accounts %r', accounts)
@@ -197,6 +191,11 @@ class Neighborhood(gobject.GObject):
'PresencesChanged',
partial(self.__presences_changed_cb, connection))
+ if CONNECTION_INTERFACE_APPLICATIONS in connection:
+ connection[CONNECTION_INTERFACE_APPLICATIONS].connect_to_signal(
+ 'ApplicationsUpdated',
+ partial(self.__applications_updated_cb, connection))
+
handles = channel[PROPERTIES_IFACE].Get(CHANNEL_INTERFACE_GROUP, 'Members')
if handles:
self._add_handles(connection, handles)
@@ -220,6 +219,42 @@ class Neighborhood(gobject.GObject):
buddy.props.nick = alias
buddy.props.key = (connection.service_name, handle)
+ def __applications_updated_cb(self, connection, handle, applications):
+ logging.debug('__applications_updated_cb %r %r', handle, applications)
+
+ buddy = self._buddies[(connection.service_name, handle)]
+
+ for application in applications:
+ activity_id = application.get('TargetId', '')
+ bundle_id = application.get('bundle-id', '')
+
+ if not bundle_id or not activity_id:
+ logging.warning('Ignoring malformed shared activity')
+ continue
+
+ if self.has_activity(activity_id):
+ return
+
+ registry = bundleregistry.get_registry()
+ bundle = registry.get_bundle(bundle_id)
+ if not bundle:
+ logging.warning('Ignoring shared activity we don''t have')
+ continue
+
+ model = ActivityModel(bundle, activity_id)
+ self._activities[activity_id] = model
+ self.emit('activity-added', model)
+
+ logging.info('KILL_PS move buddies around')
+ """
+ for buddy in self._pservice.get_buddies():
+ cur_activity = buddy.props.current_activity
+ object_path = buddy.object_path()
+ if cur_activity == activity and object_path in self._buddies:
+ buddy_model = self._buddies[object_path]
+ self.emit('buddy-moved', buddy_model, model)
+ """
+
def _add_handles(self, connection, handles):
interfaces = [CONNECTION, CONNECTION_INTERFACE_ALIASING]
connection[CONNECTION_INTERFACE_CONTACTS].GetContactAttributes(