X-Git-Url: http://git.maemo.org/git/?p=python-purple;a=blobdiff_plain;f=buddy.pyx;h=be9f2bd72ac2d6b97de0cbe1ff0b23cd41fb652b;hp=934ef6855da6395991be2d6a5ae001e15528cdb9;hb=05c92b9fd39b619dd3da3902cb94a3fec94fe563;hpb=80d8a8e4ec823f17c63c3ddd5e9e3db629303ab5 diff --git a/buddy.pyx b/buddy.pyx index 934ef68..be9f2bd 100644 --- a/buddy.pyx +++ b/buddy.pyx @@ -44,6 +44,10 @@ cdef class Buddy: self.__account.username, self.__account.protocol.id), \ self.__name) + def __get_exists(self): + return self.__exists + exists = property(__get_exists) + def __get_name(self): if self.__exists: return blist.purple_buddy_get_name(self._get_structure()) @@ -63,11 +67,20 @@ cdef class Buddy: c_alias = blist.purple_buddy_get_alias_only( \ self._get_structure()) if c_alias: - return c_alias + return unicode(c_alias, 'utf-8') else: return None alias = property(__get_alias) + def __get_group(self): + cdef blist.PurpleGroup *c_group = NULL + if self.__exists: + c_group = blist.purple_buddy_get_group(self._get_structure()) + return blist.purple_group_get_name(c_group) + else: + return None + group = property(__get_group) + def __get_server_alias(self): cdef char *c_server_alias = NULL c_server_alias = blist.purple_buddy_get_server_alias( \ @@ -122,23 +135,47 @@ cdef class Buddy: return None idle = property(__get_idle) - def new(self, alias=None): - """ - Created a new buddy. + def __get_active_status(self): + cdef status.PurpleStatus* c_status = NULL + cdef char *type = NULL + cdef char *name = NULL + cdef char *msg = NULL + if self.__exists: + active = {} + c_status = status.purple_presence_get_active_status( \ + blist.purple_buddy_get_presence(self._get_structure())) + type = status.purple_status_get_id(c_status) + name = status.purple_status_get_name(c_status) + msg = status.purple_status_get_attr_string(c_status, + "message") - @param alias (optional) - @return True if successful, False if buddy already exists - """ - cdef char *c_alias = NULL + active['type'] = type + active['name'] = name + if msg: + active['message'] = msg - if alias: - c_alias = alias + return active else: - c_alias = NULL + return None + active_status = property(__get_active_status) + def set_alias(self, alias): if self.__exists: + blist.purple_blist_alias_buddy(self._get_structure(), alias) + return True + else: return False + + def set_group(self, group): + cdef blist.PurpleContact *c_contact = NULL + cdef blist.PurpleGroup *c_group = NULL + if self.__exists and group: + c_group = blist.purple_find_group(group) + if c_group == NULL: + c_group = blist.purple_group_new(group) + + c_contact = blist.purple_buddy_get_contact(self._get_structure()) + blist.purple_blist_add_contact(c_contact, c_group, NULL) + return True else: - blist.purple_buddy_new(account.purple_accounts_find( \ - self.__account.username, self.__account.protocol.id), \ - self.__name, c_alias) + return False