pidgin/gtkconv.c

branch
cpw.attention_ui
changeset 28718
f706db7d0680
parent 28616
f9f308f6b293
parent 28573
c890e9052237
child 29478
8b5abd81ee11
equal deleted inserted replaced
28714:d14fe5e97aa7 28718:f706db7d0680
1255 } 1255 }
1256 1256
1257 } 1257 }
1258 1258
1259 static void 1259 static void
1260 menu_get_attention_cb(gpointer data, guint action, GtkWidget *widget)
1261 {
1262 PidginWindow *win = data;
1263 PurpleConversation *conv = pidgin_conv_window_get_active_conversation(win);
1264
1265 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) {
1266 purple_prpl_send_attention(purple_conversation_get_gc(conv),
1267 purple_conversation_get_name(conv), 0);
1268 purple_conversation_attention(conv, purple_conversation_get_name(conv),
1269 0, PURPLE_MESSAGE_SEND, time(NULL));
1270 }
1271 }
1272
1273 static void
1260 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget) 1274 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget)
1261 { 1275 {
1262 PidginWindow *win = data; 1276 PidginWindow *win = data;
1263 PurpleConversation *conv; 1277 PurpleConversation *conv;
1264 1278
2320 g_return_if_fail(conv != NULL); 2334 g_return_if_fail(conv != NULL);
2321 2335
2322 gtkconv = PIDGIN_CONVERSATION(conv); 2336 gtkconv = PIDGIN_CONVERSATION(conv);
2323 old_conv = gtkconv->active_conv; 2337 old_conv = gtkconv->active_conv;
2324 2338
2339 purple_debug_info("gtkconv", "setting active conversation on toolbar %p\n",
2340 conv);
2341 gtk_imhtmltoolbar_switch_active_conversation(GTK_IMHTMLTOOLBAR(gtkconv->toolbar),
2342 conv);
2343
2325 if (old_conv == conv) 2344 if (old_conv == conv)
2326 return; 2345 return;
2327 2346
2328 purple_conversation_close_logs(old_conv); 2347 purple_conversation_close_logs(old_conv);
2329 gtkconv->active_conv = conv; 2348 gtkconv->active_conv = conv;
3183 { N_("/Conversation/Media/Audio\\/Video _Call"), NULL, menu_initiate_media_call_cb, 2, 3202 { N_("/Conversation/Media/Audio\\/Video _Call"), NULL, menu_initiate_media_call_cb, 2,
3184 "<StockItem>", PIDGIN_STOCK_TOOLBAR_VIDEO_CALL }, 3203 "<StockItem>", PIDGIN_STOCK_TOOLBAR_VIDEO_CALL },
3185 #endif 3204 #endif
3186 3205
3187 { N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_FILE }, 3206 { N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_FILE },
3207 { N_("/Conversation/Get _Attention"), NULL, menu_get_attention_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_ATTENTION },
3188 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb, 3208 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb,
3189 0, "<Item>", NULL }, 3209 0, "<Item>", NULL },
3190 { N_("/Conversation/_Get Info"), "<CTL>O", menu_get_info_cb, 0, 3210 { N_("/Conversation/_Get Info"), "<CTL>O", menu_get_info_cb, 0,
3191 "<StockItem>", PIDGIN_STOCK_TOOLBAR_USER_INFO }, 3211 "<StockItem>", PIDGIN_STOCK_TOOLBAR_USER_INFO },
3192 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0, 3212 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0,
3567 3587
3568 win->menu.send_file = 3588 win->menu.send_file =
3569 gtk_item_factory_get_widget(win->menu.item_factory, 3589 gtk_item_factory_get_widget(win->menu.item_factory,
3570 N_("/Conversation/Send File...")); 3590 N_("/Conversation/Send File..."));
3571 3591
3592 win->menu.get_attention =
3593 gtk_item_factory_get_widget(win->menu.item_factory,
3594 N_("/Conversation/Get Attention"));
3572 win->menu.add_pounce = 3595 win->menu.add_pounce =
3573 gtk_item_factory_get_widget(win->menu.item_factory, 3596 gtk_item_factory_get_widget(win->menu.item_factory,
3574 N_("/Conversation/Add Buddy Pounce...")); 3597 N_("/Conversation/Add Buddy Pounce..."));
3575 3598
3576 /* --- */ 3599 /* --- */
6497 /* Show stuff that applies to IMs, hide stuff that applies to chats */ 6520 /* Show stuff that applies to IMs, hide stuff that applies to chats */
6498 6521
6499 /* Deal with menu items */ 6522 /* Deal with menu items */
6500 gtk_widget_show(win->menu.view_log); 6523 gtk_widget_show(win->menu.view_log);
6501 gtk_widget_show(win->menu.send_file); 6524 gtk_widget_show(win->menu.send_file);
6525 gtk_widget_show(win->menu.get_attention);
6502 gtk_widget_show(win->menu.add_pounce); 6526 gtk_widget_show(win->menu.add_pounce);
6503 gtk_widget_show(win->menu.get_info); 6527 gtk_widget_show(win->menu.get_info);
6504 gtk_widget_hide(win->menu.invite); 6528 gtk_widget_hide(win->menu.invite);
6505 gtk_widget_show(win->menu.alias); 6529 gtk_widget_show(win->menu.alias);
6506 if (purple_privacy_check(account, purple_conversation_get_name(conv))) { 6530 if (purple_privacy_check(account, purple_conversation_get_name(conv))) {
6525 /* Show stuff that applies to Chats, hide stuff that applies to IMs */ 6549 /* Show stuff that applies to Chats, hide stuff that applies to IMs */
6526 6550
6527 /* Deal with menu items */ 6551 /* Deal with menu items */
6528 gtk_widget_show(win->menu.view_log); 6552 gtk_widget_show(win->menu.view_log);
6529 gtk_widget_hide(win->menu.send_file); 6553 gtk_widget_hide(win->menu.send_file);
6554 gtk_widget_hide(win->menu.get_attention);
6530 gtk_widget_hide(win->menu.add_pounce); 6555 gtk_widget_hide(win->menu.add_pounce);
6531 gtk_widget_hide(win->menu.get_info); 6556 gtk_widget_hide(win->menu.get_info);
6532 gtk_widget_show(win->menu.invite); 6557 gtk_widget_show(win->menu.invite);
6533 gtk_widget_show(win->menu.alias); 6558 gtk_widget_show(win->menu.alias);
6534 gtk_widget_hide(win->menu.block); 6559 gtk_widget_hide(win->menu.block);
6602 gtk_widget_set_sensitive(win->menu.add, (prpl_info->add_buddy != NULL)); 6627 gtk_widget_set_sensitive(win->menu.add, (prpl_info->add_buddy != NULL));
6603 gtk_widget_set_sensitive(win->menu.remove, (prpl_info->remove_buddy != NULL)); 6628 gtk_widget_set_sensitive(win->menu.remove, (prpl_info->remove_buddy != NULL));
6604 gtk_widget_set_sensitive(win->menu.send_file, 6629 gtk_widget_set_sensitive(win->menu.send_file,
6605 (prpl_info->send_file != NULL && (!prpl_info->can_receive_file || 6630 (prpl_info->send_file != NULL && (!prpl_info->can_receive_file ||
6606 prpl_info->can_receive_file(gc, purple_conversation_get_name(conv))))); 6631 prpl_info->can_receive_file(gc, purple_conversation_get_name(conv)))));
6632 gtk_widget_set_sensitive(win->menu.get_attention, (prpl_info->send_attention != NULL));
6607 gtk_widget_set_sensitive(win->menu.alias, 6633 gtk_widget_set_sensitive(win->menu.alias,
6608 (account != NULL) && 6634 (account != NULL) &&
6609 (purple_find_buddy(account, purple_conversation_get_name(conv)) != NULL)); 6635 (purple_find_buddy(account, purple_conversation_get_name(conv)) != NULL));
6610 } 6636 }
6611 else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) 6637 else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT)
6622 /* Or it's a chat that we've left. */ 6648 /* Or it's a chat that we've left. */
6623 6649
6624 /* Then deal with menu items */ 6650 /* Then deal with menu items */
6625 gtk_widget_set_sensitive(win->menu.view_log, TRUE); 6651 gtk_widget_set_sensitive(win->menu.view_log, TRUE);
6626 gtk_widget_set_sensitive(win->menu.send_file, FALSE); 6652 gtk_widget_set_sensitive(win->menu.send_file, FALSE);
6653 gtk_widget_set_sensitive(win->menu.get_attention, FALSE);
6627 gtk_widget_set_sensitive(win->menu.add_pounce, TRUE); 6654 gtk_widget_set_sensitive(win->menu.add_pounce, TRUE);
6628 gtk_widget_set_sensitive(win->menu.get_info, FALSE); 6655 gtk_widget_set_sensitive(win->menu.get_info, FALSE);
6629 gtk_widget_set_sensitive(win->menu.invite, FALSE); 6656 gtk_widget_set_sensitive(win->menu.invite, FALSE);
6630 gtk_widget_set_sensitive(win->menu.alias, FALSE); 6657 gtk_widget_set_sensitive(win->menu.alias, FALSE);
6631 gtk_widget_set_sensitive(win->menu.add, FALSE); 6658 gtk_widget_set_sensitive(win->menu.add, FALSE);
6926 unseen = PIDGIN_UNSEEN_TEXT; 6953 unseen = PIDGIN_UNSEEN_TEXT;
6927 6954
6928 conv_set_unseen(conv, unseen); 6955 conv_set_unseen(conv, unseen);
6929 } 6956 }
6930 } 6957 }
6958
6931 6959
6932 static PurpleConversationUiOps conversation_ui_ops = 6960 static PurpleConversationUiOps conversation_ui_ops =
6933 { 6961 {
6934 pidgin_conv_new, 6962 pidgin_conv_new,
6935 pidgin_conv_destroy, /* destroy_conversation */ 6963 pidgin_conv_destroy, /* destroy_conversation */

mercurial