comparison src/away.c @ 1775:9ca22174da76

[gaim-migrate @ 1785] cleaning up some stuff of rob's committer: Tailor Script <tailor@pidgin.im>
author Eric Warmenhoven <eric@warmenhoven.org>
date Mon, 30 Apr 2001 08:33:25 +0000
parents 9d0c91c705b7
children 0da2a831c0ae
comparison
equal deleted inserted replaced
1774:9d0c91c705b7 1775:9ca22174da76
58 } 58 }
59 59
60 void purge_away_queue() 60 void purge_away_queue()
61 { 61 {
62 struct conversation *cnv; 62 struct conversation *cnv;
63 GSList *templist = message_queue;
64 63
65 gtk_clist_freeze(GTK_CLIST(clistqueue)); 64 gtk_clist_freeze(GTK_CLIST(clistqueue));
66 gtk_clist_clear(GTK_CLIST(clistqueue)); 65 gtk_clist_clear(GTK_CLIST(clistqueue));
67 66
68 while (templist) 67 while (message_queue) {
69 { 68 struct queued_message *qm = message_queue->data;
70 struct queued_message *qm = (struct queued_message *)templist->data;
71 69
72 cnv = find_conversation(qm->name); 70 cnv = find_conversation(qm->name);
73
74 if (!cnv) 71 if (!cnv)
75 cnv = new_conversation(qm->name); 72 cnv = new_conversation(qm->name);
76 73 if (g_slist_index(connections, qm->gc) >= 0) {
77 cnv->gc = qm->gc; 74 cnv->gc = qm->gc;
78 75 gtk_option_menu_set_history(GTK_OPTION_MENU(cnv->menu),
79 write_to_conv(cnv, qm->message, WFLAG_RECV, NULL, qm->tm); 76 g_slist_index(connections, qm->gc));
80 77 update_buttons_by_protocol(cnv);
81 free(qm->message); 78 }
82 79
83 templist = g_slist_remove(templist, qm); 80 write_to_conv(cnv, qm->message, qm->flags, NULL, qm->tm);
84 81
82 message_queue = g_slist_remove(message_queue, qm);
83
84 g_free(qm->message);
85 g_free(qm); 85 g_free(qm);
86 } 86 }
87 87
88 templist = away_time_queue;
89
90 while (templist)
91 {
92 struct queued_away_response *qar = (struct queued_away_response *)templist->data;
93
94 templist = g_slist_remove(templist, qar);
95 g_free(qar);
96 }
97
98 gtk_clist_thaw(GTK_CLIST(clistqueue)); 88 gtk_clist_thaw(GTK_CLIST(clistqueue));
99
100 message_queue = NULL;
101 away_time_queue = NULL;
102 } 89 }
103 90
104 void toggle_away_queue() 91 void toggle_away_queue()
105 { 92 {
106 if (!clistqueue || !clistqueuesw) 93 if (!clistqueue || !clistqueuesw)
107 return; 94 return;
108 95
109 if (general_options & OPT_GEN_QUEUE_WHEN_AWAY) 96 if (general_options & OPT_GEN_QUEUE_WHEN_AWAY) {
110 {
111 gtk_widget_show(clistqueue); 97 gtk_widget_show(clistqueue);
112 gtk_widget_show(clistqueuesw); 98 gtk_widget_show(clistqueuesw);
113 } 99 } else {
114 else
115 {
116 gtk_widget_hide(clistqueue); 100 gtk_widget_hide(clistqueue);
117 gtk_widget_hide(clistqueuesw); 101 gtk_widget_hide(clistqueuesw);
118 purge_away_queue(); 102 purge_away_queue();
119 } 103 }
120
121 } 104 }
122 105
123 void do_im_back(GtkWidget *w, GtkWidget *x) 106 void do_im_back(GtkWidget *w, GtkWidget *x)
124 { 107 {
125 if (imaway) { 108 if (imaway) {
129 112
130 imaway = NULL; 113 imaway = NULL;
131 gtk_widget_destroy(tmp); 114 gtk_widget_destroy(tmp);
132 if (w != tmp) 115 if (w != tmp)
133 return; 116 return;
117 }
118
119 while (away_time_queue) {
120 struct queued_away_response *qar = away_time_queue->data;
121 away_time_queue = g_slist_remove(away_time_queue, qar);
122 g_free(qar);
134 } 123 }
135 124
136 serv_set_away_all(NULL); 125 serv_set_away_all(NULL);
137 awaymessage = NULL; 126 awaymessage = NULL;
138 #ifdef USE_APPLET 127 #ifdef USE_APPLET
206 /* Handle closes right */ 195 /* Handle closes right */
207 gtk_signal_connect(GTK_OBJECT(imaway), "destroy", GTK_SIGNAL_FUNC(do_im_back), imaway); 196 gtk_signal_connect(GTK_OBJECT(imaway), "destroy", GTK_SIGNAL_FUNC(do_im_back), imaway);
208 gtk_signal_connect(GTK_OBJECT(back), "clicked", GTK_SIGNAL_FUNC(do_im_back), imaway); 197 gtk_signal_connect(GTK_OBJECT(back), "clicked", GTK_SIGNAL_FUNC(do_im_back), imaway);
209 198
210 /* Finish up */ 199 /* Finish up */
211 if (general_options & OPT_GEN_QUEUE_WHEN_AWAY) 200 if (general_options & OPT_GEN_QUEUE_WHEN_AWAY) {
212 {
213 gtk_widget_show(clistqueuesw); 201 gtk_widget_show(clistqueuesw);
214 gtk_widget_show(clistqueue); 202 gtk_widget_show(clistqueue);
215 } 203 }
216 204
217 gtk_widget_show(back); 205 gtk_widget_show(back);
236 "away", _("Back"), (AppletCallbackFunc)do_im_back, NULL); 224 "away", _("Back"), (AppletCallbackFunc)do_im_back, NULL);
237 set_user_state(away); 225 set_user_state(away);
238 #endif 226 #endif
239 227
240 /* New away message... Clear out the old sent_aways */ 228 /* New away message... Clear out the old sent_aways */
241 while (cnv) { 229 while (away_time_queue) {
242 c = (struct conversation *)cnv->data; 230 struct queued_away_response *qar = away_time_queue->data;
243 c->sent_away = 0; 231 away_time_queue = g_slist_remove(away_time_queue, qar);
244 cnv = cnv->next; 232 g_free(qar);
245 } 233 }
246
247 234
248 buf2 = g_malloc(strlen(awaymessage->message) * 4 + 1); 235 buf2 = g_malloc(strlen(awaymessage->message) * 4 + 1);
249 strncpy_withhtml(buf2, awaymessage->message, strlen(awaymessage->message) * 4 + 1); 236 strncpy_withhtml(buf2, awaymessage->message, strlen(awaymessage->message) * 4 + 1);
250 serv_set_away_all(buf2); 237 serv_set_away_all(buf2);
251 g_free(buf2); 238 g_free(buf2);