diff src/account.c @ 13281:e629076386f1

[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 <tailor@pidgin.im>
author Richard Laager <rlaager@wiktel.com>
date Tue, 14 Feb 2006 07:28:58 +0000
parents fcde3faa1f57
children 702107dd58f1
line wrap: on
line diff
--- 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();