pidgin/gtkconv.c

branch
cpw.attention_ui
changeset 24457
adbbdb0532b0
parent 24265
328bde72a844
child 25922
0b83a033abd6
equal deleted inserted replaced
24456:fa1be35a86da 24457:adbbdb0532b0
1205 } 1205 }
1206 1206
1207 } 1207 }
1208 1208
1209 static void 1209 static void
1210 menu_get_attention_cb(gpointer data, guint action, GtkWidget *widget)
1211 {
1212 PidginWindow *win = data;
1213 PurpleConversation *conv = pidgin_conv_window_get_active_conversation(win);
1214
1215 if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_IM) {
1216 purple_prpl_send_attention(purple_conversation_get_gc(conv),
1217 purple_conversation_get_name(conv), 0);
1218 purple_conversation_attention(conv, purple_conversation_get_name(conv),
1219 0, PURPLE_MESSAGE_SEND, time(NULL));
1220 }
1221 }
1222
1223 static void
1210 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget) 1224 menu_add_pounce_cb(gpointer data, guint action, GtkWidget *widget)
1211 { 1225 {
1212 PidginWindow *win = data; 1226 PidginWindow *win = data;
1213 PurpleConversation *conv; 1227 PurpleConversation *conv;
1214 1228
3072 { N_("/Conversation/Clea_r Scrollback"), "<CTL>L", menu_clear_cb, 0, "<StockItem>", GTK_STOCK_CLEAR }, 3086 { N_("/Conversation/Clea_r Scrollback"), "<CTL>L", menu_clear_cb, 0, "<StockItem>", GTK_STOCK_CLEAR },
3073 3087
3074 { "/Conversation/sep1", NULL, NULL, 0, "<Separator>", NULL }, 3088 { "/Conversation/sep1", NULL, NULL, 0, "<Separator>", NULL },
3075 3089
3076 { N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_FILE }, 3090 { N_("/Conversation/Se_nd File..."), NULL, menu_send_file_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_FILE },
3091 { N_("/Conversation/Get _Attention"), NULL, menu_get_attention_cb, 0, "<StockItem>", PIDGIN_STOCK_TOOLBAR_SEND_ATTENTION },
3077 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb, 3092 { N_("/Conversation/Add Buddy _Pounce..."), NULL, menu_add_pounce_cb,
3078 0, "<Item>", NULL }, 3093 0, "<Item>", NULL },
3079 { N_("/Conversation/_Get Info"), "<CTL>O", menu_get_info_cb, 0, 3094 { N_("/Conversation/_Get Info"), "<CTL>O", menu_get_info_cb, 0,
3080 "<StockItem>", PIDGIN_STOCK_TOOLBAR_USER_INFO }, 3095 "<StockItem>", PIDGIN_STOCK_TOOLBAR_USER_INFO },
3081 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0, 3096 { N_("/Conversation/In_vite..."), NULL, menu_invite_cb, 0,
3387 3402
3388 win->menu.send_file = 3403 win->menu.send_file =
3389 gtk_item_factory_get_widget(win->menu.item_factory, 3404 gtk_item_factory_get_widget(win->menu.item_factory,
3390 N_("/Conversation/Send File...")); 3405 N_("/Conversation/Send File..."));
3391 3406
3407 win->menu.get_attention =
3408 gtk_item_factory_get_widget(win->menu.item_factory,
3409 N_("/Conversation/Get Attention..."));
3392 win->menu.add_pounce = 3410 win->menu.add_pounce =
3393 gtk_item_factory_get_widget(win->menu.item_factory, 3411 gtk_item_factory_get_widget(win->menu.item_factory,
3394 N_("/Conversation/Add Buddy Pounce...")); 3412 N_("/Conversation/Add Buddy Pounce..."));
3395 3413
3396 /* --- */ 3414 /* --- */
6256 /* Show stuff that applies to IMs, hide stuff that applies to chats */ 6274 /* Show stuff that applies to IMs, hide stuff that applies to chats */
6257 6275
6258 /* Deal with menu items */ 6276 /* Deal with menu items */
6259 gtk_widget_show(win->menu.view_log); 6277 gtk_widget_show(win->menu.view_log);
6260 gtk_widget_show(win->menu.send_file); 6278 gtk_widget_show(win->menu.send_file);
6279 gtk_widget_show(win->menu.get_attention);
6261 gtk_widget_show(win->menu.add_pounce); 6280 gtk_widget_show(win->menu.add_pounce);
6262 gtk_widget_show(win->menu.get_info); 6281 gtk_widget_show(win->menu.get_info);
6263 gtk_widget_hide(win->menu.invite); 6282 gtk_widget_hide(win->menu.invite);
6264 gtk_widget_show(win->menu.alias); 6283 gtk_widget_show(win->menu.alias);
6265 if (purple_privacy_check(account, purple_conversation_get_name(conv))) { 6284 if (purple_privacy_check(account, purple_conversation_get_name(conv))) {
6284 /* Show stuff that applies to Chats, hide stuff that applies to IMs */ 6303 /* Show stuff that applies to Chats, hide stuff that applies to IMs */
6285 6304
6286 /* Deal with menu items */ 6305 /* Deal with menu items */
6287 gtk_widget_show(win->menu.view_log); 6306 gtk_widget_show(win->menu.view_log);
6288 gtk_widget_hide(win->menu.send_file); 6307 gtk_widget_hide(win->menu.send_file);
6308 gtk_widget_hide(win->menu.get_attention);
6289 gtk_widget_hide(win->menu.add_pounce); 6309 gtk_widget_hide(win->menu.add_pounce);
6290 gtk_widget_hide(win->menu.get_info); 6310 gtk_widget_hide(win->menu.get_info);
6291 gtk_widget_show(win->menu.invite); 6311 gtk_widget_show(win->menu.invite);
6292 gtk_widget_show(win->menu.alias); 6312 gtk_widget_show(win->menu.alias);
6293 gtk_widget_hide(win->menu.block); 6313 gtk_widget_hide(win->menu.block);
6361 gtk_widget_set_sensitive(win->menu.add, (prpl_info->add_buddy != NULL)); 6381 gtk_widget_set_sensitive(win->menu.add, (prpl_info->add_buddy != NULL));
6362 gtk_widget_set_sensitive(win->menu.remove, (prpl_info->remove_buddy != NULL)); 6382 gtk_widget_set_sensitive(win->menu.remove, (prpl_info->remove_buddy != NULL));
6363 gtk_widget_set_sensitive(win->menu.send_file, 6383 gtk_widget_set_sensitive(win->menu.send_file,
6364 (prpl_info->send_file != NULL && (!prpl_info->can_receive_file || 6384 (prpl_info->send_file != NULL && (!prpl_info->can_receive_file ||
6365 prpl_info->can_receive_file(gc, purple_conversation_get_name(conv))))); 6385 prpl_info->can_receive_file(gc, purple_conversation_get_name(conv)))));
6386 gtk_widget_set_sensitive(win->menu.get_attention, (prpl_info->send_attention != NULL));
6366 gtk_widget_set_sensitive(win->menu.alias, 6387 gtk_widget_set_sensitive(win->menu.alias,
6367 (account != NULL) && 6388 (account != NULL) &&
6368 (purple_find_buddy(account, purple_conversation_get_name(conv)) != NULL)); 6389 (purple_find_buddy(account, purple_conversation_get_name(conv)) != NULL));
6369 } 6390 }
6370 else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) 6391 else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT)
6381 /* Or it's a chat that we've left. */ 6402 /* Or it's a chat that we've left. */
6382 6403
6383 /* Then deal with menu items */ 6404 /* Then deal with menu items */
6384 gtk_widget_set_sensitive(win->menu.view_log, TRUE); 6405 gtk_widget_set_sensitive(win->menu.view_log, TRUE);
6385 gtk_widget_set_sensitive(win->menu.send_file, FALSE); 6406 gtk_widget_set_sensitive(win->menu.send_file, FALSE);
6407 gtk_widget_set_sensitive(win->menu.get_attention, FALSE);
6386 gtk_widget_set_sensitive(win->menu.add_pounce, TRUE); 6408 gtk_widget_set_sensitive(win->menu.add_pounce, TRUE);
6387 gtk_widget_set_sensitive(win->menu.get_info, FALSE); 6409 gtk_widget_set_sensitive(win->menu.get_info, FALSE);
6388 gtk_widget_set_sensitive(win->menu.invite, FALSE); 6410 gtk_widget_set_sensitive(win->menu.invite, FALSE);
6389 gtk_widget_set_sensitive(win->menu.alias, FALSE); 6411 gtk_widget_set_sensitive(win->menu.alias, FALSE);
6390 gtk_widget_set_sensitive(win->menu.add, FALSE); 6412 gtk_widget_set_sensitive(win->menu.add, FALSE);
6684 unseen = PIDGIN_UNSEEN_TEXT; 6706 unseen = PIDGIN_UNSEEN_TEXT;
6685 6707
6686 conv_set_unseen(conv, unseen); 6708 conv_set_unseen(conv, unseen);
6687 } 6709 }
6688 } 6710 }
6711
6689 6712
6690 static PurpleConversationUiOps conversation_ui_ops = 6713 static PurpleConversationUiOps conversation_ui_ops =
6691 { 6714 {
6692 pidgin_conv_new, 6715 pidgin_conv_new,
6693 pidgin_conv_destroy, /* destroy_conversation */ 6716 pidgin_conv_destroy, /* destroy_conversation */

mercurial