changeset 6460:ff4551719cc7

[gaim-migrate @ 6969] I almost hate to do this in a way, but I added another connection UI op specifically for reporting disconnects, so that it's no longer in the core. This will let UIs display a disconnect in ways other than an error dialog, or allow plugins to turn off disconnect notifications. committer: Tailor Script <tailor@pidgin.im>
author Christian Hammond <chipx86@chipx86.com>
date Wed, 13 Aug 2003 22:40:41 +0000
parents b52870734c21
children 29c496e184ae
files src/connection.c src/connection.h src/gtkconn.c src/gtkconv.c src/prpl.c
diffstat 5 files changed, 31 insertions(+), 22 deletions(-) [+]
line wrap: on
line diff
--- a/src/connection.c	Wed Aug 13 22:02:50 2003 +0000
+++ b/src/connection.c	Wed Aug 13 22:40:41 2003 +0000
@@ -316,7 +316,7 @@
 	}
 	else if (gc->state == GAIM_DISCONNECTED) {
 		if (ops != NULL && ops->disconnected != NULL)
-			ops->disconnected(gc, NULL);
+			ops->disconnected(gc);
 	}
 }
 
@@ -399,27 +399,23 @@
 gaim_connection_error(GaimConnection *gc, const char *text)
 {
 	GaimConnectionUiOps *ops;
-	gchar *primary, *secondary;
 
 	g_return_if_fail(gc   != NULL);
 	g_return_if_fail(text != NULL);
 
 	/* If we've already got one error, we don't need any more */
-	if(gc->disconnect_timeout)
+	if (gc->disconnect_timeout)
 		return;
 
-	primary = g_strdup_printf(_("%s has been disconnected"),
-				gaim_account_get_username(gaim_connection_get_account(gc)));
-	secondary = g_strdup_printf("%s\n%s", full_date(),
-								text ? text : _("Reason Unknown."));
-	gaim_notify_error(NULL, _("Connection Error"), primary, secondary);
-	g_free(primary);
-	g_free(secondary);
-
 	ops = gaim_get_connection_ui_ops();
 
-	if (ops != NULL && ops->disconnected != NULL)
-		ops->disconnected(gc, text);
+	if (ops != NULL) {
+		if (ops->report_disconnect != NULL)
+			ops->report_disconnect(gc, text);
+
+		if (ops->disconnected != NULL)
+			ops->disconnected(gc);
+	}
 
 	gc->disconnect_timeout = g_timeout_add(0, gaim_connection_disconnect_cb,
 			gaim_connection_get_account(gc));
--- a/src/connection.h	Wed Aug 13 22:02:50 2003 +0000
+++ b/src/connection.h	Wed Aug 13 22:40:41 2003 +0000
@@ -5,7 +5,7 @@
  * gaim
  *
  * Copyright (C) 2003 Christian Hammond <chipx86@gnupdate.org>
- * 
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or
@@ -48,8 +48,9 @@
 	void (*connect_progress)(GaimConnection *gc, const char *text,
 							 size_t step, size_t step_count);
 	void (*connected)(GaimConnection *gc);
-	void (*disconnected)(GaimConnection *gc, const char *reason);
+	void (*disconnected)(GaimConnection *gc);
 	void (*notice)(GaimConnection *gc, const char *text);
+	void (*report_disconnect)(GaimConnection *gc, const char *text);
 
 } GaimConnectionUiOps;
 
--- a/src/gtkconn.c	Wed Aug 13 22:02:50 2003 +0000
+++ b/src/gtkconn.c	Wed Aug 13 22:40:41 2003 +0000
@@ -16,12 +16,12 @@
  * You should have received a copy of the GNU General Public License
  * along with this program; if not, write to the Free Software
  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
- *
  */
 #include "gtkinternal.h"
 
 #include "account.h"
 #include "debug.h"
+#include "notify.h"
 #include "prefs.h"
 #include "util.h"
 
@@ -241,8 +241,7 @@
 		kill_meter(meter, _("Done."));
 }
 
-static void gaim_gtk_connection_disconnected(GaimConnection *gc,
-		const char *reason)
+static void gaim_gtk_connection_disconnected(GaimConnection *gc)
 {
 	struct signon_meter *meter = find_signon_meter(gc);
 
@@ -267,12 +266,27 @@
 {
 }
 
+static void
+gaim_gtk_connection_report_disconnect(GaimConnection *gc, const char *text)
+{
+	gchar *primary, *secondary;
+
+	primary = g_strdup_printf(_("%s has been disconnected"),
+				gaim_account_get_username(gaim_connection_get_account(gc)));
+	secondary = g_strdup_printf("%s\n%s", full_date(),
+								text ? text : _("Reason Unknown."));
+	gaim_notify_error(NULL, _("Connection Error"), primary, secondary);
+	g_free(primary);
+	g_free(secondary);
+}
+
 static GaimConnectionUiOps conn_ui_ops =
 {
 	gaim_gtk_connection_connect_progress,
 	gaim_gtk_connection_connected,
 	gaim_gtk_connection_disconnected,
-	gaim_gtk_connection_notice
+	gaim_gtk_connection_notice,
+	gaim_gtk_connection_report_disconnect
 };
 
 GaimConnectionUiOps *gaim_get_gtk_connection_ui_ops(void)
--- a/src/gtkconv.c	Wed Aug 13 22:02:50 2003 +0000
+++ b/src/gtkconv.c	Wed Aug 13 22:40:41 2003 +0000
@@ -3804,8 +3804,6 @@
 	gboolean new_ui;
 	GaimConversationType conv_type;
 	const char *name;
-	struct buddy *b = NULL;
-	GaimAccount *account;
 
 	name      = gaim_conversation_get_name(conv);
 	conv_type = gaim_conversation_get_type(conv);
--- a/src/prpl.c	Wed Aug 13 22:02:50 2003 +0000
+++ b/src/prpl.c	Wed Aug 13 22:40:41 2003 +0000
@@ -2,7 +2,7 @@
  * gaim
  *
  * Copyright (C) 1998-1999, Mark Spencer <markster@marko.net>
- * 
+ *
  * This program is free software; you can redistribute it and/or modify
  * it under the terms of the GNU General Public License as published by
  * the Free Software Foundation; either version 2 of the License, or