diff options
author | Marco 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) |
commit | aac9dc347933060f580ec5f7356385627af948c4 (patch) | |
tree | 025ef833deb16ce82191d67c3c03f4a81c91f010 | |
parent | d475dc32e08a2696ef35892d5582a10b61374a58 (diff) |
Make owner model independent from shell model.
-rw-r--r-- | src/jarabe/frame/friendstray.py | 5 | ||||
-rw-r--r-- | src/jarabe/model/owner.py | 12 | ||||
-rw-r--r-- | src/jarabe/model/shellmodel.py | 9 | ||||
-rw-r--r-- | src/jarabe/shellservice.py | 11 |
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() |