Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSimon Schampijer <simon@schampijer.de>2011-09-14 13:32:22 (GMT)
committer Simon Schampijer <simon@schampijer.de>2011-09-19 18:07:42 (GMT)
commit2433c89d52306e102903327e1ebabefc6e7527ce (patch)
treec30fe9646b622036706950b02f67d6bdce44de9c /src
parentc6ed9d359b879c9b8c55f2b0c0ae345c008ea435 (diff)
Invitations: remove item from tray after using the join/decline palette options, SL #3089
The old code did only handle the case cleanly when you clicked on the icon in the tray. When using the palette options several errors occured. This patch does add a change in behavior: it reveals the palette when you click on the button. This is to ensure that a user is aware of the available options (discussed with Gary). Signed-off-by: Simon Schampijer <simon@laptop.org> Acked-By: Sascha Silbe <silbe@activitycentral.com>
Diffstat (limited to 'src')
-rw-r--r--src/jarabe/frame/activitiestray.py49
1 files changed, 27 insertions, 22 deletions
diff --git a/src/jarabe/frame/activitiestray.py b/src/jarabe/frame/activitiestray.py
index 2b5bf8d..1c1205a 100644
--- a/src/jarabe/frame/activitiestray.py
+++ b/src/jarabe/frame/activitiestray.py
@@ -32,7 +32,7 @@ from sugar.graphics.xocolor import XoColor
from sugar.graphics.radiotoolbutton import RadioToolButton
from sugar.graphics.toolbutton import ToolButton
from sugar.graphics.icon import Icon, get_icon_file_name
-from sugar.graphics.palette import Palette, WidgetInvoker
+from sugar.graphics.palette import Palette
from sugar.graphics.menuitem import MenuItem
from sugar.datastore import datastore
from sugar import mime
@@ -101,6 +101,11 @@ class ActivityButton(RadioToolButton):
class InviteButton(ToolButton):
"""Invite to shared activity"""
+
+ __gsignals__ = {
+ 'remove-invite': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])),
+ }
+
def __init__(self, invite):
ToolButton.__init__(self)
@@ -124,6 +129,7 @@ class InviteButton(ToolButton):
palette = InvitePalette(invite)
palette.props.invoker = FrameWidgetInvoker(self)
palette.set_group_id('frame')
+ palette.connect('remove-invite', self.__remove_invite_cb)
self.set_palette(palette)
self._notif_icon = NotificationIcon()
@@ -136,36 +142,37 @@ class InviteButton(ToolButton):
else:
self._notif_icon.props.icon_name = 'image-missing'
- palette = InvitePalette(invite)
- palette.props.invoker = WidgetInvoker(self._notif_icon)
- palette.set_group_id('frame')
- self._notif_icon.palette = palette
-
frame = jarabe.frame.get_view()
frame.add_notification(self._notif_icon, gtk.CORNER_TOP_LEFT)
def __button_release_event_cb(self, icon, event):
- self.emit('clicked')
-
- def __clicked_cb(self, button):
if self._notif_icon is not None:
frame = jarabe.frame.get_view()
frame.remove_notification(self._notif_icon)
self._notif_icon = None
- self._launch()
+ self._invite.join()
+ self.emit('remove-invite')
- def __destroy_cb(self, button):
- frame = jarabe.frame.get_view()
- frame.remove_notification(self._notif_icon)
+ def __clicked_cb(self, button):
+ self.palette.popup(immediate=True, state=Palette.SECONDARY)
- def _launch(self):
- """Join the activity in the invite."""
- self._invite.join()
+ def __remove_invite_cb(self, palette):
+ self.emit('remove-invite')
+
+ def __destroy_cb(self, button):
+ if self._notif_icon is not None:
+ frame = jarabe.frame.get_view()
+ frame.remove_notification(self._notif_icon)
+ self._notif_icon = None
class InvitePalette(Palette):
"""Palette for frame or notification icon for invites."""
+ __gsignals__ = {
+ 'remove-invite': (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, ([])),
+ }
+
def __init__(self, invite):
Palette.__init__(self, '')
@@ -192,11 +199,10 @@ class InvitePalette(Palette):
def __join_activate_cb(self, menu_item):
self._invite.join()
+ self.emit('remove-invite')
def __decline_activate_cb(self, menu_item):
- invites_model = invites.get_instance()
- activity_id = self._activity_model.get_id()
- invites_model.remove_activity(activity_id)
+ self.emit('remove-invite')
class ActivitiesTray(HTray):
@@ -279,7 +285,7 @@ class ActivitiesTray(HTray):
if window:
window.activate(gtk.get_current_event_time())
- def __invite_clicked_cb(self, icon, invite):
+ def __remove_invite_cb(self, icon, invite):
self._invites.remove_invite(invite)
def __invite_added_cb(self, invites_model, invite):
@@ -291,10 +297,9 @@ class ActivitiesTray(HTray):
def _add_invite(self, invite):
"""Add an invite"""
item = InviteButton(invite)
- item.connect('clicked', self.__invite_clicked_cb, invite)
+ item.connect('remove-invite', self.__remove_invite_cb, invite)
self.add_item(item)
item.show()
-
self._invite_to_item[invite] = item
def _remove_invite(self, invite):