comparison src/away.c @ 3517:6b0cb60162f4

[gaim-migrate @ 3590] Rob McQueen added a mute feature to his nice little docklet. I added a queuing feature. Configure the docklet in the plugins dialog to queue unread messages, and when you receive a message the docklet will eat it up and show a little message pending icon. Click on it, and read your message. ICQ people will like it. I also made plugin_event use a va_list. I bet this breaks perl. committer: Tailor Script <tailor@pidgin.im>
author Sean Egan <seanegan@gmail.com>
date Mon, 16 Sep 2002 08:35:24 +0000
parents b1ebeecfd2aa
children bdd0bebd2d04
comparison
equal deleted inserted replaced
3516:db00eb77997d 3517:6b0cb60162f4
51 clistqueue = NULL; 51 clistqueue = NULL;
52 clistqueuesw = NULL; 52 clistqueuesw = NULL;
53 imaway = NULL; 53 imaway = NULL;
54 } 54 }
55 55
56 void purge_away_queue() 56 void purge_away_queue(GSList *queue)
57 { 57 {
58 struct conversation *cnv; 58 struct conversation *cnv;
59 59
60 gtk_clist_freeze(GTK_CLIST(clistqueue)); 60 gtk_clist_freeze(GTK_CLIST(clistqueue));
61 gtk_clist_clear(GTK_CLIST(clistqueue)); 61 gtk_clist_clear(GTK_CLIST(clistqueue));
62 62
63 while (message_queue) { 63 while (queue) {
64 struct queued_message *qm = message_queue->data; 64 struct queued_message *qm = queue->data;
65 65
66 cnv = find_conversation(qm->name); 66 cnv = find_conversation(qm->name);
67 if (!cnv) 67 if (!cnv)
68 cnv = new_conversation(qm->name); 68 cnv = new_conversation(qm->name);
69 if (g_slist_index(connections, qm->gc) >= 0) 69 if (g_slist_index(connections, qm->gc) >= 0)
70 set_convo_gc(cnv, qm->gc); 70 set_convo_gc(cnv, qm->gc);
71 write_to_conv(cnv, qm->message, qm->flags, NULL, qm->tm, qm->len); 71 write_to_conv(cnv, qm->message, qm->flags, NULL, qm->tm, qm->len);
72 72
73 message_queue = g_slist_remove(message_queue, qm); 73 queue = g_slist_remove(queue, qm);
74 74
75 g_free(qm->message); 75 g_free(qm->message);
76 g_free(qm); 76 g_free(qm);
77 } 77 }
78 78
132 gtk_widget_show(clistqueue); 132 gtk_widget_show(clistqueue);
133 gtk_widget_show(clistqueuesw); 133 gtk_widget_show(clistqueuesw);
134 } else { 134 } else {
135 gtk_widget_hide(clistqueue); 135 gtk_widget_hide(clistqueue);
136 gtk_widget_hide(clistqueuesw); 136 gtk_widget_hide(clistqueuesw);
137 purge_away_queue(); 137 purge_away_queue(message_queue);
138 } 138 }
139 } 139 }
140 140
141 void do_im_back(GtkWidget *w, GtkWidget *x) 141 void do_im_back(GtkWidget *w, GtkWidget *x)
142 { 142 {
143 if (imaway) { 143 if (imaway) {
144 GtkWidget *tmp = imaway; 144 GtkWidget *tmp = imaway;
145 145
146 purge_away_queue(); 146 purge_away_queue(message_queue);
147 147
148 imaway = NULL; 148 imaway = NULL;
149 gtk_widget_destroy(tmp); 149 gtk_widget_destroy(tmp);
150 if (w != tmp) 150 if (w != tmp)
151 return; 151 return;