diff src/prpl.c @ 2541:8229710b343b

[gaim-migrate @ 2554] fun stuff. committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Thu, 18 Oct 2001 20:56:59 +0000
parents 0394552f2aab
children 830a83209475
line wrap: on
line diff
--- a/src/prpl.c	Thu Oct 18 19:55:19 2001 +0000
+++ b/src/prpl.c	Thu Oct 18 20:56:59 2001 +0000
@@ -27,6 +27,7 @@
 
 #include "pixmaps/ok.xpm"
 #include "pixmaps/cancel.xpm"
+#include "pixmaps/tb_forward.xpm"
 
 GSList *protocols = NULL;
 
@@ -176,7 +177,7 @@
 	gtk_widget_destroy(p->window);
 }
 
-void do_prompt_dialog(const char *text, void *data, void *doit, void *dont)
+void do_prompt_dialog(const char *text, const char *def, void *data, void *doit, void *dont)
 {
 	GtkWidget *window;
 	GtkWidget *vbox;
@@ -212,6 +213,8 @@
 
 	entry = gtk_entry_new();
 	gtk_box_pack_start(GTK_BOX(vbox), entry, FALSE, FALSE, 0);
+	if (def)
+		gtk_entry_set_text(GTK_ENTRY(entry), text);
 	gtk_signal_connect(GTK_OBJECT(entry), "activate", GTK_SIGNAL_FUNC(act_prompt), p);
 	p->entry = entry;
 
@@ -346,6 +349,7 @@
 	struct gaim_connection *gc;
 	GtkWidget *email_win;
 	GtkWidget *email_label;
+	char *url;
 };
 GSList *mailnots = NULL;
 
@@ -368,11 +372,18 @@
 	}
 	debug_printf("removing mail notification\n");
 	mailnots = g_slist_remove(mailnots, mn);
+	if (mn->url)
+		g_free(mn->url);
 	g_free(mn);
 }
 
-void connection_has_mail(struct gaim_connection *gc, int count, const char *from, const char *subject)
+void connection_has_mail(struct gaim_connection *gc, int count, const char *from, const char *subject, const char *url)
 {
+	GtkWidget *hbox;
+	GtkWidget *vbox;
+	GtkWidget *urlbut;
+	GtkWidget *close;
+
 	struct mail_notify *mn;
 	char buf[2048];
 
@@ -387,65 +398,55 @@
 
 	if (count < 0 && from && subject) {
 		g_snprintf(buf, sizeof buf, "%s has mail from %s: %s", gc->username, from, subject);
-		if (!mn->email_win) {
-			GtkWidget *close;
-
-			mn->email_win = gtk_dialog_new();
-			gtk_window_set_policy(GTK_WINDOW(mn->email_win), 0, 0, 1);
-			gtk_container_set_border_width(GTK_CONTAINER(mn->email_win), 5);
-			gtk_window_set_title(GTK_WINDOW(mn->email_win), "New Mail");
-			gtk_signal_connect(GTK_OBJECT(mn->email_win), "destroy",
-					   GTK_SIGNAL_FUNC(des_email_win), mn);
-			gtk_widget_realize(mn->email_win);
-			aol_icon(mn->email_win->window);
-
-			mn->email_label = gtk_label_new(buf);
-			gtk_box_pack_start(GTK_BOX(GTK_DIALOG(mn->email_win)->vbox),
-					   mn->email_label, 0, 0, 5);
-			gtk_widget_show(mn->email_label);
-
-			close = picture_button(mn->email_win, _("Close"), cancel_xpm);
-			gtk_window_set_focus(GTK_WINDOW(mn->email_win), close);
-			gtk_box_pack_start(GTK_BOX(GTK_DIALOG(mn->email_win)->action_area),
-					   close, 0, 0, 5);
-			gtk_signal_connect(GTK_OBJECT(close), "clicked",                      
-					   GTK_SIGNAL_FUNC(des_email_win), mn);
-
-			gtk_widget_show(mn->email_win);
-		}
-		gtk_label_set_text(GTK_LABEL(mn->email_label), buf);
 	} else if (count) {
 		g_snprintf(buf, sizeof buf, "%s has %d new message%s.",
 			   gc->username, count, count == 1 ? "" : "s");
-		if (!mn->email_win) {
-			GtkWidget *close;
+	} else if (mn->email_win) {
+		gtk_widget_destroy(mn->email_win);
+		return;
+	}
 
-			mn->email_win = gtk_dialog_new();
-			gtk_window_set_policy(GTK_WINDOW(mn->email_win), 0, 0, 1);
-			gtk_container_set_border_width(GTK_CONTAINER(mn->email_win), 5);
-			gtk_window_set_title(GTK_WINDOW(mn->email_win), "New Mail");
-			gtk_signal_connect(GTK_OBJECT(mn->email_win), "destroy",
-					   GTK_SIGNAL_FUNC(des_email_win), mn);
-			gtk_widget_realize(mn->email_win);
-			aol_icon(mn->email_win->window);
+	if (mn->email_win) {
+		gtk_label_set_text(GTK_LABEL(mn->email_label), buf);
+		return;
+	}
+
+
+	mn->email_win = gtk_window_new(GTK_WINDOW_DIALOG);
+	gtk_window_set_wmclass(GTK_WINDOW(mn->email_win), "mail", "Gaim");
+	gtk_window_set_policy(GTK_WINDOW(mn->email_win), FALSE, TRUE, TRUE);
+	gtk_window_set_title(GTK_WINDOW(mn->email_win), _("Gaim - New Mail"));
+	gtk_signal_connect(GTK_OBJECT(mn->email_win), "destroy", GTK_SIGNAL_FUNC(des_email_win), mn);
+	gtk_widget_realize(mn->email_win);
+	aol_icon(mn->email_win->window);
 
-			mn->email_label = gtk_label_new(buf);
-			gtk_box_pack_start(GTK_BOX(GTK_DIALOG(mn->email_win)->vbox),
-					   mn->email_label, 0, 0, 5);
-			gtk_widget_show(mn->email_label);
+	vbox = gtk_vbox_new(FALSE, 5);
+	gtk_container_set_border_width(GTK_CONTAINER(vbox), 5);
+	gtk_container_add(GTK_CONTAINER(mn->email_win), vbox);
+	gtk_widget_show(vbox);
+
+	mn->email_label = gtk_label_new(buf);
+	gtk_label_set_text(GTK_LABEL(mn->email_label), buf);
+	gtk_box_pack_start(GTK_BOX(vbox), mn->email_label, 0, 0, 5);
+	gtk_widget_show(mn->email_label);
+
+	hbox = gtk_hbox_new(FALSE, 5);
+	gtk_box_pack_start(GTK_BOX(vbox), hbox, FALSE, FALSE, 0);
+	gtk_widget_show(hbox);
 
-			close = picture_button(mn->email_win, _("Close"), cancel_xpm);
-			gtk_window_set_focus(GTK_WINDOW(mn->email_win), close);
-			gtk_box_pack_start(GTK_BOX(GTK_DIALOG(mn->email_win)->action_area),
-					   close, 0, 0, 5);
-			gtk_signal_connect(GTK_OBJECT(close), "clicked",                      
-					   GTK_SIGNAL_FUNC(des_email_win), mn);
+	close = picture_button(mn->email_win, _("Close"), cancel_xpm);
+	gtk_window_set_focus(GTK_WINDOW(mn->email_win), close);
+	gtk_box_pack_end(GTK_BOX(hbox), close, 0, 0, 5);
+	gtk_signal_connect(GTK_OBJECT(close), "clicked", GTK_SIGNAL_FUNC(des_email_win), mn);
 
-			gtk_widget_show(mn->email_win);
-		}
-		gtk_label_set_text(GTK_LABEL(mn->email_label), buf);
-	} else if (mn->email_win)
-		gtk_widget_destroy(mn->email_win);
+	if (url) {
+		mn->url = g_strdup(url);
+		urlbut = picture_button(mn->email_win, _("Open Mail"), tb_forward_xpm);
+		gtk_box_pack_end(GTK_BOX(hbox), urlbut, 0, 0, 5);
+		gtk_signal_connect(GTK_OBJECT(urlbut), "clicked", GTK_SIGNAL_FUNC(open_url_nw), mn->url);
+	}
+
+	gtk_widget_show(mn->email_win);
 }
 
 struct icon_data {