From 2a0862580362384e379dc404be98b8a6619e32d3 Mon Sep 17 00:00:00 2001 From: Ragner Magalhaes Date: Tue, 2 Dec 2008 21:22:39 +0000 Subject: [PATCH] Added request_authorize/close_account_request. FIXES: - Added request_authorize callback. - Added close_account_request callback. - Added missing function bind on libpurple/request.pxd. Signed-off-by: Bruno Abinader Acked-by: Ragner Magalhaes git-svn-id: https://garage.maemo.org/svn/carman/branches/carman-0.7-beta2/python-purple@1452 596f6dd7-e928-0410-a184-9e12fd12cf7e --- account_cbs.pxd | 72 ++++++++++++++++++++++++++++++++++++++++++++++--- libpurple/request.pxd | 1 + 2 files changed, 69 insertions(+), 4 deletions(-) diff --git a/account_cbs.pxd b/account_cbs.pxd index 4f2e4be..2ca1414 100644 --- a/account_cbs.pxd +++ b/account_cbs.pxd @@ -24,6 +24,32 @@ cdef extern from *: account_cbs = {} +cdef account.PurpleAccountRequestAuthorizationCb c_request_authorize_authorize_cb = NULL +cdef account.PurpleAccountRequestAuthorizationCb c_request_authorize_deny_cb = NULL +cdef void *c_request_authorize_user_data = NULL + +def call_authorize_cb(): + global c_request_authorize_authorize_cb + global c_request_authorize_deny_cb + global c_request_authorize_user_data + + if c_request_authorize_authorize_cb: + c_request_authorize_authorize_cb(c_request_authorize_user_data) + c_request_authorize_authorize_cb = NULL + c_request_authorize_deny_cb = NULL + c_request_authorize_user_data = NULL + +def call_deny_cb(): + global c_request_authorize_authorize_cb + global c_request_authorize_deny_cb + global c_request_authorize_user_data + + if c_request_authorize_deny_cb: + c_request_authorize_deny_cb(c_request_authorize_user_data) + c_request_authorize_authorize_cb = NULL + c_request_authorize_deny_cb = NULL + c_request_authorize_user_data = NULL + cdef void notify_added(account.PurpleAccount *account, \ const_char *remote_user, const_char *id, const_char *alias, \ const_char *message): @@ -54,9 +80,9 @@ cdef void request_add(account.PurpleAccount *account, \ if account_cbs.has_key("request-add"): ( account_cbs["request-add"])("request-add: TODO") -cdef void *request_authorize(account.PurpleAccount *account, \ +cdef void *request_authorize(account.PurpleAccount *c_account, \ const_char *remote_user, const_char *id, const_char *alias, \ - const_char *message, glib.gboolean on_list, \ + const_char *c_message, glib.gboolean on_list, \ account.PurpleAccountRequestAuthorizationCb authorize_cb, \ account.PurpleAccountRequestAuthorizationCb deny_cb, \ void *user_data): @@ -66,9 +92,44 @@ cdef void *request_authorize(account.PurpleAccount *account, \ authorize_cb(user_data) otherwise call deny_cb(user_data). @return a UI-specific handle, as passed to #close_account_request. """ + cdef connection.PurpleConnection *gc = \ + account.purple_account_get_connection(c_account) + debug.purple_debug_info("account", "%s", "request-authorize\n") + + global c_request_authorize_authorize_cb + global c_request_authorize_deny_cb + global c_request_authorize_user_data + + c_request_authorize_authorize_cb = authorize_cb + c_request_authorize_deny_cb = deny_cb + c_request_authorize_user_data = user_data + + if alias: + remote_alias = alias + else: + remote_alias = None + + if id: + username = id + elif connection.purple_connection_get_display_name(gc) != NULL: + username = connection.purple_connection_get_display_name(gc) + else: + username = account.purple_account_get_username(c_account) + + protocol_id = account.purple_account_get_protocol_id(c_account) + + if c_message: + message = c_message + else: + message = None + if account_cbs.has_key("request-authorize"): - ( account_cbs["request-authorize"])("request-authorize: TODO") + ( account_cbs["request-authorize"])( \ + ( remote_user, remote_alias), \ + (username, protocol_id), \ + message, on_list, \ + call_authorize_cb, call_deny_cb) cdef void close_account_request (void *ui_handle): """ @@ -76,5 +137,8 @@ cdef void close_account_request (void *ui_handle): returned by request_authorize. """ debug.purple_debug_info("account", "%s", "close-account-request\n") + + request.purple_request_close(request.PURPLE_REQUEST_ACTION, ui_handle) + if account_cbs.has_key("close-account-request"): - ( account_cbs["close-account-request"])("close-account-request: TODO") + ( account_cbs["close-account-request"])() diff --git a/libpurple/request.pxd b/libpurple/request.pxd index 2944008..9289520 100644 --- a/libpurple/request.pxd +++ b/libpurple/request.pxd @@ -115,4 +115,5 @@ cdef extern from "libpurple/request.h": conversation.PurpleConversation *conv, void *user_data) + void purple_request_close(PurpleRequestType type, void *uihandle) void purple_request_set_ui_ops(PurpleRequestUiOps *ops) -- 1.7.9.5