| 6254 |
6254 |
| 6255 if ((fields & PIDGIN_CONV_COLORIZE_TITLE) || |
6255 if ((fields & PIDGIN_CONV_COLORIZE_TITLE) || |
| 6256 (fields & PIDGIN_CONV_SET_TITLE) || |
6256 (fields & PIDGIN_CONV_SET_TITLE) || |
| 6257 (fields & PIDGIN_CONV_TOPIC)) |
6257 (fields & PIDGIN_CONV_TOPIC)) |
| 6258 { |
6258 { |
| 6259 char *title; |
6259 char *title, *truncate = NULL, truncchar; |
| 6260 PurpleConvIm *im = NULL; |
6260 PurpleConvIm *im = NULL; |
| 6261 PurpleAccount *account = purple_conversation_get_account(conv); |
6261 PurpleAccount *account = purple_conversation_get_account(conv); |
| |
6262 PurpleBuddy *buddy = NULL; |
| |
6263 PurplePresence *p = NULL; |
| 6262 char *markup = NULL; |
6264 char *markup = NULL; |
| 6263 AtkObject *accessibility_obj; |
6265 AtkObject *accessibility_obj; |
| 6264 /* I think this is a little longer than it needs to be but I'm lazy. */ |
6266 /* I think this is a little longer than it needs to be but I'm lazy. */ |
| 6265 char style[51]; |
6267 char *style, *status_style; |
| 6266 |
6268 |
| 6267 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) |
6269 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) |
| 6268 im = PURPLE_CONV_IM(conv); |
6270 im = PURPLE_CONV_IM(conv); |
| 6269 |
6271 |
| 6270 if ((account == NULL) || |
6272 if ((account == NULL) || |
| 6273 && purple_conv_chat_has_left(PURPLE_CONV_CHAT(conv)))) |
6275 && purple_conv_chat_has_left(PURPLE_CONV_CHAT(conv)))) |
| 6274 title = g_strdup_printf("(%s)", purple_conversation_get_title(conv)); |
6276 title = g_strdup_printf("(%s)", purple_conversation_get_title(conv)); |
| 6275 else |
6277 else |
| 6276 title = g_strdup(purple_conversation_get_title(conv)); |
6278 title = g_strdup(purple_conversation_get_title(conv)); |
| 6277 |
6279 |
| |
6280 if ((truncate = strchr(title, ' ')) || |
| |
6281 (truncate = strchr(title, '@'))) { |
| |
6282 truncchar = *truncate; |
| |
6283 *truncate = '\0'; |
| |
6284 } |
| |
6285 |
| 6278 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) { |
6286 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) { |
| 6279 PurpleBuddy *buddy = purple_find_buddy(account, conv->name); |
6287 buddy = purple_find_buddy(account, conv->name); |
| 6280 if (buddy) |
6288 if (buddy) { |
| |
6289 p = purple_buddy_get_presence(buddy); |
| 6281 markup = pidgin_blist_get_name_markup(buddy, FALSE, FALSE); |
6290 markup = pidgin_blist_get_name_markup(buddy, FALSE, FALSE); |
| 6282 else |
6291 } else { |
| 6283 markup = title; |
6292 markup = title; |
| |
6293 } |
| 6284 } else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) { |
6294 } else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) { |
| 6285 PurpleConvChat *chat = PURPLE_CONV_CHAT(conv); |
6295 PurpleConvChat *chat = PURPLE_CONV_CHAT(conv); |
| 6286 const char *topic = purple_conv_chat_get_topic(chat); |
6296 const char *topic = purple_conv_chat_get_topic(chat); |
| 6287 markup = g_strdup_printf("%s%s<span color='%s' size='smaller'>%s</span>", |
6297 markup = g_strdup_printf("%s%s<span color='%s' size='smaller'>%s</span>", |
| 6288 purple_conversation_get_title(conv), |
6298 purple_conversation_get_title(conv), |
| 6294 CONV_TEXT_COLUMN, markup, -1); |
6304 CONV_TEXT_COLUMN, markup, -1); |
| 6295 |
6305 |
| 6296 if (title != markup) |
6306 if (title != markup) |
| 6297 g_free(markup); |
6307 g_free(markup); |
| 6298 |
6308 |
| 6299 *style = '\0'; |
|
| 6300 |
|
| 6301 if (!GTK_WIDGET_REALIZED(gtkconv->tab_label)) |
6309 if (!GTK_WIDGET_REALIZED(gtkconv->tab_label)) |
| 6302 gtk_widget_realize(gtkconv->tab_label); |
6310 gtk_widget_realize(gtkconv->tab_label); |
| 6303 |
6311 |
| 6304 accessibility_obj = gtk_widget_get_accessible(gtkconv->tab_cont); |
6312 accessibility_obj = gtk_widget_get_accessible(gtkconv->tab_cont); |
| 6305 if (im != NULL && |
6313 if (im != NULL && |
| 6306 purple_conv_im_get_typing_state(im) == PURPLE_TYPING) |
6314 purple_conv_im_get_typing_state(im) == PURPLE_TYPING) { |
| 6307 { |
|
| 6308 atk_object_set_description(accessibility_obj, _("Typing")); |
6315 atk_object_set_description(accessibility_obj, _("Typing")); |
| 6309 strncpy(style, "color=\"#4e9a06\"", sizeof(style)); |
6316 style = "color=\"#4e9a06\""; |
| |
6317 } else if (im != NULL && |
| |
6318 purple_conv_im_get_typing_state(im) == PURPLE_TYPED) { |
| |
6319 atk_object_set_description(accessibility_obj, _("Stopped Typing")); |
| |
6320 style = "color=\"#c4a000\""; |
| |
6321 } else if (gtkconv->unseen_state == PIDGIN_UNSEEN_NICK) { |
| |
6322 atk_object_set_description(accessibility_obj, _("Nick Said")); |
| |
6323 style = "color=\"#204a87\" style=\"italic\" weight=\"bold\""; |
| |
6324 } else if (gtkconv->unseen_state == PIDGIN_UNSEEN_TEXT) { |
| |
6325 atk_object_set_description(accessibility_obj, _("Unread Messages")); |
| |
6326 style = "color=\"#cc0000\" weight=\"bold\""; |
| |
6327 } else if (gtkconv->unseen_state == PIDGIN_UNSEEN_EVENT) { |
| |
6328 atk_object_set_description(accessibility_obj, _("New Event")); |
| |
6329 style = "color=\"#888a85\" style=\"italic\""; |
| |
6330 } else { |
| |
6331 style = ""; |
| 6310 } |
6332 } |
| 6311 else if (im != NULL && |
6333 |
| 6312 purple_conv_im_get_typing_state(im) == PURPLE_TYPED) |
6334 if (p && purple_presence_is_status_primitive_active(p, PURPLE_STATUS_OFFLINE)) { |
| 6313 { |
6335 status_style = "strikethrough='true'"; |
| 6314 atk_object_set_description(accessibility_obj, _("Stopped Typing")); |
6336 } else if (p && !purple_presence_is_status_primitive_active(p, PURPLE_STATUS_AVAILABLE) && |
| 6315 strncpy(style, "color=\"#c4a000\"", sizeof(style)); |
6337 !purple_presence_is_status_primitive_active(p, PURPLE_STATUS_INVISIBLE)) { |
| |
6338 status_style = "style='italic'"; |
| |
6339 } else { |
| |
6340 status_style = ""; |
| 6316 } |
6341 } |
| 6317 else if (gtkconv->unseen_state == PIDGIN_UNSEEN_NICK) |
6342 |
| 6318 { |
6343 if (*style != '\0' || *status_style != '\0') |
| 6319 atk_object_set_description(accessibility_obj, _("Nick Said")); |
|
| 6320 strncpy(style, "color=\"#204a87\" style=\"italic\" weight=\"bold\"", sizeof(style)); |
|
| 6321 } |
|
| 6322 else if (gtkconv->unseen_state == PIDGIN_UNSEEN_TEXT) |
|
| 6323 { |
|
| 6324 atk_object_set_description(accessibility_obj, _("Unread Messages")); |
|
| 6325 strncpy(style, "color=\"#cc0000\" weight=\"bold\"", sizeof(style)); |
|
| 6326 } |
|
| 6327 else if (gtkconv->unseen_state == PIDGIN_UNSEEN_EVENT) |
|
| 6328 { |
|
| 6329 atk_object_set_description(accessibility_obj, _("New Event")); |
|
| 6330 strncpy(style, "color=\"#888a85\" style=\"italic\"", sizeof(style)); |
|
| 6331 } |
|
| 6332 |
|
| 6333 if (*style != '\0') |
|
| 6334 { |
6344 { |
| 6335 char *html_title,*label; |
6345 char *html_title,*label; |
| 6336 |
6346 |
| 6337 html_title = g_markup_escape_text(title, -1); |
6347 html_title = g_markup_escape_text(title, -1); |
| 6338 |
6348 label = g_strdup_printf("<span %s %s>%s</span>", |
| 6339 label = g_strdup_printf("<span %s>%s</span>", |
6349 style, status_style, html_title); |
| 6340 style, html_title); |
|
| 6341 g_free(html_title); |
6350 g_free(html_title); |
| 6342 gtk_label_set_markup(GTK_LABEL(gtkconv->tab_label), label); |
6351 gtk_label_set_markup(GTK_LABEL(gtkconv->tab_label), label); |
| 6343 g_free(label); |
6352 g_free(label); |
| 6344 } |
6353 } |
| 6345 else |
6354 else |
| 6346 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title); |
6355 gtk_label_set_text(GTK_LABEL(gtkconv->tab_label), title); |
| |
6356 |
| |
6357 if (truncate) |
| |
6358 *truncate = truncchar; |
| 6347 |
6359 |
| 6348 if (pidgin_conv_window_is_active_conversation(conv)) |
6360 if (pidgin_conv_window_is_active_conversation(conv)) |
| 6349 update_typing_icon(gtkconv); |
6361 update_typing_icon(gtkconv); |
| 6350 |
6362 |
| 6351 gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title); |
6363 gtk_label_set_text(GTK_LABEL(gtkconv->menu_label), title); |
| 8604 gtk_box_pack_start(GTK_BOX(gtkconv->menu_tabby), gtkconv->menu_label, TRUE, TRUE, 0); |
8616 gtk_box_pack_start(GTK_BOX(gtkconv->menu_tabby), gtkconv->menu_label, TRUE, TRUE, 0); |
| 8605 gtk_widget_show(gtkconv->menu_label); |
8617 gtk_widget_show(gtkconv->menu_label); |
| 8606 gtk_misc_set_alignment(GTK_MISC(gtkconv->menu_label), 0, 0); |
8618 gtk_misc_set_alignment(GTK_MISC(gtkconv->menu_label), 0, 0); |
| 8607 |
8619 |
| 8608 gtk_widget_show(gtkconv->menu_tabby); |
8620 gtk_widget_show(gtkconv->menu_tabby); |
| |
8621 gtk_widget_set_size_request(gtkconv->menu_tabby, 0, -1); |
| 8609 |
8622 |
| 8610 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) |
8623 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) |
| 8611 pidgin_conv_update_buddy_icon(conv); |
8624 pidgin_conv_update_buddy_icon(conv); |
| 8612 |
8625 |
| 8613 /* Build and set conversations tab */ |
8626 /* Build and set conversations tab */ |
| 8720 gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont, |
8733 gtk_notebook_set_tab_label_packing(GTK_NOTEBOOK(win->notebook), gtkconv->tab_cont, |
| 8721 !tabs_side && !angle && pidgin_conv_window_get_gtkconv_count(win) > 1, |
8734 !tabs_side && !angle && pidgin_conv_window_get_gtkconv_count(win) > 1, |
| 8722 TRUE, GTK_PACK_START); |
8735 TRUE, GTK_PACK_START); |
| 8723 |
8736 |
| 8724 /* show the widgets */ |
8737 /* show the widgets */ |
| 8725 gtk_widget_show(gtkconv->icon); |
8738 /* gtk_widget_show(gtkconv->icon); */ |
| 8726 gtk_widget_show(gtkconv->tab_label); |
8739 gtk_widget_show(gtkconv->tab_label); |
| 8727 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/close_on_tabs")) |
8740 if (purple_prefs_get_bool(PIDGIN_PREFS_ROOT "/conversations/close_on_tabs")) |
| 8728 gtk_widget_show(gtkconv->close); |
8741 gtk_widget_show(gtkconv->close); |
| 8729 gtk_widget_show(gtkconv->tabby); |
8742 gtk_widget_show(gtkconv->tabby); |
| 8730 gtk_widget_show(ebox); |
8743 gtk_widget_show(ebox); |