# HG changeset patch # User Paul Aurich # Date 1241161176 0 # Node ID 76a1598ecf1c85d3c52e03674dece0801d10f840 # Parent 4a592e89816291f8543a2cbea1d1e03df1f7126d Add account-(created|destroying) signals. These differ from account-(added|removed) in that they're called at allocation/destruction time instead of when adding the account to the account.c-scoped accounts list (nullclient doesn't call purple_accounts_add). For 3.0.0, barring complaints, it might be reasonable to remove purple_accounts_add and fold purple_accounts_remove into purple_accounts_delete and drop their signals. diff -r 4a592e898162 -r 76a1598ecf1c ChangeLog.API --- a/ChangeLog.API Thu Apr 30 14:44:01 2009 +0000 +++ b/ChangeLog.API Fri May 01 06:59:36 2009 +0000 @@ -9,7 +9,10 @@ * PURPLE_CONTACT * PURPLE_BUDDY * PURPLE_CHAT - * account-actions-changed (see account-signals.dox) + * Account signals (see account-signals.dox) + * account-actions-changed + * account-created + * account-destroying * purple_buddy_destroy * purple_buddy_get_protocol_data * purple_buddy_set_protocol_data diff -r 4a592e898162 -r 76a1598ecf1c doc/account-signals.dox --- a/doc/account-signals.dox Thu Apr 30 14:44:01 2009 +0000 +++ b/doc/account-signals.dox Fri May 01 06:59:36 2009 +0000 @@ -1,6 +1,8 @@ /** @page account-signals Account Signals @signals + @signal account-created + @signal account-destroying @signal account-added @signal account-connecting @signal account-removed @@ -21,6 +23,26 @@
+ @signaldef account-created + @signalproto +void (*account_created)(PurpleAccount *account); + @endsignalproto + @signaldesc + Emitted when an account is created by calling purple_account_new. + @param account The account. + @since 2.6.0 + @endsignaldef + + @signaldef account-destroying + @signalproto +void (*account_destroying)(PurpleAccount *account); + @endsignalproto + @signaldesc + Emitted when an account is about to be destroyed. + @param account The account. + @since 2.6.0 + @endsignaldef + @signaldef account-added @signalproto void (*account_added)(PurpleAccount *account); @@ -28,6 +50,7 @@ @signaldesc Emitted when an account is added. @param account The account that was added. + @see purple_accounts_add @endsignaldef @signaldef account-connecting @@ -46,6 +69,7 @@ @signaldesc Emitted when an account is removed. @param account The account that was removed. + @see purple_accounts_remove @endsignaldef @signaldef account-disabled diff -r 4a592e898162 -r 76a1598ecf1c libpurple/account.c --- a/libpurple/account.c Thu Apr 30 14:44:01 2009 +0000 +++ b/libpurple/account.c Fri May 01 06:59:36 2009 +0000 @@ -954,6 +954,8 @@ /* 0 is not a valid privacy setting */ account->perm_deny = PURPLE_PRIVACY_ALLOW_ALL; + purple_signal_emit(purple_accounts_get_handle(), "account-created", account); + prpl = purple_find_prpl(protocol_id); if (prpl == NULL) @@ -987,6 +989,7 @@ g_return_if_fail(account != NULL); purple_debug_info("account", "Destroying account %p\n", account); + purple_signal_emit(purple_accounts_get_handle(), "account-destroying", account); for (l = purple_get_conversations(); l != NULL; l = l->next) { @@ -2725,6 +2728,14 @@ PURPLE_SUBTYPE_ACCOUNT), purple_value_new(PURPLE_TYPE_STRING)); + purple_signal_register(handle, "account-created", + purple_marshal_VOID__POINTER, NULL, 1, + purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_ACCOUNT)); + + purple_signal_register(handle, "account-destroying", + purple_marshal_VOID__POINTER, NULL, 1, + purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_ACCOUNT)); + purple_signal_register(handle, "account-added", purple_marshal_VOID__POINTER, NULL, 1, purple_value_new(PURPLE_TYPE_SUBTYPE, PURPLE_SUBTYPE_ACCOUNT));