Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMarco Pesenti Gritti <mpgritti@gmail.com>2008-10-05 09:59:07 (GMT)
committer Marco Pesenti Gritti <mpgritti@gmail.com>2008-10-05 09:59:07 (GMT)
commitaac9dc347933060f580ec5f7356385627af948c4 (patch)
tree025ef833deb16ce82191d67c3c03f4a81c91f010
parentd475dc32e08a2696ef35892d5582a10b61374a58 (diff)
Make owner model independent from shell model.
-rw-r--r--src/jarabe/frame/friendstray.py5
-rw-r--r--src/jarabe/model/owner.py12
-rw-r--r--src/jarabe/model/shellmodel.py9
-rw-r--r--src/jarabe/shellservice.py11
4 files changed, 21 insertions, 16 deletions
diff --git a/src/jarabe/frame/friendstray.py b/src/jarabe/frame/friendstray.py
index c4c925f..52d0b9f 100644
--- a/src/jarabe/frame/friendstray.py
+++ b/src/jarabe/frame/friendstray.py
@@ -21,6 +21,7 @@ from jarabe.view import shell
from jarabe.view.buddymenu import BuddyMenu
from jarabe.frame.frameinvoker import FrameWidgetInvoker
from jarabe.model import shellmodel
+from jarabe.model import owner
from jarabe.model.buddymodel import BuddyModel
class FriendIcon(TrayIcon):
@@ -47,8 +48,6 @@ class FriendsTray(VTray):
self._pservice.connect('activity-appeared',
self.__activity_appeared_cb)
- self._owner = self._pservice.get_owner()
-
# Add initial activities the PS knows about
self._pservice.get_activities_async( \
reply_handler=self._get_activities_cb)
@@ -107,7 +106,7 @@ class FriendsTray(VTray):
self.clear()
# always display ourselves
- self.add_buddy(self._owner)
+ self.add_buddy(owner.get_model())
if shared_activity is True:
for buddy in activity_ps.get_joined_buddies():
diff --git a/src/jarabe/model/owner.py b/src/jarabe/model/owner.py
index 08edae1..60401c2 100644
--- a/src/jarabe/model/owner.py
+++ b/src/jarabe/model/owner.py
@@ -27,7 +27,7 @@ from sugar.presence import presenceservice
from sugar import util
from jarabe.model.invites import Invites
-class ShellOwner(gobject.GObject):
+class Owner(gobject.GObject):
"""Class representing the owner of this machine/instance. This class
runs in the shell and serves up the buddy icon and other stuff. It's the
server portion of the Owner, paired with the client portion in Buddy.py.
@@ -102,3 +102,13 @@ class ShellOwner(gobject.GObject):
def _activity_disappeared_cb(self, pservice, activity):
self._invites.remove_activity(activity.props.id)
+
+_model = None
+
+def get_model():
+ global _model
+
+ if not _model:
+ _model = Owner()
+
+ return _model
diff --git a/src/jarabe/model/shellmodel.py b/src/jarabe/model/shellmodel.py
index f0ddb71..c5a84ff 100644
--- a/src/jarabe/model/shellmodel.py
+++ b/src/jarabe/model/shellmodel.py
@@ -21,7 +21,7 @@ from sugar.presence import presenceservice
from jarabe.model.friends import Friends
from jarabe.model.meshmodel import MeshModel
from jarabe.model.homemodel import HomeModel
-from jarabe.model.owner import ShellOwner
+from jarabe.model import owner
class ShellModel(gobject.GObject):
ZOOM_MESH = 0
@@ -44,8 +44,6 @@ class ShellModel(gobject.GObject):
self._pservice = presenceservice.get_instance()
- self._owner = ShellOwner()
-
self._friends = Friends()
self._mesh = MeshModel()
self._home = HomeModel()
@@ -75,14 +73,11 @@ class ShellModel(gobject.GObject):
return self._friends
def get_invites(self):
- return self._owner.get_invites()
+ return owner.get_model().get_invites()
def get_home(self):
return self._home
- def get_owner(self):
- return self._owner
-
def _showing_desktop_changed_cb(self, screen):
showing_desktop = self._screen.get_showing_desktop()
if self._showing_desktop != showing_desktop:
diff --git a/src/jarabe/shellservice.py b/src/jarabe/shellservice.py
index 7918109..074f545 100644
--- a/src/jarabe/shellservice.py
+++ b/src/jarabe/shellservice.py
@@ -20,6 +20,7 @@ import os
from jarabe.view import shell
from jarabe.model import shellmodel
+from jarabe.model import owner
_DBUS_SERVICE = "org.laptop.Shell"
_DBUS_SHELL_IFACE = "org.laptop.Shell"
@@ -53,10 +54,10 @@ class ShellService(dbus.service.Object):
self._shell = shell.get_instance()
self._shell_model = shellmodel.get_instance()
- self._owner = self._shell_model.get_owner()
- self._owner.connect('nick-changed', self._owner_nick_changed_cb)
- self._owner.connect('icon-changed', self._owner_icon_changed_cb)
- self._owner.connect('color-changed', self._owner_color_changed_cb)
+ owner_model = owner.get_model()
+ owner_model.connect('nick-changed', self._owner_nick_changed_cb)
+ owner_model.connect('icon-changed', self._owner_icon_changed_cb)
+ owner_model.connect('color-changed', self._owner_color_changed_cb)
self._home_model = self._shell_model.get_home()
self._home_model.connect('active-activity-changed',
@@ -126,7 +127,7 @@ class ShellService(dbus.service.Object):
activity_id,
dbus_interface=_DBUS_RAINBOW_IFACE)
- def _cur_activity_changed_cb(self, owner, new_activity):
+ def _cur_activity_changed_cb(self, home_model, new_activity):
new_id = ""
if new_activity:
new_id = new_activity.get_activity_id()