Mercurial > pidgin.yaz
comparison pidgin/gtkconv.c @ 18803:abb9aac69507
merge of '7ee71f1a32c4a5d7001c0049f2c7ec1e6cb54fa3'
and 'c896d38533c1a23a6748a75257104e1f501999e5'
author | Ka-Hing Cheung <khc@hxbc.us> |
---|---|
date | Sun, 05 Aug 2007 19:42:29 +0000 |
parents | 42161f9233bf 95fe5195bf98 |
children | 25c2af20affe 536ee8e459ef |
comparison
equal
deleted
inserted
replaced
18790:42161f9233bf | 18803:abb9aac69507 |
---|---|
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); |