[gaim-migrate @ 1245]

Tue, 12 Dec 2000 09:09:24 +0000

author
Eric Warmenhoven <warmenhoven@yahoo.com>
date
Tue, 12 Dec 2000 09:09:24 +0000
changeset 1235
c8d6eef4edce
parent 1234
1423f8a17137
child 1236
59d129db22b4

[gaim-migrate @ 1245]
1. added protocol names to menus in conversation/join chat dialog. helpful if you're signed on as warmenhoven in both irc and yahoo.

2. made "no sounds when away" mean absolutely no sounds when away.

3. fixed buddy pounces and made it so you can save them.

src/buddy.c file | annotate | diff | comparison | revisions
src/buddy_chat.c file | annotate | diff | comparison | revisions
src/conversation.c file | annotate | diff | comparison | revisions
src/dialogs.c file | annotate | diff | comparison | revisions
src/gaim.h file | annotate | diff | comparison | revisions
src/gaimrc.c file | annotate | diff | comparison | revisions
src/server.c file | annotate | diff | comparison | revisions
src/sound.c file | annotate | diff | comparison | revisions
--- a/src/buddy.c	Mon Dec 11 13:06:03 2000 +0000
+++ b/src/buddy.c	Tue Dec 12 09:09:24 2000 +0000
@@ -1295,7 +1295,7 @@
 	save_prefs();
 }
 
-void do_pounce(char *name)
+void do_pounce(char *name, int when)
 {
         char *who;
         
@@ -1311,6 +1311,8 @@
 		b = (struct buddy_pounce *)bp->data;
 		bp = bp->next; /* increment the list here because rem_bp can make our handle bad */
 
+		if (!(b->options & when)) continue;
+
 		u = find_user(b->pouncer, b->protocol); /* find our user */
 		if (u == NULL) continue;
 
@@ -1318,13 +1320,13 @@
 		if (u->gc == NULL) continue;
 		
                 if (!strcasecmp(who, normalize(b->name))) { /* find someone to pounce */
-			if (b->popup == 1)
+			if (b->options & OPT_POUNCE_POPUP)
 			{
 				c = find_conversation(name);
 				if (c == NULL)
 					c = new_conversation(name);
 			}
-			if (b->sendim == 1)
+			if (b->options & OPT_POUNCE_SEND_IM)
 			{
                         	c = find_conversation(name);
                         	if (c == NULL)
@@ -1333,7 +1335,7 @@
                         	write_to_conv(c, b->message, WFLAG_SEND, NULL);
                                 serv_send_im(u->gc, name, b->message, 0);
 			}
-			if (b->cmd == 1)
+			if (b->options & OPT_POUNCE_COMMAND)
 			{
 				int pid = fork();
 
@@ -1350,7 +1352,8 @@
 				}
 			}
                         
-                        rem_bp(NULL, b);
+			if (!(b->options & OPT_POUNCE_SAVE))
+				rem_bp(NULL, b);
                         
                 }
         }
--- a/src/buddy_chat.c	Mon Dec 11 13:06:03 2000 +0000
+++ b/src/buddy_chat.c	Tue Dec 12 09:09:24 2000 +0000
@@ -33,6 +33,7 @@
 #include <gdk/gdkkeysyms.h>
 
 #include "convo.h"
+#include "prpl.h"
 
 #include "pixmaps/tb_forward.xpm"
 #include "pixmaps/join.xpm"
@@ -88,6 +89,7 @@
 	GtkWidget *opt;
 	GSList *c = connections;
 	struct gaim_connection *g;
+	char buf[2048];
 
 	optmenu = gtk_option_menu_new();
 	gtk_box_pack_start(GTK_BOX(box), optmenu, FALSE, FALSE, 0);
@@ -96,7 +98,8 @@
 
 	while (c) {
 		g = (struct gaim_connection *)c->data;
-		opt = gtk_menu_item_new_with_label(g->username);
+		g_snprintf(buf, sizeof buf, "%s (%s)", g->username, (*g->prpl->name)());
+		opt = gtk_menu_item_new_with_label(buf);
 		gtk_object_set_user_data(GTK_OBJECT(opt), g);
 		gtk_signal_connect(GTK_OBJECT(opt), "activate", GTK_SIGNAL_FUNC(joinchat_choose), g);
 		gtk_menu_append(GTK_MENU(menu), opt);
--- a/src/conversation.c	Mon Dec 11 13:06:03 2000 +0000
+++ b/src/conversation.c	Tue Dec 12 09:09:24 2000 +0000
@@ -35,6 +35,7 @@
 #include <gdk/gdkkeysyms.h>
 #include "convo.h"
 #include "gtkspell.h"
+#include "prpl.h"
 
 #include "pixmaps/underline.xpm"
 #include "pixmaps/bold.xpm"
@@ -1646,6 +1647,7 @@
 	GtkWidget *menu, *opt;
 	GSList *g = connections;
 	struct gaim_connection *c;
+	char buf[2048];
 
 	if (g_slist_length(g) < 2)
 		gtk_widget_hide(cnv->menu->parent);
@@ -1654,7 +1656,8 @@
 
 		while (g) {
 			c = (struct gaim_connection *)g->data;
-			opt = gtk_menu_item_new_with_label(c->username);
+			g_snprintf(buf, sizeof buf, "%s (%s)", c->username, (*c->prpl->name)());
+			opt = gtk_menu_item_new_with_label(buf);
 			gtk_object_set_user_data(GTK_OBJECT(opt), cnv);
 			gtk_signal_connect(GTK_OBJECT(opt), "activate",
 					   GTK_SIGNAL_FUNC(convo_sel_send), c);
--- a/src/dialogs.c	Mon Dec 11 13:06:03 2000 +0000
+++ b/src/dialogs.c	Tue Dec 12 09:09:24 2000 +0000
@@ -122,6 +122,7 @@
 	GtkWidget *p_signon;
 	GtkWidget *p_unaway;
 	GtkWidget *p_unidle;
+	GtkWidget *save;
 	GtkWidget *menu;
 
 	struct aim_user *user;
@@ -1009,35 +1010,28 @@
 
 	bp->protocol = b->user->protocol;
 
+	bp->options = 0;
+
 	if (GTK_TOGGLE_BUTTON(b->openwindow)->active)
-		bp->popup = 1;
-	else
-		bp->popup = 0;
+		bp->options |= OPT_POUNCE_POPUP;
 
 	if (GTK_TOGGLE_BUTTON(b->sendim)->active)
-		bp->sendim = 1;
-	else
-		bp->sendim = 0;
+		bp->options |= OPT_POUNCE_SEND_IM;
 	
 	if (GTK_TOGGLE_BUTTON(b->command)->active)
-		bp->cmd = 1;
-	else
-		bp->cmd = 0;
+		bp->options |= OPT_POUNCE_COMMAND;
 	
 	if (GTK_TOGGLE_BUTTON(b->p_signon)->active)
-		bp->signon = 1;
-	else
-		bp->signon = 0;
+		bp->options |= OPT_POUNCE_SIGNON;
 	
 	if (GTK_TOGGLE_BUTTON(b->p_unaway)->active)
-		bp->unaway = 1;
-	else
-		bp->unaway = 0;
+		bp->options |= OPT_POUNCE_UNAWAY;
 	
 	if (GTK_TOGGLE_BUTTON(b->p_unidle)->active)
-		bp->unidle = 1;
-	else
-		bp->unidle = 0;
+		bp->options |= OPT_POUNCE_UNIDLE;
+
+	if (GTK_TOGGLE_BUTTON(b->save)->active)
+		bp->options |= OPT_POUNCE_SAVE;
 
         buddy_pounces = g_list_append(buddy_pounces, bp);
 	
@@ -1215,6 +1209,15 @@
 	gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0);
 	gtk_widget_show(sep);
 
+	b->save = gtk_check_button_new_with_label(_("Save this pounce after activation")); 
+	gtk_toggle_button_set_state(GTK_TOGGLE_BUTTON(b->save), FALSE);
+	gtk_box_pack_start(GTK_BOX(vbox), b->save, FALSE, FALSE, 0);
+	gtk_widget_show(b->save);
+
+	sep = gtk_hseparator_new();
+	gtk_box_pack_start(GTK_BOX(vbox), sep, FALSE, FALSE, 0);
+	gtk_widget_show(sep);
+
         bbox = gtk_hbox_new(FALSE, 5);
         gtk_box_pack_start(GTK_BOX(vbox), bbox, FALSE, FALSE, 0);
         gtk_widget_show(bbox);
--- a/src/gaim.h	Mon Dec 11 13:06:03 2000 +0000
+++ b/src/gaim.h	Tue Dec 12 09:09:24 2000 +0000
@@ -240,20 +240,25 @@
         struct log_conversation *next;
 };
 
+#define OPT_POUNCE_POPUP    0x001
+#define OPT_POUNCE_SEND_IM  0x002
+#define OPT_POUNCE_COMMAND  0x004
+
+#define OPT_POUNCE_SIGNON   0x010
+#define OPT_POUNCE_UNAWAY   0x020
+#define OPT_POUNCE_UNIDLE   0x040
+
+#define OPT_POUNCE_SAVE     0x100
+
 struct buddy_pounce {
         char name[80];
         char message[2048];
 	char command[2048];
-	int popup;
-	int sendim;
-	int cmd;
 	
 	char pouncer[80];
 	int protocol;
 
-	int signon;
-	int unaway;
-	int unidle;
+	int options;
 };
 
 struct away_message {
@@ -648,7 +653,7 @@
 extern void build_edit_tree();
 extern void remove_person(struct group *, struct buddy *);
 extern void remove_category(struct group *);
-extern void do_pounce(char *);
+extern void do_pounce(char *, int);
 extern void do_bp_menu();
 extern struct buddy *find_buddy(struct gaim_connection *, char *);
 extern struct group *find_group(struct gaim_connection *, char *);
--- a/src/gaimrc.c	Mon Dec 11 13:06:03 2000 +0000
+++ b/src/gaimrc.c	Tue Dec 12 09:09:24 2000 +0000
@@ -283,27 +283,10 @@
 			g_snprintf(b->message, sizeof(b->message), "%s", p->value[1]);
 			g_snprintf(b->command, sizeof(b->command), "%s", p->value[2]);
 
-			b->popup = atoi(p->value[2]);
-			b->sendim = atoi(p->value[3]);
+			b->options = atoi(p->value[3]);
 
-			/* Let's check our version and see what's going on here */
-			if ((p->value[4]) && (strlen(p->value[4]) > 0))
-			{
-				/* If we have data, lets use it */
-				g_snprintf(b->pouncer, sizeof(b->pouncer), "%s", p->value[4]);
-				b->protocol = atoi(p->value[5]);
-				b->signon = atoi(p->value[6]);		
-				b->unaway = atoi(p->value[7]);		
-				b->unidle = atoi(p->value[8]);		
-				b->cmd = atoi(p->value[9]);
-			}
-			else
-			{
-				/* Otherwise, we have old info.  Let's adjust */
-				b->signon = 1;
-				b->unaway = 0;
-				b->unidle = 0;
-			}
+			g_snprintf(b->pouncer, sizeof(b->pouncer), "%s", p->value[4]);
+			b->protocol = atoi(p->value[5]);
 
 			filter_break(b->message);
 			buddy_pounces = g_list_append(buddy_pounces, b);
@@ -319,7 +302,7 @@
 	fprintf(f, "pounce {\n");
 
 	while (pnc) {
-		char *str1, *str2;
+		char *str1, *str2, *str3;
 
 		b = (struct buddy_pounce *)pnc->data;
 
@@ -330,12 +313,22 @@
 			str2 = malloc(1);
 			str2[0] = 0;
 		}
+		if (strlen(b->command))
+			str3 = escape_text2(b->command);
+		else {
+			str3 = malloc(1);
+			str3[0] = 0;
+		}
 
-		fprintf(f, "\tentry { %s } { %s } { %d } { %d } { %s } { %d } { %d } { %d } { %d } { %d }\n", str1, str2, b->popup, b->sendim, b->pouncer, b->protocol, b->signon, b->unaway, b->unidle, b->cmd);
+		fprintf(f, "\tentry { %s } { %s } { %s } { %d } { %s } { %d }\n",
+				str1, str2, str3,
+				b->options,
+				b->pouncer, b->protocol);
 
 		/* escape_text2 uses malloc(), so we don't want to g_free these */
 		free(str1);
 		free(str2);
+		free(str3);
 
 		pnc = pnc->next;
 	}
--- a/src/server.c	Mon Dec 11 13:06:03 2000 +0000
+++ b/src/server.c	Tue Dec 12 09:09:24 2000 +0000
@@ -336,8 +336,7 @@
 			}
 		}
 		if (cnv != NULL) {
-			if (sound_options & OPT_SOUND_WHEN_AWAY)
-				play_sound(RECEIVE);
+			play_sound(RECEIVE);
 			write_to_conv(cnv, message, away | WFLAG_RECV, NULL);
 		}
 
@@ -454,7 +453,7 @@
 
 	if (!b->idle && idle) plugin_event(event_buddy_idle, gc, b->name, 0, 0);
 	if (b->idle && !idle) {
-                do_pounce(b->name);
+                do_pounce(b->name, OPT_POUNCE_UNIDLE);
 		plugin_event(event_buddy_unidle, gc, b->name, 0, 0);
 	}
 
@@ -462,7 +461,7 @@
         b->evil = evil;
 
 	if ((b->uc & UC_UNAVAILABLE) && !(type & UC_UNAVAILABLE)) {
-                do_pounce(b->name);
+                do_pounce(b->name, OPT_POUNCE_UNAWAY);
 		plugin_event(event_buddy_back, gc, b->name, 0, 0);
 	} else if (!(b->uc & UC_UNAVAILABLE) && (type & UC_UNAVAILABLE)) {
 		plugin_event(event_buddy_away, gc, b->name, 0, 0);
@@ -476,7 +475,7 @@
         if (loggedin) {
                 if (!b->present) {
                         b->present = 1;
-                        do_pounce(b->name);
+                        do_pounce(b->name, OPT_POUNCE_SIGNON);
 			plugin_event(event_buddy_signon, gc, b->name, 0, 0);
                 }
         } else {
--- a/src/sound.c	Mon Dec 11 13:06:03 2000 +0000
+++ b/src/sound.c	Tue Dec 12 09:09:24 2000 +0000
@@ -406,6 +406,9 @@
 void play_sound(int sound)
 {
 
+	if (awaymessage && !(sound_options & OPT_SOUND_WHEN_AWAY))
+		return;
+
 	switch(sound) {
 	case BUDDY_ARRIVE:
 		if ((sound_options & OPT_SOUND_LOGIN) && logins_not_muted) {

mercurial