pidgin/gtkconv.c

branch
cpw.attention_ui
changeset 26680
406180d6ac3c
parent 26525
ad90b00d3bc7
parent 26678
9d09c2d90e26
child 26795
e09a6fd69ee7
equal deleted inserted replaced
26644:c0ec4f7d8515 26680:406180d6ac3c
1229 } 1229 }
1230 1230
1231 } 1231 }
1232 1232
1233 static void 1233 static void
1234 menu_get_attention_cb(gpointer data, guint action, GtkWidget *widget)
1235 {
1236 PidginWindow *win = data;
1237 PurpleConversation *conv = pidgin_conv_window_get_active_conversation(win);
1238
1239 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) {
1240 purple_prpl_send_attention(purple_conversation_get_gc(conv),
1241 purple_conversation_get_name(conv), 0);
1242 purple_conversation_attention(conv, purple_conversation_get_name(conv),
1243 0, PURPLE_MESSAGE_SEND, time(NULL));
1244 }
1245 }
1246
1247 static void
1234 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget) 1248 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget)
1235 { 1249 {
1236 PidginWindow *win = data; 1250 PidginWindow *win = data;
1237 PurpleConversation *conv; 1251 PurpleConversation *conv;
1238 1252
2294 g_return_if_fail(conv != NULL); 2308 g_return_if_fail(conv != NULL);
2295 2309
2296 gtkconv = PIDGIN_CONVERSATION(conv); 2310 gtkconv = PIDGIN_CONVERSATION(conv);
2297 old_conv = gtkconv->active_conv; 2311 old_conv = gtkconv->active_conv;
2298 2312
2313 purple_debug_info("gtkconv", "setting active conversation on toolbar %p\n",
2314 conv);
2315 gtk_imhtmltoolbar_switch_active_conversation(GTK_IMHTMLTOOLBAR(gtkconv->toolbar),
2316 conv);
2317
2299 if (old_conv == conv) 2318 if (old_conv == conv)
2300 return; 2319 return;
2301 2320
2302 purple_conversation_close_logs(old_conv); 2321 purple_conversation_close_logs(old_conv);
2303 gtkconv->active_conv = conv; 2322 gtkconv->active_conv = conv;
3141 { N_("/Conversation/Media/Audio\\/Video _Call"), NULL, menu_initiate_media_call_cb, 2, 3160 { N_("/Conversation/Media/Audio\\/Video _Call"), NULL, menu_initiate_media_call_cb, 2,
3142 "<StockItem>", PIDGIN_STOCK_TOOLBAR_VIDEO_CALL }, 3161 "<StockItem>", PIDGIN_STOCK_TOOLBAR_VIDEO_CALL },
3143 #endif 3162 #endif
3144 3163
3145 { N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_FILE }, 3164 { N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_FILE },
3165 { N_("/Conversation/Get _Attention"), NULL, menu_get_attention_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_ATTENTION },
3146 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb, 3166 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb,
3147 0, "<Item>", NULL }, 3167 0, "<Item>", NULL },
3148 { N_("/Conversation/_Get Info"), "<CTL>O", menu_get_info_cb, 0, 3168 { N_("/Conversation/_Get Info"), "<CTL>O", menu_get_info_cb, 0,
3149 "<StockItem>", PIDGIN_STOCK_TOOLBAR_USER_INFO }, 3169 "<StockItem>", PIDGIN_STOCK_TOOLBAR_USER_INFO },
3150 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0, 3170 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0,
3468 3488
3469 win->menu.send_file = 3489 win->menu.send_file =
3470 gtk_item_factory_get_widget(win->menu.item_factory, 3490 gtk_item_factory_get_widget(win->menu.item_factory,
3471 N_("/Conversation/Send File...")); 3491 N_("/Conversation/Send File..."));
3472 3492
3493 win->menu.get_attention =
3494 gtk_item_factory_get_widget(win->menu.item_factory,
3495 N_("/Conversation/Get Attention"));
3473 win->menu.add_pounce = 3496 win->menu.add_pounce =
3474 gtk_item_factory_get_widget(win->menu.item_factory, 3497 gtk_item_factory_get_widget(win->menu.item_factory,
3475 N_("/Conversation/Add Buddy Pounce...")); 3498 N_("/Conversation/Add Buddy Pounce..."));
3476 3499
3477 /* --- */ 3500 /* --- */
6359 /* Show stuff that applies to IMs, hide stuff that applies to chats */ 6382 /* Show stuff that applies to IMs, hide stuff that applies to chats */
6360 6383
6361 /* Deal with menu items */ 6384 /* Deal with menu items */
6362 gtk_widget_show(win->menu.view_log); 6385 gtk_widget_show(win->menu.view_log);
6363 gtk_widget_show(win->menu.send_file); 6386 gtk_widget_show(win->menu.send_file);
6387 gtk_widget_show(win->menu.get_attention);
6364 gtk_widget_show(win->menu.add_pounce); 6388 gtk_widget_show(win->menu.add_pounce);
6365 gtk_widget_show(win->menu.get_info); 6389 gtk_widget_show(win->menu.get_info);
6366 gtk_widget_hide(win->menu.invite); 6390 gtk_widget_hide(win->menu.invite);
6367 gtk_widget_show(win->menu.alias); 6391 gtk_widget_show(win->menu.alias);
6368 if (purple_privacy_check(account, purple_conversation_get_name(conv))) { 6392 if (purple_privacy_check(account, purple_conversation_get_name(conv))) {
6387 /* Show stuff that applies to Chats, hide stuff that applies to IMs */ 6411 /* Show stuff that applies to Chats, hide stuff that applies to IMs */
6388 6412
6389 /* Deal with menu items */ 6413 /* Deal with menu items */
6390 gtk_widget_show(win->menu.view_log); 6414 gtk_widget_show(win->menu.view_log);
6391 gtk_widget_hide(win->menu.send_file); 6415 gtk_widget_hide(win->menu.send_file);
6416 gtk_widget_hide(win->menu.get_attention);
6392 gtk_widget_hide(win->menu.add_pounce); 6417 gtk_widget_hide(win->menu.add_pounce);
6393 gtk_widget_hide(win->menu.get_info); 6418 gtk_widget_hide(win->menu.get_info);
6394 gtk_widget_show(win->menu.invite); 6419 gtk_widget_show(win->menu.invite);
6395 gtk_widget_show(win->menu.alias); 6420 gtk_widget_show(win->menu.alias);
6396 gtk_widget_hide(win->menu.block); 6421 gtk_widget_hide(win->menu.block);
6494 gtk_widget_set_sensitive(win->menu.add, (prpl_info->add_buddy != NULL)); 6519 gtk_widget_set_sensitive(win->menu.add, (prpl_info->add_buddy != NULL));
6495 gtk_widget_set_sensitive(win->menu.remove, (prpl_info->remove_buddy != NULL)); 6520 gtk_widget_set_sensitive(win->menu.remove, (prpl_info->remove_buddy != NULL));
6496 gtk_widget_set_sensitive(win->menu.send_file, 6521 gtk_widget_set_sensitive(win->menu.send_file,
6497 (prpl_info->send_file != NULL && (!prpl_info->can_receive_file || 6522 (prpl_info->send_file != NULL && (!prpl_info->can_receive_file ||
6498 prpl_info->can_receive_file(gc, purple_conversation_get_name(conv))))); 6523 prpl_info->can_receive_file(gc, purple_conversation_get_name(conv)))));
6524 gtk_widget_set_sensitive(win->menu.get_attention, (prpl_info->send_attention != NULL));
6499 gtk_widget_set_sensitive(win->menu.alias, 6525 gtk_widget_set_sensitive(win->menu.alias,
6500 (account != NULL) && 6526 (account != NULL) &&
6501 (purple_find_buddy(account, purple_conversation_get_name(conv)) != NULL)); 6527 (purple_find_buddy(account, purple_conversation_get_name(conv)) != NULL));
6502 } 6528 }
6503 else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) 6529 else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT)
6514 /* Or it's a chat that we've left. */ 6540 /* Or it's a chat that we've left. */
6515 6541
6516 /* Then deal with menu items */ 6542 /* Then deal with menu items */
6517 gtk_widget_set_sensitive(win->menu.view_log, TRUE); 6543 gtk_widget_set_sensitive(win->menu.view_log, TRUE);
6518 gtk_widget_set_sensitive(win->menu.send_file, FALSE); 6544 gtk_widget_set_sensitive(win->menu.send_file, FALSE);
6545 gtk_widget_set_sensitive(win->menu.get_attention, FALSE);
6519 gtk_widget_set_sensitive(win->menu.add_pounce, TRUE); 6546 gtk_widget_set_sensitive(win->menu.add_pounce, TRUE);
6520 gtk_widget_set_sensitive(win->menu.get_info, FALSE); 6547 gtk_widget_set_sensitive(win->menu.get_info, FALSE);
6521 gtk_widget_set_sensitive(win->menu.invite, FALSE); 6548 gtk_widget_set_sensitive(win->menu.invite, FALSE);
6522 gtk_widget_set_sensitive(win->menu.alias, FALSE); 6549 gtk_widget_set_sensitive(win->menu.alias, FALSE);
6523 gtk_widget_set_sensitive(win->menu.add, FALSE); 6550 gtk_widget_set_sensitive(win->menu.add, FALSE);
6817 unseen = PIDGIN_UNSEEN_TEXT; 6844 unseen = PIDGIN_UNSEEN_TEXT;
6818 6845
6819 conv_set_unseen(conv, unseen); 6846 conv_set_unseen(conv, unseen);
6820 } 6847 }
6821 } 6848 }
6849
6822 6850
6823 static PurpleConversationUiOps conversation_ui_ops = 6851 static PurpleConversationUiOps conversation_ui_ops =
6824 { 6852 {
6825 pidgin_conv_new, 6853 pidgin_conv_new,
6826 pidgin_conv_destroy, /* destroy_conversation */ 6854 pidgin_conv_destroy, /* destroy_conversation */

mercurial