# HG changeset patch # User Richard Laager # Date 1139902138 0 # Node ID e629076386f14d30ae7b08d5673ddd5c0c3e0201 # Parent 3de53fe8345f500cd3271f852df40b5698d42364 [gaim-migrate @ 15647] SF Patch #1431225 from Sadrul "This emits a signal when the alias of an account is changed. This can be used by plugins which, for example, uses the account-statusboxes." committer: Tailor Script diff -r 3de53fe8345f -r e629076386f1 doc/account-signals.dox --- a/doc/account-signals.dox Tue Feb 14 05:43:43 2006 +0000 +++ b/doc/account-signals.dox Tue Feb 14 07:28:58 2006 +0000 @@ -90,5 +90,15 @@ @param new The status after change. @endsignaldef + @signaldef account-alias-changed + @signalproto +void (*account_alias_changed)(GaimAccount *account, const char *old); + @endsignalproto + @signaldesc + Emitted when the alias of an account changes (after the change). + @param account The account for which the alias was changed. + @param old The alias before change. + @endsignaldef + */ // vim: syntax=c tw=75 et diff -r 3de53fe8345f -r e629076386f1 plugins/ChangeLog.API --- a/plugins/ChangeLog.API Tue Feb 14 05:43:43 2006 +0000 +++ b/plugins/ChangeLog.API Tue Feb 14 07:28:58 2006 +0000 @@ -303,6 +303,7 @@ Signals - Added: (See the Doxygen docs for details on all signals.) * "account-disabled" * "account-status-changed" + * "account-alias-changed" * "cipher-added" * "cipher-removed" * "conversation-dragging" diff -r 3de53fe8345f -r e629076386f1 plugins/signals-test.c --- a/plugins/signals-test.c Tue Feb 14 05:43:43 2006 +0000 +++ b/plugins/signals-test.c Tue Feb 14 07:28:58 2006 +0000 @@ -68,6 +68,14 @@ gaim_status_get_name(new)); } +static void +account_alias_changed(GaimAccount *account, const char *old, gpointer data) +{ + gaim_debug_misc("signals test", "account-alias-changed (%s, %s, %s)\n", + gaim_account_get_username(account), + old, gaim_account_get_alias(account)); +} + /************************************************************************** * Buddy Icons signal callbacks **************************************************************************/ @@ -537,6 +545,8 @@ plugin, GAIM_CALLBACK(account_set_info_cb), NULL); gaim_signal_connect(accounts_handle, "account-status-changed", plugin, GAIM_CALLBACK(account_status_changed), NULL); + gaim_signal_connect(accounts_handle, "account-alias-changed", + plugin, GAIM_CALLBACK(account_alias_changed), NULL); /* Buddy List subsystem signals */ gaim_signal_connect(blist_handle, "buddy-status-changed", diff -r 3de53fe8345f -r e629076386f1 src/account.c --- a/src/account.c Tue Feb 14 05:43:43 2006 +0000 +++ b/src/account.c Tue Feb 14 07:28:58 2006 +0000 @@ -1205,10 +1205,18 @@ { g_return_if_fail(account != NULL); - g_free(account->alias); - account->alias = (alias == NULL ? NULL : g_strdup(alias)); - - schedule_accounts_save(); + if ((!alias && account->alias) || (alias && !account->alias) || + g_utf8_collate(account->alias, alias)) + { + char *old = account->alias; + + account->alias = (alias == NULL ? NULL : g_strdup(alias)); + gaim_signal_emit(gaim_accounts_get_handle(), "account-alias-changed", + account, old); + g_free(old); + + schedule_accounts_save(); + } } void @@ -2332,6 +2340,12 @@ GAIM_SUBTYPE_STATUS), gaim_value_new(GAIM_TYPE_SUBTYPE, GAIM_SUBTYPE_STATUS)); + + gaim_signal_register(handle, "account-alias-changed", + gaim_marshal_VOID__POINTER_POINTER, NULL, 2, + gaim_value_new(GAIM_TYPE_SUBTYPE, + GAIM_SUBTYPE_ACCOUNT), + gaim_value_new(GAIM_TYPE_STRING)); load_accounts();