Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rwxr-xr-xexamples/gmail.py4
-rw-r--r--sugar/browser/BrowserActivity.py2
-rw-r--r--sugar/shell/activity.py12
-rwxr-xr-xsugar/shell/shell.py20
4 files changed, 25 insertions, 13 deletions
diff --git a/examples/gmail.py b/examples/gmail.py
index a3807c5..99a2c75 100755
--- a/examples/gmail.py
+++ b/examples/gmail.py
@@ -8,9 +8,11 @@ import geckoembed
from sugar.shell import activity
import sugar.env
+_GMAIL_ACTIVITY_TYPE = "_gmail_google._tcp"
+
class GMailActivity(activity.Activity):
def __init__(self):
- activity.Activity.__init__(self)
+ activity.Activity.__init__(self, _GMAIL_ACTIVITY_TYPE)
def on_connected_to_shell(self):
profile_path = os.path.join(sugar.env.get_user_dir(), 'gmail')
diff --git a/sugar/browser/BrowserActivity.py b/sugar/browser/BrowserActivity.py
index 185b6f4..f79f788 100644
--- a/sugar/browser/BrowserActivity.py
+++ b/sugar/browser/BrowserActivity.py
@@ -22,7 +22,7 @@ class BrowserActivity(activity.Activity):
LEADING = 3
def __init__(self, uri):
- activity.Activity.__init__(self)
+ activity.Activity.__init__(self, _BROWSER_ACTIVITY_TYPE)
self.uri = uri
self._mode = BrowserActivity.SOLO
self._pservice = PresenceService.get_instance()
diff --git a/sugar/shell/activity.py b/sugar/shell/activity.py
index b7f84b3..77e600e 100644
--- a/sugar/shell/activity.py
+++ b/sugar/shell/activity.py
@@ -77,10 +77,10 @@ class ActivityDbusService(dbus.service.Object):
SHELL_SERVICE_NAME + ".ActivityContainer")
if activity_id is None:
- self._activity_id = self._activity_container.add_activity("")
+ self._activity_id = self._activity_container.add_activity("", self._activity.default_type())
else:
self._activity_id = activity_id
- self._activity_container.add_activity_with_id("", activity_id)
+ self._activity_container.add_activity_with_id("", self._activity.default_type(), activity_id)
self._object_path = SHELL_SERVICE_PATH + "/Activities/%s" % self._activity_id
@@ -144,7 +144,7 @@ class ActivityDbusService(dbus.service.Object):
class Activity(object):
"""Base Activity class that all other Activities derive from."""
- def __init__(self):
+ def __init__(self, default_type):
self._dbus_service = self._get_new_dbus_service()
self._dbus_service.register_callback(ON_CONNECTED_TO_SHELL_CB, self._internal_on_connected_to_shell_cb)
self._dbus_service.register_callback(ON_DISCONNECTED_FROM_SHELL_CB, self._internal_on_disconnected_from_shell_cb)
@@ -156,6 +156,9 @@ class Activity(object):
self._has_focus = False
self._plug = None
self._activity_object = None
+ if type(default_type) != type("") or not len(default_type):
+ raise ValueError("Default type must be a valid string.")
+ self._default_type = default_type
def _cleanup(self):
if self._plug:
@@ -173,6 +176,9 @@ class Activity(object):
Allows subclasses to use their own dbus service object if they choose."""
return ActivityDbusService(self)
+ def default_type(self):
+ return self._default_type
+
def has_focus(self):
"""Return whether or not this Activity is visible to the user."""
return self._has_focus
diff --git a/sugar/shell/shell.py b/sugar/shell/shell.py
index f6755f2..1628a66 100755
--- a/sugar/shell/shell.py
+++ b/sugar/shell/shell.py
@@ -17,7 +17,7 @@ from sugar.chat.GroupChat import GroupChat
class ActivityHost(dbus.service.Object):
- def __init__(self, activity_container, activity_name, activity_id = None):
+ def __init__(self, activity_container, activity_name, default_type, activity_id = None):
self.activity_name = activity_name
self.ellipsize_tab = False
@@ -27,7 +27,8 @@ class ActivityHost(dbus.service.Object):
self.activity_id = sugar.util.unique_id()
else:
self.activity_id = activity_id
-
+ self._default_type = default_type
+
self.dbus_object_name = "/com/redhat/Sugar/Shell/Activities/%s" % self.activity_id
dbus.service.Object.__init__(self, activity_container.service, self.dbus_object_name)
@@ -83,6 +84,9 @@ class ActivityHost(dbus.service.Object):
def get_chat(self):
return self._group_chat
+ def get_default_type(self):
+ return self._default_type
+
def __close_button_clicked_reply_cb(self):
pass
@@ -364,12 +368,12 @@ class ActivityContainer(dbus.service.Object):
@dbus.service.method("com.redhat.Sugar.Shell.ActivityContainer", \
- in_signature="s", \
+ in_signature="ss", \
out_signature="s", \
sender_keyword="sender")
- def add_activity(self, activity_name, sender):
+ def add_activity(self, activity_name, default_type, sender):
#print "hello world, activity_name = '%s', sender = '%s'"%(activity_name, sender)
- activity = ActivityHost(self, activity_name)
+ activity = ActivityHost(self, activity_name, default_type)
self.activities.append((sender, activity))
activity_id = activity.get_host_activity_id()
@@ -379,10 +383,10 @@ class ActivityContainer(dbus.service.Object):
return activity_id
@dbus.service.method("com.redhat.Sugar.Shell.ActivityContainer", \
- in_signature="ss", \
+ in_signature="sss", \
sender_keyword="sender")
- def add_activity_with_id(self, activity_name, activity_id, sender):
- activity = ActivityHost(self, activity_name, activity_id)
+ def add_activity_with_id(self, activity_name, default_type, activity_id, sender):
+ activity = ActivityHost(self, activity_name, default_type, activity_id)
self.activities.append((sender, activity))
activity_id = activity.get_host_activity_id()
self._signal_helper.activity_started(activity_id)