From b3367928bdc3dca91ba80f103bef52617eb6b899 Mon Sep 17 00:00:00 2001 From: Ragner Magalhaes Date: Tue, 2 Dec 2008 21:26:00 +0000 Subject: [PATCH] Adding support to set/get account's status Adding support to set/get account's status Signed-off-by: Ragner Magalhaes Acked-by: Bruno Abinader Acked-by: Dinorah Monteiro Acked-by: Ricardo Guimaraes git-svn-id: https://garage.maemo.org/svn/carman/branches/carman-0.7-beta2/python-purple@1460 596f6dd7-e928-0410-a184-9e12fd12cf7e --- account.pyx | 72 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 71 insertions(+), 1 deletion(-) diff --git a/account.pyx b/account.pyx index 5656405..f70873e 100644 --- a/account.pyx +++ b/account.pyx @@ -95,7 +95,7 @@ cdef class Account: def _get_protocol_options(self): """ - @return Dictionary {'setting': value, ...} + @return Dictionary {'setting': value, ...} """ cdef glib.GList *iter cdef account.PurpleAccount *c_account @@ -222,6 +222,50 @@ cdef class Account: return None enabled = property(__get_enabled) + def __get_status_types(self): + cdef glib.GList *iter = NULL + cdef status.PurpleStatusType *c_statustype = NULL + cdef char *id = NULL + cdef char *name = NULL + + if self.__exists: + status_types = [] + iter = account.purple_account_get_status_types(self._get_structure()) + while iter: + c_statustype = iter.data + id = status.purple_status_type_get_id(c_statustype) + name = status.purple_status_type_get_name(c_statustype) + status_types.append((id, name)) + iter = iter.next + return status_types + else: + return None + + status_types = property(__get_status_types) + + 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 = account.purple_account_get_active_status(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") + + active['type'] = type + active['name'] = name + if msg: + active['message'] = msg + + return active + else: + return None + active_status = property(__get_active_status) + def set_username(self, username): """ Sets the account's username. @@ -540,3 +584,29 @@ cdef class Account: else: blist.purple_blist_request_add_buddy(self._get_structure(), \ buddy_username, NULL, NULL) + + def set_active_status(self, type, msg=None): + cdef status.PurpleStatusType *c_statustype = NULL + + if self.__exists: + if msg: + account.purple_account_set_status(self._get_structure(), + type, True, "message", msg, NULL) + else: + account.purple_account_set_status(self._get_structure(), + type, True, NULL) + return True + else: + return False + + def set_status_message(self, type, msg): + cdef status.PurpleStatus* c_status = NULL + cdef status.PurpleStatusType *c_statustype = NULL + + if self.__exists and msg: + c_status = account.purple_account_get_status(self._get_structure(), + type) + status.purple_status_set_attr_string(c_status, "message", msg) + return True + else: + return False -- 1.7.9.5