From 16506b00ee285fa4c5c1ad43e7b0f1e84802f86e Mon Sep 17 00:00:00 2001 From: Simon Schampijer Date: Wed, 06 Jul 2011 07:48:47 +0000 Subject: Display title in palette of shared activity OLPC #10676 The patch does display the activity name as primary text and the session title as secondary text. This is coherent with the palette of an activity in the frame. To make this work properly we need to refactor the code a bit and make the palette on demand. Signed-off-by: Simon Schampijer Reviewed-by: Gonzalo Odiard --- diff --git a/src/jarabe/desktop/meshbox.py b/src/jarabe/desktop/meshbox.py index 3d1e52a..756c303 100644 --- a/src/jarabe/desktop/meshbox.py +++ b/src/jarabe/desktop/meshbox.py @@ -63,43 +63,24 @@ _OLPC_MESH_ICON_NAME = 'network-mesh' _AUTOSEARCH_TIMEOUT = 1000 -class ActivityView(hippo.CanvasBox): - def __init__(self, model): - hippo.CanvasBox.__init__(self) - +class _ActivityIcon(CanvasIcon): + def __init__(self, model, file_name, xo_color, + size=style.STANDARD_ICON_SIZE): + CanvasIcon.__init__(self, file_name=file_name, + xo_color=xo_color, + size=size) self._model = model - self._model.connect('current-buddy-added', self.__buddy_added_cb) - self._model.connect('current-buddy-removed', self.__buddy_removed_cb) - - self._icons = {} - self._palette = None - - self._layout = SnowflakeLayout() - self.set_layout(self._layout) - - self._icon = self._create_icon() - self._layout.add(self._icon, center=True) + self.connect('activated', self._clicked_cb) - self._palette = self._create_palette() - self._icon.set_palette(self._palette) - - for buddy in self._model.props.current_buddies: - self._add_buddy(buddy) - - def _create_icon(self): - 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.bundle.get_name()) + def create_palette(self): + primary_text = glib.markup_escape_text(self._model.bundle.get_name()) + secondary_text = glib.markup_escape_text(self._model.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, + primary_text=primary_text, + secondary_text=secondary_text, icon=p_icon) private = self._model.props.private @@ -118,6 +99,40 @@ class ActivityView(hippo.CanvasBox): return p + def _clicked_cb(self, item): + bundle = self._model.get_bundle() + misc.launch(bundle, activity_id=self._model.activity_id, + color=self._model.get_color()) + + +class ActivityView(hippo.CanvasBox): + def __init__(self, model): + hippo.CanvasBox.__init__(self) + + self._model = model + self._model.connect('current-buddy-added', self.__buddy_added_cb) + self._model.connect('current-buddy-removed', self.__buddy_removed_cb) + + self._icons = {} + + self._layout = SnowflakeLayout() + self.set_layout(self._layout) + + self._icon = self._create_icon() + self._layout.add(self._icon, center=True) + + self._icon.palette_invoker.cache_palette = False + + for buddy in self._model.props.current_buddies: + self._add_buddy(buddy) + + def _create_icon(self): + icon = _ActivityIcon(self._model, + file_name=self._model.bundle.get_icon(), + xo_color=self._model.get_color(), + size=style.STANDARD_ICON_SIZE) + return icon + def has_buddy_icon(self, key): return key in self._icons @@ -134,11 +149,6 @@ class ActivityView(hippo.CanvasBox): del self._icons[buddy.props.key] icon.destroy() - def _clicked_cb(self, item): - bundle = self._model.get_bundle() - misc.launch(bundle, activity_id=self._model.activity_id, - color=self._model.get_color()) - def set_filter(self, query): text_to_check = self._model.bundle.get_name().lower() + \ self._model.bundle.get_bundle_id().lower() -- cgit v0.9.1