From: Ragner Magalhaes Date: Tue, 2 Dec 2008 21:27:37 +0000 (+0000) Subject: Fixing to use active status when account is idle X-Git-Url: http://git.maemo.org/git/?p=python-purple;a=commitdiff_plain;h=b6228086f86fb49fb290e50f7a143a687b7d3fff Fixing to use active status when account is idle Fixing to use active status when account is idle Signed-off-by: Ragner Magalhaes Acked-by: Bruno Abinader git-svn-id: https://garage.maemo.org/svn/carman/branches/carman-0.7-beta2/python-purple@1464 596f6dd7-e928-0410-a184-9e12fd12cf7e --- diff --git a/account.pyx b/account.pyx index f70873e..1c21884 100644 --- a/account.pyx +++ b/account.pyx @@ -587,6 +587,7 @@ cdef class Account: def set_active_status(self, type, msg=None): cdef status.PurpleStatusType *c_statustype = NULL + cdef savedstatuses.PurpleSavedStatus *c_savedstatus = NULL if self.__exists: if msg: @@ -595,6 +596,22 @@ cdef class Account: else: account.purple_account_set_status(self._get_structure(), type, True, NULL) + + # FIXME: We can create only a savedstatus for each statustype + c_savedstatus = savedstatuses.purple_savedstatus_find(type) + if c_savedstatus == NULL: + c_statustype = account.purple_account_get_status_type( \ + self._get_structure(), type) + c_savedstatus = savedstatuses.purple_savedstatus_new( \ + NULL, status.purple_status_type_get_primitive( \ + c_statustype)) + savedstatuses.purple_savedstatus_set_title(c_savedstatus, + type) + + savedstatuses.purple_savedstatus_set_message(c_savedstatus, msg) + prefs.purple_prefs_set_int("/purple/savedstatus/idleaway", + savedstatuses.purple_savedstatus_get_creation_time(c_savedstatus)) + return True else: return False @@ -602,11 +619,27 @@ cdef class Account: def set_status_message(self, type, msg): cdef status.PurpleStatus* c_status = NULL cdef status.PurpleStatusType *c_statustype = NULL + cdef savedstatuses.PurpleSavedStatus *c_savedstatus = NULL if self.__exists and msg: c_status = account.purple_account_get_status(self._get_structure(), type) + if c_status == NULL: + return False status.purple_status_set_attr_string(c_status, "message", msg) + + # FIXME: We can create only a savedstatus for each statustype + c_savedstatus = savedstatuses.purple_savedstatus_find(type) + if c_savedstatus == NULL: + c_statustype = account.purple_account_get_status_type( \ + self._get_structure(), type) + c_savedstatus = savedstatuses.purple_savedstatus_new( \ + NULL, status.purple_status_type_get_primitive( \ + c_statustype)) + savedstatuses.purple_savedstatus_set_title(c_savedstatus, + type) + + savedstatuses.purple_savedstatus_set_message(c_savedstatus, msg) return True else: return False diff --git a/libpurple/prefs.pxd b/libpurple/prefs.pxd index 8ad0832..2755518 100644 --- a/libpurple/prefs.pxd +++ b/libpurple/prefs.pxd @@ -34,3 +34,5 @@ cdef extern from "libpurple/prefs.h": void purple_prefs_rename(char *oldname, char *newname) char *purple_prefs_get_string(char *name) glib.gboolean purple_prefs_load() + void purple_prefs_add_bool(char *name, glib.gboolean value) + void purple_prefs_set_int(char *name, int value) diff --git a/libpurple/savedstatuses.pxd b/libpurple/savedstatuses.pxd index 7071d2f..3519981 100644 --- a/libpurple/savedstatuses.pxd +++ b/libpurple/savedstatuses.pxd @@ -18,10 +18,30 @@ # cimport status +cimport glib +cimport account +cimport status + +cdef extern from *: + ctypedef long int time_t cdef extern from "libpurple/savedstatuses.h": ctypedef struct PurpleSavedStatus: pass - PurpleSavedStatus *c_purple_savedstatus_new "purple_savedstatus_new" (char *title, status.PurpleStatusPrimitive type) + PurpleSavedStatus *purple_savedstatus_new(char *title, status.PurpleStatusPrimitive type) void c_purple_savedstatus_activate "purple_savedstatus_activate" (PurpleSavedStatus *saved_status) + PurpleSavedStatus *purple_savedstatus_get_current() + glib.gboolean purple_savedstatus_is_transient(PurpleSavedStatus *saved_status) + void purple_savedstatus_set_substatus(PurpleSavedStatus *status, account.PurpleAccount *account, \ + status.PurpleStatusType *type, char *message) + void purple_savedstatus_set_idleaway(glib.gboolean idleaway) + PurpleSavedStatus *purple_savedstatus_find(char *title) + PurpleSavedStatus *purple_savedstatus_find_transient_by_type_and_message( \ + status.PurpleStatusPrimitive type, char *message) + void purple_savedstatus_set_message(PurpleSavedStatus *status, char *message) + void purple_savedstatus_activate(PurpleSavedStatus *saved_status) + void purple_savedstatus_activate_for_account(PurpleSavedStatus *saved_status, \ + account.PurpleAccount *account) + time_t purple_savedstatus_get_creation_time(PurpleSavedStatus *saved_status) + void purple_savedstatus_set_title(PurpleSavedStatus *status, char *title)