Mercurial > pidgin
comparison src/away.c @ 6284:0e910ef6713e
[gaim-migrate @ 6783]
i think this fixes some problems i've been having. it definitely won't hurt anything
committer: Tailor Script <tailor@pidgin.im>
author | Nathan Walp <nwalp@pidgin.im> |
---|---|
date | Wed, 23 Jul 2003 14:01:23 +0000 |
parents | dc42b27101c0 |
children | 8f94cce8faa5 |
comparison
equal
deleted
inserted
replaced
6283:bb97fb848140 | 6284:0e910ef6713e |
---|---|
44 GtkWidget *awayqueuesw; | 44 GtkWidget *awayqueuesw; |
45 | 45 |
46 struct away_message *awaymessage = NULL; | 46 struct away_message *awaymessage = NULL; |
47 int auto_away; | 47 int auto_away; |
48 | 48 |
49 static void destroy_im_away() | |
50 { | |
51 if (imaway) | |
52 gtk_widget_destroy(imaway); | |
53 | |
54 awayqueue = NULL; | |
55 g_object_unref(G_OBJECT(awayqueuestore)); | |
56 awayqueuestore = NULL; | |
57 awayqueuesw = NULL; | |
58 imaway = NULL; | |
59 } | |
60 | |
61 static void dequeue_message(GtkTreeIter *iter) | 49 static void dequeue_message(GtkTreeIter *iter) |
62 { | 50 { |
63 gchar *name; | 51 gchar *name; |
64 GSList *templist; | 52 GSList *templist; |
65 GaimConversation *cnv; | 53 GaimConversation *cnv; |
210 char *buf; | 198 char *buf; |
211 | 199 |
212 if (!a) | 200 if (!a) |
213 return; | 201 return; |
214 | 202 |
215 if (!imaway) { | 203 if(imaway) |
216 GAIM_DIALOG(imaway); | 204 gtk_widget_destroy(imaway); |
217 gtk_window_set_role(GTK_WINDOW(imaway), "imaway"); | 205 |
218 if (strlen(a->name)) | 206 GAIM_DIALOG(imaway); |
219 gtk_window_set_title(GTK_WINDOW(imaway), a->name); | 207 gtk_window_set_role(GTK_WINDOW(imaway), "imaway"); |
220 else | 208 if (strlen(a->name)) |
221 gtk_window_set_title(GTK_WINDOW(imaway), _("Gaim - Away!")); | 209 gtk_window_set_title(GTK_WINDOW(imaway), a->name); |
222 g_signal_connect(G_OBJECT(imaway), "destroy", | 210 else |
223 G_CALLBACK(do_im_back), imaway); | 211 gtk_window_set_title(GTK_WINDOW(imaway), _("Gaim - Away!")); |
224 gtk_widget_realize(imaway); | 212 g_signal_connect(G_OBJECT(imaway), "destroy", |
225 | 213 G_CALLBACK(do_im_back), imaway); |
226 vbox = gtk_vbox_new(FALSE, 5); | 214 gtk_widget_realize(imaway); |
227 gtk_container_add(GTK_CONTAINER(imaway), vbox); | 215 |
228 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); | 216 vbox = gtk_vbox_new(FALSE, 5); |
229 gtk_widget_show(vbox); | 217 gtk_container_add(GTK_CONTAINER(imaway), vbox); |
230 | 218 gtk_container_set_border_width(GTK_CONTAINER(vbox), 5); |
231 sw = gtk_scrolled_window_new(NULL, NULL); | 219 gtk_widget_show(vbox); |
232 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, | 220 |
233 GTK_POLICY_ALWAYS); | 221 sw = gtk_scrolled_window_new(NULL, NULL); |
234 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); | 222 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(sw), GTK_POLICY_NEVER, |
235 gtk_widget_set_size_request(sw, 245, 120); | 223 GTK_POLICY_ALWAYS); |
236 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); | 224 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(sw), GTK_SHADOW_IN); |
237 gtk_widget_show(sw); | 225 gtk_widget_set_size_request(sw, 245, 120); |
238 | 226 gtk_box_pack_start(GTK_BOX(vbox), sw, TRUE, TRUE, 0); |
239 awaytext = gtk_imhtml_new(NULL, NULL); | 227 gtk_widget_show(sw); |
240 gtk_container_add(GTK_CONTAINER(sw), awaytext); | 228 |
241 gaim_setup_imhtml(awaytext); | 229 awaytext = gtk_imhtml_new(NULL, NULL); |
242 gtk_widget_show(awaytext); | 230 gtk_container_add(GTK_CONTAINER(sw), awaytext); |
243 buf = stylize(a->message, BUF_LONG); | 231 gaim_setup_imhtml(awaytext); |
244 gtk_imhtml_append_text(GTK_IMHTML(awaytext), buf, -1, GTK_IMHTML_NO_TITLE | | 232 gtk_widget_show(awaytext); |
245 GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_SCROLL); | 233 buf = stylize(a->message, BUF_LONG); |
246 g_free(buf); | 234 gtk_imhtml_append_text(GTK_IMHTML(awaytext), buf, -1, GTK_IMHTML_NO_TITLE | |
247 gtk_imhtml_append_text(GTK_IMHTML(awaytext), "<BR>", -1, GTK_IMHTML_NO_TITLE | | 235 GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_SCROLL); |
248 GTK_IMHTML_NO_COMMENTS | GTK_IMHTML_NO_SCROLL); | 236 g_free(buf); |
249 | 237 gtk_imhtml_append_text(GTK_IMHTML(awaytext), "<BR>", -1, |
250 awayqueuesw = gtk_scrolled_window_new(NULL, NULL); | 238 GTK_IMHTML_NO_TITLE | GTK_IMHTML_NO_COMMENTS | |
251 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(awayqueuesw), GTK_POLICY_NEVER, | 239 GTK_IMHTML_NO_SCROLL); |
252 GTK_POLICY_AUTOMATIC); | 240 |
253 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(awayqueuesw), | 241 awayqueuesw = gtk_scrolled_window_new(NULL, NULL); |
254 GTK_SHADOW_IN); | 242 gtk_scrolled_window_set_policy(GTK_SCROLLED_WINDOW(awayqueuesw), |
255 gtk_box_pack_start(GTK_BOX(vbox), awayqueuesw, TRUE, TRUE, 0); | 243 GTK_POLICY_NEVER, GTK_POLICY_AUTOMATIC); |
256 | 244 gtk_scrolled_window_set_shadow_type(GTK_SCROLLED_WINDOW(awayqueuesw), |
257 awayqueuestore = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); | 245 GTK_SHADOW_IN); |
258 awayqueue = gtk_tree_view_new_with_model(GTK_TREE_MODEL(awayqueuestore)); | 246 gtk_box_pack_start(GTK_BOX(vbox), awayqueuesw, TRUE, TRUE, 0); |
259 renderer = gtk_cell_renderer_text_new(); | 247 |
260 | 248 awayqueuestore = gtk_list_store_new(2, G_TYPE_STRING, G_TYPE_STRING); |
261 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(awayqueue), FALSE); | 249 awayqueue = gtk_tree_view_new_with_model(GTK_TREE_MODEL(awayqueuestore)); |
262 column = gtk_tree_view_column_new_with_attributes (NULL, renderer, | 250 renderer = gtk_cell_renderer_text_new(); |
263 "text", 0, | 251 |
264 NULL); | 252 gtk_tree_view_set_headers_visible(GTK_TREE_VIEW(awayqueue), FALSE); |
265 gtk_tree_view_append_column(GTK_TREE_VIEW(awayqueue), column); | 253 column = gtk_tree_view_column_new_with_attributes (NULL, renderer, |
266 column = gtk_tree_view_column_new_with_attributes(NULL, renderer, | 254 "text", 0, |
267 "text", 1, | 255 NULL); |
268 NULL); | 256 gtk_tree_view_append_column(GTK_TREE_VIEW(awayqueue), column); |
269 gtk_tree_view_append_column(GTK_TREE_VIEW(awayqueue), column); | 257 column = gtk_tree_view_column_new_with_attributes(NULL, renderer, |
270 | 258 "text", 1, |
271 gtk_container_add(GTK_CONTAINER(awayqueuesw), awayqueue); | 259 NULL); |
272 | 260 gtk_tree_view_append_column(GTK_TREE_VIEW(awayqueue), column); |
273 g_signal_connect(G_OBJECT(awayqueue), "button_press_event", G_CALLBACK(dequeue_cb), NULL); | 261 |
274 | 262 gtk_container_add(GTK_CONTAINER(awayqueuesw), awayqueue); |
275 | 263 |
276 if (gaim_prefs_get_bool("/gaim/gtk/away/queue_messages")) { | 264 g_signal_connect(G_OBJECT(awayqueue), "button_press_event", G_CALLBACK(dequeue_cb), NULL); |
277 gtk_widget_show(awayqueuesw); | 265 |
278 gtk_widget_show(awayqueue); | 266 |
279 } | 267 if (gaim_prefs_get_bool("/gaim/gtk/away/queue_messages")) { |
280 | 268 gtk_widget_show(awayqueuesw); |
281 back = gaim_pixbuf_button_from_stock(_("I'm Back!"), GTK_STOCK_JUMP_TO, GAIM_BUTTON_HORIZONTAL); | 269 gtk_widget_show(awayqueue); |
282 gtk_box_pack_start(GTK_BOX(vbox), back, FALSE, FALSE, 0); | 270 } |
283 g_signal_connect(G_OBJECT(back), "clicked", G_CALLBACK(do_im_back), imaway); | 271 |
284 gtk_window_set_focus(GTK_WINDOW(imaway), back); | 272 back = gaim_pixbuf_button_from_stock(_("I'm Back!"), GTK_STOCK_JUMP_TO, GAIM_BUTTON_HORIZONTAL); |
285 gtk_widget_show(back); | 273 gtk_box_pack_start(GTK_BOX(vbox), back, FALSE, FALSE, 0); |
286 | 274 g_signal_connect(G_OBJECT(back), "clicked", G_CALLBACK(do_im_back), imaway); |
287 awaymessage = a; | 275 gtk_window_set_focus(GTK_WINDOW(imaway), back); |
288 } else { | 276 gtk_widget_show(back); |
289 destroy_im_away(); | 277 |
290 do_away_message(w, a); | 278 awaymessage = a; |
291 return; | |
292 } | |
293 | 279 |
294 /* New away message... Clear out the old sent_aways */ | 280 /* New away message... Clear out the old sent_aways */ |
295 while (away_time_queue) { | 281 while (away_time_queue) { |
296 struct queued_away_response *qar = away_time_queue->data; | 282 struct queued_away_response *qar = away_time_queue->data; |
297 away_time_queue = g_slist_remove(away_time_queue, qar); | 283 away_time_queue = g_slist_remove(away_time_queue, qar); |