diff options
author | Tomeu 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) |
commit | ad853d7684ffc96db646e5da63a6ee7eb4a9869a (patch) | |
tree | fd5e2d7df08558c664bed8a0b843a8c837f33c20 | |
parent | 40e5531bc210efca8dff0af388b8cbbbc78446ea (diff) |
Adapt to changes in the ActivityModel API
-rw-r--r-- | src/jarabe/desktop/meshbox.py | 63 | ||||
-rw-r--r-- | src/jarabe/model/neighborhood.py | 63 |
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( |