| 49 if (imaway) |
52 if (imaway) |
| 50 gtk_widget_destroy(imaway); |
53 gtk_widget_destroy(imaway); |
| 51 imaway = NULL; |
54 imaway = NULL; |
| 52 } |
55 } |
| 53 |
56 |
| |
57 void purge_away_queue() |
| |
58 { |
| |
59 struct conversation *cnv; |
| |
60 GSList *templist = message_queue; |
| |
61 |
| |
62 gtk_clist_freeze(GTK_CLIST(clistqueue)); |
| |
63 |
| |
64 gtk_clist_clear(GTK_CLIST(clistqueue)); |
| |
65 |
| |
66 while (templist) |
| |
67 { |
| |
68 struct queued_message *qm = (struct queued_message *)templist->data; |
| |
69 |
| |
70 cnv = find_conversation(qm->name); |
| |
71 |
| |
72 if (!cnv) |
| |
73 cnv = new_conversation(qm->name); |
| |
74 |
| |
75 cnv->gc = qm->gc; |
| |
76 |
| |
77 write_to_conv(cnv, qm->message, WFLAG_RECV, NULL, qm->tm); |
| |
78 |
| |
79 free(qm->message); |
| |
80 |
| |
81 templist = g_slist_remove(templist, qm); |
| |
82 |
| |
83 free(qm); |
| |
84 } |
| |
85 |
| |
86 gtk_clist_thaw(GTK_CLIST(clistqueue)); |
| |
87 |
| |
88 message_queue = NULL; |
| |
89 } |
| |
90 |
| |
91 void toggle_away_queue() |
| |
92 { |
| |
93 if (!clistqueue || !clistqueuesw) |
| |
94 return; |
| |
95 |
| |
96 if (general_options & OPT_GEN_QUEUE_WHEN_AWAY) |
| |
97 { |
| |
98 gtk_widget_show(clistqueue); |
| |
99 gtk_widget_show(clistqueuesw); |
| |
100 } |
| |
101 else |
| |
102 { |
| |
103 gtk_widget_hide(clistqueue); |
| |
104 gtk_widget_hide(clistqueuesw); |
| |
105 purge_away_queue(); |
| |
106 } |
| |
107 |
| |
108 } |
| |
109 |
| 54 void do_im_back(GtkWidget *w, GtkWidget *x) |
110 void do_im_back(GtkWidget *w, GtkWidget *x) |
| 55 { |
111 { |
| 56 if (imaway) { |
112 if (imaway) { |
| 57 GtkWidget *tmp = imaway; |
113 GtkWidget *tmp = imaway; |
| 58 /*GSList *templist = message_queue; |
114 |
| 59 |
115 purge_away_queue(); |
| 60 while (templist) |
116 |
| 61 { |
|
| 62 struct queued_message *qm = (struct queued_message *)templist->data; |
|
| 63 |
|
| 64 free(qm->message); |
|
| 65 |
|
| 66 message_queue = g_slist_remove(message_queue, qm); |
|
| 67 |
|
| 68 free(qm); |
|
| 69 } |
|
| 70 */ |
|
| 71 |
|
| 72 imaway = NULL; |
117 imaway = NULL; |
| 73 gtk_widget_destroy(tmp); |
118 gtk_widget_destroy(tmp); |
| 74 if (w != tmp) |
119 if (w != tmp) |
| 75 return; |
120 return; |
| 76 } |
121 } |
| 118 */ |
163 */ |
| 119 strncpy_nohtml(buf, a->message, sizeof(buf)); |
164 strncpy_nohtml(buf, a->message, sizeof(buf)); |
| 120 |
165 |
| 121 vscrollbar = gtk_vscrollbar_new(GTK_TEXT(awaytext)->vadj); |
166 vscrollbar = gtk_vscrollbar_new(GTK_TEXT(awaytext)->vadj); |
| 122 gtk_widget_show(vscrollbar); |
167 gtk_widget_show(vscrollbar); |
| 123 gtk_widget_set_usize(awaytext, 225, 100); |
168 gtk_widget_set_usize(awaytext, 245, 120); |
| 124 gtk_text_set_word_wrap(GTK_TEXT(awaytext), TRUE); |
169 gtk_text_set_word_wrap(GTK_TEXT(awaytext), TRUE); |
| 125 gtk_widget_show(awaytext); |
170 gtk_widget_show(awaytext); |
| 126 gtk_text_freeze(GTK_TEXT(awaytext)); |
171 gtk_text_freeze(GTK_TEXT(awaytext)); |
| 127 gtk_text_insert(GTK_TEXT(awaytext), NULL, NULL, NULL, buf, -1); |
172 gtk_text_insert(GTK_TEXT(awaytext), NULL, NULL, NULL, buf, -1); |
| 128 gtk_widget_show(awaytext); |
173 gtk_widget_show(awaytext); |
| 129 |
174 |
| 130 if (display_options & OPT_DISP_COOL_LOOK) |
175 if (display_options & OPT_DISP_COOL_LOOK) |
| 131 gtk_button_set_relief(GTK_BUTTON(back), GTK_RELIEF_NONE); |
176 gtk_button_set_relief(GTK_BUTTON(back), GTK_RELIEF_NONE); |
| 132 |
177 |
| |
178 clistqueuesw = gtk_scrolled_window_new(NULL, NULL); |
| |
179 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(clistqueuesw), GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
| |
180 |
| |
181 clistqueue = gtk_clist_new(2); |
| |
182 gtk_clist_set_column_width(GTK_CLIST(clistqueue), 0, 100); |
| |
183 gtk_widget_set_usize(GTK_WIDGET(clistqueue), -1, 50); |
| |
184 gtk_container_add(GTK_CONTAINER(clistqueuesw), clistqueue); |
| |
185 |
| 133 /* Put the buttons in the box */ |
186 /* Put the buttons in the box */ |
| 134 gtk_box_pack_start(GTK_BOX(vbox), awaytext, TRUE, TRUE, 0); |
187 gtk_box_pack_start(GTK_BOX(vbox), awaytext, TRUE, TRUE, 0); |
| |
188 |
| |
189 gtk_box_pack_start(GTK_BOX(vbox), clistqueuesw, TRUE, TRUE, 0); |
| |
190 |
| 135 gtk_box_pack_start(GTK_BOX(vbox), back, FALSE, FALSE, 0); |
191 gtk_box_pack_start(GTK_BOX(vbox), back, FALSE, FALSE, 0); |
| 136 |
192 |
| 137 /* Handle closes right */ |
193 /* Handle closes right */ |
| 138 gtk_signal_connect(GTK_OBJECT(imaway), "destroy", GTK_SIGNAL_FUNC(do_im_back), imaway); |
194 gtk_signal_connect(GTK_OBJECT(imaway), "destroy", GTK_SIGNAL_FUNC(do_im_back), imaway); |
| 139 gtk_signal_connect(GTK_OBJECT(back), "clicked", GTK_SIGNAL_FUNC(do_im_back), imaway); |
195 gtk_signal_connect(GTK_OBJECT(back), "clicked", GTK_SIGNAL_FUNC(do_im_back), imaway); |
| 140 |
196 |
| 141 /* Finish up */ |
197 /* Finish up */ |
| |
198 if (general_options & OPT_GEN_QUEUE_WHEN_AWAY) |
| |
199 { |
| |
200 gtk_widget_show(clistqueuesw); |
| |
201 gtk_widget_show(clistqueue); |
| |
202 } |
| |
203 |
| 142 gtk_widget_show(back); |
204 gtk_widget_show(back); |
| 143 gtk_widget_show(vbox); |
205 gtk_widget_show(vbox); |
| 144 if (strlen(a->name)) |
206 if (strlen(a->name)) |
| 145 gtk_window_set_title(GTK_WINDOW(imaway), a->name); |
207 gtk_window_set_title(GTK_WINDOW(imaway), a->name); |
| 146 else |
208 else |