[Telepathy-commits] [telepathy-qt4/master] Added Avatar interface to test account manager.
Andre Moreira Magalhaes (andrunko)
andre.magalhaes at collabora.co.uk
Tue Jan 13 09:05:48 PST 2009
---
tests/lib/account-manager.py | 31 +++++++++++++++++++++++++++++--
1 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/tests/lib/account-manager.py b/tests/lib/account-manager.py
index 6673247..857497a 100755
--- a/tests/lib/account-manager.py
+++ b/tests/lib/account-manager.py
@@ -18,6 +18,7 @@ AM_BUS_NAME = AM_IFACE
AM_OBJECT_PATH = '/' + AM_IFACE.replace('.', '/')
ACCOUNT_IFACE = TP + '.Account'
+ACCOUNT_IFACE_AVATAR_IFACE = ACCOUNT_IFACE + '.Interface.Avatar'
ACCOUNT_OBJECT_PATH_BASE = '/' + ACCOUNT_IFACE.replace('.', '/') + '/'
@@ -165,6 +166,10 @@ class Account(Object):
self._requested_presence = dbus.Struct(
(Connection_Presence_Type_Offline, 'offline', ''),
signature='uss')
+ self._avatar = dbus.Struct(
+ (dbus.ByteArray(''), 'image/png'),
+ signature='ays')
+ self._interfaces = [ACCOUNT_IFACE_AVATAR_IFACE,]
def _is_valid(self):
return True
@@ -187,6 +192,11 @@ class Account(Object):
print ("%s: emitting AccountPropertyChanged(\n %r \n)"
% (self.__dbus_object_path__, delta))
+ @signal(ACCOUNT_IFACE_AVATAR_IFACE, signature='')
+ def AvatarChanged(self):
+ print ("%s: emitting AvatarChanged"
+ % (self.__dbus_object_path__))
+
@method(ACCOUNT_IFACE, in_signature='', out_signature='')
def Remove(self):
print "%s: entering Remove()" % self.__dbus_object_path__
@@ -201,7 +211,7 @@ class Account(Object):
def _account_props(self):
return dbus.Dictionary({
- 'Interfaces': dbus.Array([], signature='s'),
+ 'Interfaces': dbus.Array(self._interfaces, signature='s'),
'DisplayName': self._display_name,
'Icon': self._icon,
'Valid': self._is_valid(),
@@ -218,12 +228,19 @@ class Account(Object):
'NormalizedName': self._normalized_name,
}, signature='sv')
+ def _account_avatar_props(self):
+ return dbus.Dictionary({
+ 'Avatar': self._avatar
+ }, signature='sv')
+
@method(dbus.PROPERTIES_IFACE,
in_signature='s',
out_signature='a{sv}')
def GetAll(self, iface):
if iface == ACCOUNT_IFACE:
return self._account_props()
+ elif iface == ACCOUNT_IFACE_AVATAR_IFACE:
+ return self._account_avatar_props()
else:
raise ValueError('No such interface')
@@ -233,6 +250,8 @@ class Account(Object):
def Get(self, iface, prop):
if iface == ACCOUNT_IFACE:
props = self._account_props()
+ elif iface == ACCOUNT_IFACE_AVATAR_IFACE:
+ props = self._account_avatar_props()
else:
raise ValueError('No such interface')
@@ -242,7 +261,7 @@ class Account(Object):
raise ValueError('No such property')
@method(dbus.PROPERTIES_IFACE,
- in_signature='ssv')
+ in_signature='ssv', byte_arrays=True)
def Set(self, iface, prop, value):
if iface == ACCOUNT_IFACE:
if prop == 'DisplayName':
@@ -270,6 +289,14 @@ class Account(Object):
raise ValueError('Read-only or nonexistent property')
self.AccountPropertyChanged({prop: self._account_props()[prop]})
+ elif iface == ACCOUNT_IFACE_AVATAR_IFACE:
+ if prop == 'Avatar':
+ self._avatar = dbus.Struct(
+ (dbus.ByteArray(value[0]), unicode(value[1])),
+ signature='ays')
+ self.AvatarChanged()
+ else:
+ raise ValueError('Nonexistent property')
else:
raise ValueError('No such interface')
--
1.5.6.5
More information about the Telepathy-commits
mailing list