changeset 21388:2b5f1b47b1ba

Don't pop up a separate error dialog when an account is disconnected by NAME_IN_USE.
author Will Thompson <will.thompson@collabora.co.uk>
date Wed, 31 Oct 2007 15:32:24 +0000
parents 40a863be7168
children b7a004e65702
files pidgin/gtkconn.c
diffstat 1 files changed, 39 insertions(+), 43 deletions(-) [+]
line wrap: on
line diff
--- a/pidgin/gtkconn.c	Wed Oct 31 15:23:07 2007 +0000
+++ b/pidgin/gtkconn.c	Wed Oct 31 15:32:24 2007 +0000
@@ -136,6 +136,43 @@
 }
 
 static void
+notify_account_disabled(PurpleAccount *account,
+                        PurpleConnectionError reason,
+                        const char *text)
+{
+	const char *username = purple_account_get_username(account);
+	const char *alias = purple_account_get_alias(account);
+	const char *protocol = purple_account_get_protocol_name(account);
+	char *p, *s, *n;
+
+	if (alias)
+		n = g_strdup_printf("%s (%s) (%s)", username, alias, protocol);
+	else
+		n = g_strdup_printf("%s (%s)", username, protocol);
+
+	p = g_strdup_printf(_("%s disconnected"), n);
+
+	if(reason == PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT)
+		s = g_strdup_printf(
+			_("%s\n\n"
+			"%s will not attempt to reconnect the account until you "
+			"re-enable the account.  See %s for information on how to "
+			"compile %s with SSL support."), text, PIDGIN_NAME,
+			"http://developer.pidgin.im/wiki/FAQssl", PIDGIN_NAME);
+	else
+		s = g_strdup_printf(
+			_("%s\n\n"
+			"%s will not attempt to reconnect the account until you "
+			"correct the error and re-enable the account."), text,
+			PIDGIN_NAME);
+
+	purple_notify_error(NULL, NULL, p, s);
+	g_free(p);
+	g_free(s);
+	g_free(n);
+}
+
+static void
 pidgin_connection_report_disconnect_reason (PurpleConnection *gc,
                                             PurpleConnectionError reason,
                                             const char *text)
@@ -159,52 +196,11 @@
 		}
 		info->timeout = g_timeout_add(info->delay, do_signon, account);
 	} else {
-		char *p, *s, *n=NULL ;
 		if (info != NULL)
 			g_hash_table_remove(auto_reconns, account);
 
-		if (purple_account_get_alias(account))
-		{
-			n = g_strdup_printf("%s (%s) (%s)",
-					purple_account_get_username(account),
-					purple_account_get_alias(account),
-					purple_account_get_protocol_name(account));
-		}
-		else
-		{
-			n = g_strdup_printf("%s (%s)",
-					purple_account_get_username(account),
-					purple_account_get_protocol_name(account));
-		}
-
-		p = g_strdup_printf(_("%s disconnected"), n);
-		switch (reason)
-		{
-			case PURPLE_CONNECTION_ERROR_NO_SSL_SUPPORT:
-				s = g_strdup_printf(
-					_("%s\n\n"
-					"%s will not attempt to reconnect the account until you "
-					"re-enable the account.  See %s for information on how to "
-					"compile %s with SSL support."), text, PIDGIN_NAME,
-					"http://developer.pidgin.im/wiki/FAQssl", PIDGIN_NAME);
-				break;
-			case PURPLE_CONNECTION_ERROR_NAME_IN_USE:
-				s = g_strdup_printf(
-					_("%s\n\n"
-					"%s will not attempt to reconnect the account until you "
-					"re-enable it."), text, PIDGIN_NAME);
-				break;
-			default:
-				s = g_strdup_printf(
-					_("%s\n\n"
-					"%s will not attempt to reconnect the account until you "
-					"correct the error and re-enable the account."), text,
-					PIDGIN_NAME);
-		}
-		purple_notify_error(NULL, NULL, p, s);
-		g_free(p);
-		g_free(s);
-		g_free(n);
+		if (reason != PURPLE_CONNECTION_ERROR_NAME_IN_USE)
+			notify_account_disabled(account, reason, text);
 
 		/*
 		 * TODO: Do we really want to disable the account when it's