diff pidgin/gtkmedia.c @ 25713:4eae2d40f11b

Added a mute button for the local microphone.
author Mike Ruprecht <maiku@soc.pidgin.im>
date Wed, 23 Jul 2008 22:34:22 +0000
parents 1c68f78414b7
children 551a462b346a
line wrap: on
line diff
--- a/pidgin/gtkmedia.c	Wed Jul 23 20:10:18 2008 +0000
+++ b/pidgin/gtkmedia.c	Wed Jul 23 22:34:22 2008 +0000
@@ -58,6 +58,7 @@
 	GtkWidget *accept;
 	GtkWidget *reject;
 	GtkWidget *hangup;
+	GtkWidget *mute;
 
 	GtkWidget *send_progress;
 	GtkWidget *recv_progress;
@@ -157,6 +158,12 @@
 	g_type_class_add_private(klass, sizeof(PidginMediaPrivate));
 }
 
+static void
+pidgin_media_mute_toggled(GtkToggleButton *toggle, PidginMedia *media)
+{
+	purple_media_mute(media->priv->media,
+			gtk_toggle_button_get_active(toggle));
+}
 
 static void
 pidgin_media_init (PidginMedia *media)
@@ -166,11 +173,16 @@
 	media->priv->hangup = gtk_button_new_with_label("Hangup");
 	media->priv->accept = gtk_button_new_with_label("Accept");
 	media->priv->reject = gtk_button_new_with_label("Reject");
+	media->priv->mute = gtk_toggle_button_new_with_label("Mute");
+
+	g_signal_connect(media->priv->mute, "toggled",
+			G_CALLBACK(pidgin_media_mute_toggled), media);
 
 	gtk_box_pack_start(GTK_BOX(media), media->priv->calling, FALSE, FALSE, 0);
 	gtk_box_pack_start(GTK_BOX(media), media->priv->hangup, FALSE, FALSE, 0);
 	gtk_box_pack_start(GTK_BOX(media), media->priv->accept, FALSE, FALSE, 0);
 	gtk_box_pack_start(GTK_BOX(media), media->priv->reject, FALSE, FALSE, 0);
+	gtk_box_pack_end(GTK_BOX(media), media->priv->mute, FALSE, FALSE, 0);
 
 	gtk_widget_show_all(media->priv->accept);
 	gtk_widget_show_all(media->priv->reject);
@@ -572,18 +584,21 @@
 			gtk_widget_hide(gtkmedia->priv->accept);
 			gtk_widget_hide(gtkmedia->priv->reject);
 			gtk_widget_show(gtkmedia->priv->hangup);
+			gtk_widget_hide(gtkmedia->priv->mute);
 			break;
 		case PIDGIN_MEDIA_REQUESTED:
 			gtk_widget_hide(gtkmedia->priv->calling);
 			gtk_widget_show(gtkmedia->priv->accept);
 			gtk_widget_show(gtkmedia->priv->reject);
 			gtk_widget_hide(gtkmedia->priv->hangup);
+			gtk_widget_hide(gtkmedia->priv->mute);
 			break;
 		case PIDGIN_MEDIA_ACCEPTED:
 			gtk_widget_show(gtkmedia->priv->hangup);
 			gtk_widget_hide(gtkmedia->priv->calling);
 			gtk_widget_hide(gtkmedia->priv->accept);
 			gtk_widget_hide(gtkmedia->priv->reject);
+			gtk_widget_show(gtkmedia->priv->mute);
 			break;
 		default:
 			break;