diff options
Diffstat (limited to 'src/jarabe/model/owner.py')
-rw-r--r-- | src/jarabe/model/owner.py | 113 |
1 files changed, 0 insertions, 113 deletions
diff --git a/src/jarabe/model/owner.py b/src/jarabe/model/owner.py deleted file mode 100644 index 17996e6..0000000 --- a/src/jarabe/model/owner.py +++ /dev/null @@ -1,113 +0,0 @@ -# Copyright (C) 2006-2007 Red Hat, Inc. -# Copyright (C) 2008 One Laptop Per Child -# -# This program is free software; you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation; either version 2 of the License, or -# (at your option) any later version. -# -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. -# -# You should have received a copy of the GNU General Public License -# along with this program; if not, write to the Free Software -# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - -import gobject -import os -import gconf -import simplejson - -from telepathy.interfaces import CHANNEL_TYPE_TEXT - -from sugar import env -from sugar.presence import presenceservice -from sugar import util -from jarabe.model.invites import Invites - -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. - """ - __gtype_name__ = "ShellOwner" - - __gsignals__ = { - 'nick-changed' : (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([gobject.TYPE_STRING])), - 'color-changed' : (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([gobject.TYPE_PYOBJECT])), - 'icon-changed' : (gobject.SIGNAL_RUN_FIRST, gobject.TYPE_NONE, - ([gobject.TYPE_PYOBJECT])) - } - - def __init__(self): - gobject.GObject.__init__(self) - - client = gconf.client_get_default() - self._nick = client.get_string("/desktop/sugar/user/nick") - - self._icon = None - self._icon_hash = "" - icon = os.path.join(env.get_profile_path(), "buddy-icon.jpg") - if not os.path.exists(icon): - raise RuntimeError("missing buddy icon") - - fd = open(icon, "r") - self._icon = fd.read() - fd.close() - if not self._icon: - raise RuntimeError("invalid buddy icon") - - # Get the icon's hash - import hashlib - digest = hashlib.md5(self._icon).digest() - self._icon_hash = util.printable_hash(digest) - - self._pservice = presenceservice.get_instance() - self._pservice.connect('activity-invitation', - self._activity_invitation_cb) - self._pservice.connect('private-invitation', - self._private_invitation_cb) - self._pservice.connect('activity-disappeared', - self._activity_disappeared_cb) - - self._invites = Invites() - - def get_invites(self): - return self._invites - - def get_nick(self): - return self._nick - - def _activity_invitation_cb(self, pservice, activity, buddy, message): - self._invites.add_invite(activity.props.type, - activity.props.id) - - def _private_invitation_cb(self, pservice, bus_name, connection, - channel, channel_type): - """Handle a private-invitation from Presence Service. - - This is a connection by a non-Sugar XMPP client, so - launch Chat or VideoChat with the Telepathy connection and - channel. - """ - if channel_type == CHANNEL_TYPE_TEXT: - bundle_id = 'org.laptop.Chat' - else: - bundle_id = 'org.laptop.VideoChat' - tp_channel = simplejson.dumps([bus_name, connection, channel]) - self._invites.add_private_invite(tp_channel, bundle_id) - - def _activity_disappeared_cb(self, pservice, activity): - self._invites.remove_activity(activity.props.id) - -_model = None - -def get_model(): - global _model - if _model is None: - _model = Owner() - return _model |