pidgin: 690e0c46: Check for media caps when the conversati...

maiku at soc.pidgin.im maiku at soc.pidgin.im
Thu Aug 6 20:10:40 EDT 2009


-----------------------------------------------------------------
Revision: 690e0c46a823bc8a86dd97edef1482d8ba30d3a6
Ancestor: 854990d63dfa2b6aae75ea348c378b795738e68c
Author: maiku at soc.pidgin.im
Date: 2009-08-07T00:06:12
Branch: im.pidgin.pidgin
URL: http://d.pidgin.im/viewmtn/revision/info/690e0c46a823bc8a86dd97edef1482d8ba30d3a6

Modified files:
        pidgin/gtkconv.c

ChangeLog: 

Check for media caps when the conversation menu is activated.

-------------- next part --------------
============================================================
--- pidgin/gtkconv.c	f42bb456c67102ab14b7061a91b6728a06f28a3c
+++ pidgin/gtkconv.c	62f0495a236c973881f8a5263926abae1dc1dc90
@@ -3326,6 +3326,62 @@ static void
 }
 
 static void
+regenerate_media_items(PidginWindow *win)
+{
+#ifdef USE_VV
+	PurpleAccount *account;
+	PurpleConversation *conv;
+
+	conv = pidgin_conv_window_get_active_conversation(win);
+
+	if (conv == NULL) {
+		purple_debug_error("gtkconv", "couldn't get active conversation"
+				" when regenerating media items\n");
+		return;
+	}
+
+	account = purple_conversation_get_account(conv);
+
+	if (account == NULL) {
+		purple_debug_error("gtkconv", "couldn't get account when"
+				" regenerating media items\n");
+		return;
+	}
+
+	/*
+	 * Check if account support voice and/or calls, and
+	 * if the current buddy	supports it.
+	 */
+	if (account != NULL && purple_conversation_get_type(conv)
+			== PURPLE_CONV_TYPE_IM) {
+		PurpleMediaCaps caps =
+				purple_prpl_get_media_caps(account,
+				purple_conversation_get_name(conv));
+
+		gtk_widget_set_sensitive(win->audio_call,
+				caps & PURPLE_MEDIA_CAPS_AUDIO
+				? TRUE : FALSE);
+		gtk_widget_set_sensitive(win->video_call,
+				caps & PURPLE_MEDIA_CAPS_VIDEO
+				? TRUE : FALSE);
+		gtk_widget_set_sensitive(win->audio_video_call, 
+				caps & PURPLE_MEDIA_CAPS_AUDIO_VIDEO
+				? TRUE : FALSE);
+	} else if (purple_conversation_get_type(conv)
+			== PURPLE_CONV_TYPE_CHAT) {
+		/* for now, don't care about chats... */
+		gtk_widget_set_sensitive(win->audio_call, FALSE);
+		gtk_widget_set_sensitive(win->video_call, FALSE);
+		gtk_widget_set_sensitive(win->audio_video_call, FALSE);
+	} else {
+		gtk_widget_set_sensitive(win->audio_call, FALSE);
+		gtk_widget_set_sensitive(win->video_call, FALSE);
+		gtk_widget_set_sensitive(win->audio_video_call, FALSE);
+	}							
+#endif
+}
+
+static void
 regenerate_options_items(PidginWindow *win)
 {
 	GtkWidget *menu;
@@ -3410,6 +3466,7 @@ static void menubar_activated(GtkWidget 
 static void menubar_activated(GtkWidget *item, gpointer data)
 {
 	PidginWindow *win = data;
+	regenerate_media_items(win);
 	regenerate_options_items(win);
 	regenerate_plugins_items(win);
 
@@ -6484,36 +6541,6 @@ gray_stuff_out(PidginConversation *gtkco
 			buttons |= GTK_IMHTML_CUSTOM_SMILEY;
 		else
 			buttons &= ~GTK_IMHTML_CUSTOM_SMILEY;
-
-#ifdef USE_VV
-		/* check if account support voice calls, and if the current buddy
-			supports it */
-		if (account != NULL && purple_conversation_get_type(conv)
-					== PURPLE_CONV_TYPE_IM) {
-			PurpleMediaCaps caps =
-					purple_prpl_get_media_caps(account,
-					purple_conversation_get_name(conv));
-
-			gtk_widget_set_sensitive(win->audio_call,
-					caps & PURPLE_MEDIA_CAPS_AUDIO
-					? TRUE : FALSE);
-			gtk_widget_set_sensitive(win->video_call,
-					caps & PURPLE_MEDIA_CAPS_VIDEO
-					? TRUE : FALSE);
-			gtk_widget_set_sensitive(win->audio_video_call, 
-					caps & PURPLE_MEDIA_CAPS_AUDIO_VIDEO
-					? TRUE : FALSE);
-		} else if (purple_conversation_get_type(conv) == PURPLE_CONV_TYPE_CHAT) {
-			/* for now, don't care about chats... */
-			gtk_widget_set_sensitive(win->audio_call, FALSE);
-			gtk_widget_set_sensitive(win->video_call, FALSE);
-			gtk_widget_set_sensitive(win->audio_video_call, FALSE);
-		} else {
-			gtk_widget_set_sensitive(win->audio_call, FALSE);
-			gtk_widget_set_sensitive(win->video_call, FALSE);
-			gtk_widget_set_sensitive(win->audio_video_call, FALSE);
-		}							
-#endif
 		
 		gtk_imhtml_set_format_functions(GTK_IMHTML(gtkconv->entry), buttons);
 		if (account != NULL)


More information about the Commits mailing list