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);