r3856 - in trunk/src/target/OM-2007.2/applications/openmoko-dialer2: . src/phone-kit

chris at sita.openmoko.org chris at sita.openmoko.org
Wed Jan 16 16:24:29 CET 2008


Author: chris
Date: 2008-01-16 16:24:27 +0100 (Wed, 16 Jan 2008)
New Revision: 3856

Added:
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-scale.c
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-scale.h
Removed:
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-button.c
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-button.h
Modified:
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/configure.ac
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/Makefile.am
   trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-talking.c
Log:
        * configure.ac:
        * src/phone-kit/Makefile.am:
        Add alsa to dependencies and compile volume control object/widget

        * src/phone-kit/moko-alsa-volume-button.c:
        * src/phone-kit/moko-alsa-volume-button.h:
        Remove unused MokoAlsaVolumeButton

        * src/phone-kit/moko-alsa-volume-scale.[ch]:
        Add new MokoAlsaVolumeScale

        * src/phone-kit/moko-talking.c: (volume_changed_cb),
        (moko_talking_init):
        Integrate volume control widget, bug #394


Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog	2008-01-16 14:06:46 UTC (rev 3855)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog	2008-01-16 15:24:27 UTC (rev 3856)
@@ -1,5 +1,22 @@
 2008-01-16  Chris Lord  <chris at openedhand.com>
 
+	* configure.ac:
+	* src/phone-kit/Makefile.am:
+	Add alsa to dependencies and compile volume control object/widget
+
+	* src/phone-kit/moko-alsa-volume-button.c:
+	* src/phone-kit/moko-alsa-volume-button.h:
+	Remove unused MokoAlsaVolumeButton
+
+	* src/phone-kit/moko-alsa-volume-scale.[ch]:
+	Add new MokoAlsaVolumeScale
+
+	* src/phone-kit/moko-talking.c: (volume_changed_cb),
+	(moko_talking_init):
+	Integrate volume control widget, bug #394
+
+2008-01-16  Chris Lord  <chris at openedhand.com>
+
 	* src/dialer/moko-tips.c: (moko_tips_set_matches):
 	Fix not setting entry data on first contact if it has no photo (bug
 	#1122)

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/configure.ac
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/configure.ac	2008-01-16 14:06:46 UTC (rev 3855)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/configure.ac	2008-01-16 15:24:27 UTC (rev 3856)
@@ -23,6 +23,7 @@
 
 PKG_CHECK_MODULES(JANA, libjana libjana-ecal libjana-gtk)
 PKG_CHECK_MODULES(NOTIFY, libnotify)
+PKG_CHECK_MODULES(ALSA, alsa)
 
 old_cflags=$CFLAGS
 CFLAGS=$DIALER_CFLAGS

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/Makefile.am
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/Makefile.am	2008-01-16 14:06:46 UTC (rev 3855)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/Makefile.am	2008-01-16 15:24:27 UTC (rev 3856)
@@ -1,5 +1,5 @@
 AM_CPPFLAGS = -DDATADIR=\"$(datadir)\" -DPKGDATADIR=\"$(pkgdatadir)\"
-AM_CFLAGS = -Wall @DIALER_CFLAGS@ @JANA_CFLAGS@ @NOTIFY_CFLAGS@
+AM_CFLAGS = -Wall @DIALER_CFLAGS@ @JANA_CFLAGS@ @NOTIFY_CFLAGS@ @ALSA_CFLAGS@
 
 INCLUDES = -I$(top_srcdir)/src/common
 
@@ -14,10 +14,12 @@
 	moko-notify.c moko-notify.h \
 	moko-sound.c moko-sound.h \
 	moko-talking.c moko-talking.h \
+	moko-alsa-volume-control.c moko-alsa-volume-control.h \
+	moko-alsa-volume-scale.c moko-alsa-volume-scale.h \
 	moko-pin.c moko-pin.h \
 	moko-mcc-dc.h
 
-phone_kit_LDADD = @DIALER_LIBS@ @JANA_LIBS@ @NOTIFY_LIBS@ $(top_srcdir)/src/common/libdialer-common.a
+phone_kit_LDADD = @DIALER_LIBS@ @JANA_LIBS@ @NOTIFY_LIBS@ @ALSA_LIBS@ $(top_srcdir)/src/common/libdialer-common.a
 
 
 %-glue.h: %-dbus.xml

Deleted: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-button.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-button.c	2008-01-16 14:06:46 UTC (rev 3855)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-button.c	2008-01-16 15:24:27 UTC (rev 3856)
@@ -1,149 +0,0 @@
-
-#include "moko-alsa-volume-button.h"
-
-G_DEFINE_TYPE (MokoAlsaVolumeButton, moko_alsa_volume_button, \
-	GTK_TYPE_SCALE_BUTTON)
-
-#define ALSA_VOLUME_BUTTON_PRIVATE(o) \
-	(G_TYPE_INSTANCE_GET_PRIVATE ((o), MOKO_TYPE_ALSA_VOLUME_BUTTON, \
-	 MokoAlsaVolumeButtonPrivate))
-
-typedef struct _MokoAlsaVolumeButtonPrivate MokoAlsaVolumeButtonPrivate;
-
-struct _MokoAlsaVolumeButtonPrivate {
-	MokoAlsaVolumeControl *control;
-};
-
-enum {
-	PROP_CONTROL = 1,
-};
-
-static void
-moko_alsa_volume_button_get_property (GObject *object, guint property_id,
-				      GValue *value, GParamSpec *pspec)
-{
-	MokoAlsaVolumeButtonPrivate *priv = ALSA_VOLUME_BUTTON_PRIVATE (object);
-	
-	switch (property_id) {
-	    case PROP_CONTROL :
-		g_value_set_object (value, priv->control);
-		break;
-	    default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-	}
-}
-
-static void
-moko_alsa_volume_button_set_property (GObject *object, guint property_id,
-                              const GValue *value, GParamSpec *pspec)
-{
-	switch (property_id) {
-	    case PROP_CONTROL :
-		moko_alsa_volume_button_set_control (
-			MOKO_ALSA_VOLUME_BUTTON (object),
-			g_value_get_object (value));
-		break;
-	    default:
-		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
-	}
-}
-
-static void
-moko_alsa_volume_button_finalize (GObject *object)
-{
-	MokoAlsaVolumeButton *button = MOKO_ALSA_VOLUME_BUTTON (object);
-	MokoAlsaVolumeButtonPrivate *priv = ALSA_VOLUME_BUTTON_PRIVATE (button);
-	
-	if (priv->control) g_object_unref (priv->control);
-	
-	G_OBJECT_CLASS (moko_alsa_volume_button_parent_class)->
-		finalize (object);
-}
-
-static void
-moko_alsa_volume_button_value_changed (GtkScaleButton *button, gdouble value)
-{
-	MokoAlsaVolumeButtonPrivate *priv = ALSA_VOLUME_BUTTON_PRIVATE (button);
-	
-	if (GTK_SCALE_BUTTON_CLASS (moko_alsa_volume_button_parent_class)->
-	    value_changed)
-		GTK_SCALE_BUTTON_CLASS (moko_alsa_volume_button_parent_class)->
-			value_changed (button, value);
-	
-	moko_alsa_volume_control_set_volume (priv->control,
-		gtk_scale_button_get_value (button) / 100.0);
-}
-
-static void
-moko_alsa_volume_button_class_init (MokoAlsaVolumeButtonClass *klass)
-{
-	GObjectClass *object_class = G_OBJECT_CLASS (klass);
-	GtkScaleButtonClass *button_class = GTK_SCALE_BUTTON_CLASS (klass);
-
-	g_type_class_add_private (klass, sizeof (MokoAlsaVolumeButtonPrivate));
-
-	object_class->get_property = moko_alsa_volume_button_get_property;
-	object_class->set_property = moko_alsa_volume_button_set_property;
-	object_class->finalize = moko_alsa_volume_button_finalize;
-	
-	button_class->value_changed = moko_alsa_volume_button_value_changed;
-
-	g_object_class_install_property (
-		object_class,
-		PROP_CONTROL,
-		g_param_spec_object (
-			"control",
-			"MokoAlsaVolumeControl",
-			"The volume control object to hook onto.",
-			MOKO_TYPE_ALSA_VOLUME_CONTROL,
-			G_PARAM_READWRITE));
-}
-
-static void
-moko_alsa_volume_button_init (MokoAlsaVolumeButton *self)
-{
-}
-
-GtkWidget *
-moko_alsa_volume_button_new (void)
-{
-	return GTK_WIDGET (g_object_new (MOKO_TYPE_ALSA_VOLUME_BUTTON, NULL));
-}
-
-static void
-volume_changed_cb (MokoAlsaVolumeControl *control, gdouble volume,
-		   MokoAlsaVolumeButton *button)
-{
-	gtk_scale_button_set_value (GTK_SCALE_BUTTON (button), volume * 100.0);
-}
-
-void
-moko_alsa_volume_button_set_control (MokoAlsaVolumeButton *button,
-				     MokoAlsaVolumeControl *control)
-{
-	MokoAlsaVolumeButtonPrivate *priv = ALSA_VOLUME_BUTTON_PRIVATE (button);
-	
-	if (priv->control) {
-		g_signal_handlers_disconnect_by_func (priv->control,
-			volume_changed_cb, button);
-		g_object_unref (priv->control);
-		priv->control = NULL;
-	}
-	
-	if (control) {
-		priv->control = g_object_ref (control);
-		g_signal_connect (priv->control, "volume_changed",
-			G_CALLBACK (volume_changed_cb), button);
-		gtk_scale_button_set_value (GTK_SCALE_BUTTON (button),
-			moko_alsa_volume_control_get_volume (control) * 100.0);
-	}
-}
-
-MokoAlsaVolumeControl *
-moko_alsa_volume_button_get_control (MokoAlsaVolumeButton *button)
-{
-	MokoAlsaVolumeButtonPrivate *priv = ALSA_VOLUME_BUTTON_PRIVATE (button);
-	
-	return priv->control;
-}
-

Deleted: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-button.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-button.h	2008-01-16 14:06:46 UTC (rev 3855)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-button.h	2008-01-16 15:24:27 UTC (rev 3856)
@@ -1,53 +0,0 @@
-#ifndef _MOKO_ALSA_VOLUME_BUTTON
-#define _MOKO_ALSA_VOLUME_BUTTON
-
-#include <glib-object.h>
-#include <gtk/gtk.h>
-#include "moko-alsa-volume-control.h"
-
-G_BEGIN_DECLS
-
-#define MOKO_TYPE_ALSA_VOLUME_BUTTON moko_alsa_volume_button_get_type()
-
-#define MOKO_ALSA_VOLUME_BUTTON(obj) \
-	(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
-	MOKO_TYPE_ALSA_VOLUME_BUTTON, MokoAlsaVolumeButton))
-
-#define MOKO_ALSA_VOLUME_BUTTON_CLASS(klass) \
-	(G_TYPE_CHECK_CLASS_CAST ((klass), \
-	MOKO_TYPE_ALSA_VOLUME_BUTTON, MokoAlsaVolumeButtonClass))
-
-#define MOKO_IS_ALSA_VOLUME_BUTTON(obj) \
-	(G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
-	MOKO_TYPE_ALSA_VOLUME_BUTTON))
-
-#define MOKO_IS_ALSA_VOLUME_BUTTON_CLASS(klass) \
-	(G_TYPE_CHECK_CLASS_TYPE ((klass), \
-	MOKO_TYPE_ALSA_VOLUME_BUTTON))
-
-#define MOKO_ALSA_VOLUME_BUTTON_GET_CLASS(obj) \
-	(G_TYPE_INSTANCE_GET_CLASS ((obj), \
-	MOKO_TYPE_ALSA_VOLUME_BUTTON, MokoAlsaVolumeButtonClass))
-
-typedef struct {
-	GtkScaleButton parent;
-} MokoAlsaVolumeButton;
-
-typedef struct {
-	GtkScaleButtonClass parent_class;
-} MokoAlsaVolumeButtonClass;
-
-GType moko_alsa_volume_button_get_type (void);
-
-GtkWidget *moko_alsa_volume_button_new (void);
-
-void moko_alsa_volume_button_set_control (MokoAlsaVolumeButton *button,
-					  MokoAlsaVolumeControl *control);
-
-MokoAlsaVolumeControl *moko_alsa_volume_button_get_control (
-			MokoAlsaVolumeButton *button);
-
-G_END_DECLS
-
-#endif /* _MOKO_ALSA_VOLUME_BUTTON */
-

Added: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-scale.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-scale.c	2008-01-16 14:06:46 UTC (rev 3855)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-scale.c	2008-01-16 15:24:27 UTC (rev 3856)
@@ -0,0 +1,207 @@
+
+#include "moko-alsa-volume-scale.h"
+
+G_DEFINE_TYPE (MokoAlsaVolumeScale, moko_alsa_volume_scale, \
+	GTK_TYPE_EVENT_BOX)
+
+#define ALSA_VOLUME_SCALE_PRIVATE(o) \
+	(G_TYPE_INSTANCE_GET_PRIVATE ((o), MOKO_TYPE_ALSA_VOLUME_SCALE, \
+	 MokoAlsaVolumeScalePrivate))
+
+typedef struct _MokoAlsaVolumeScalePrivate MokoAlsaVolumeScalePrivate;
+
+struct _MokoAlsaVolumeScalePrivate {
+	MokoAlsaVolumeControl *control;
+	GtkWidget             *scale;
+};
+
+enum {
+	PROP_CONTROL = 1,
+	PROP_ORIENTATION,
+};
+
+static void
+scale_value_changed_cb (GtkRange *range, MokoAlsaVolumeScale *scale)
+{
+	gdouble value = gtk_range_get_value (range);
+	MokoAlsaVolumeScalePrivate *priv = ALSA_VOLUME_SCALE_PRIVATE (scale);
+	
+	moko_alsa_volume_control_set_volume (priv->control, value);
+}
+
+
+static void
+create_widgets (MokoAlsaVolumeScale *scale, GtkOrientation orientation)
+{
+	GtkBox *box;
+	GtkWidget *image;
+	
+	MokoAlsaVolumeScalePrivate *priv = ALSA_VOLUME_SCALE_PRIVATE (scale);
+	
+	if (orientation == GTK_ORIENTATION_HORIZONTAL)
+		box = GTK_BOX (gtk_hbox_new (FALSE, 6));
+	else box = GTK_BOX (gtk_vbox_new (FALSE, 6));
+	
+	if (orientation == GTK_ORIENTATION_HORIZONTAL)
+		image = gtk_image_new_from_icon_name ("moko-volume-down.png",
+			GTK_ICON_SIZE_SMALL_TOOLBAR);
+	else image = gtk_image_new_from_icon_name ("moko-volume-up.png",
+		GTK_ICON_SIZE_SMALL_TOOLBAR);
+	
+	gtk_box_pack_start (box, image, FALSE, TRUE, 0);
+	
+	if (orientation == GTK_ORIENTATION_HORIZONTAL)
+		image = gtk_image_new_from_icon_name ("moko-volume-up.png",
+			GTK_ICON_SIZE_SMALL_TOOLBAR);
+	else image = gtk_image_new_from_icon_name ("moko-volume-down.png",
+		GTK_ICON_SIZE_SMALL_TOOLBAR);
+	
+	gtk_box_pack_end (box, image, FALSE, TRUE, 0);
+	
+	if (orientation == GTK_ORIENTATION_HORIZONTAL) {
+		priv->scale = gtk_hscale_new_with_range (0.0, 1.0, 0.02);
+	} else {
+		priv->scale = gtk_vscale_new_with_range (0.0, 1.0, 0.02);
+		gtk_range_set_inverted (GTK_RANGE (priv->scale), TRUE);
+	}
+	gtk_scale_set_draw_value (GTK_SCALE (priv->scale), FALSE);
+
+	gtk_box_pack_start (box, priv->scale, TRUE, TRUE, 0);
+	
+	g_signal_connect (priv->scale, "value-changed",
+		G_CALLBACK (scale_value_changed_cb), scale);
+	
+	gtk_container_add (GTK_CONTAINER (scale), GTK_WIDGET (box));
+	gtk_widget_show_all (GTK_WIDGET (box));
+	gtk_widget_set_no_show_all (GTK_WIDGET (box), TRUE);
+}
+
+static void
+moko_alsa_volume_scale_get_property (GObject *object, guint property_id,
+				     GValue *value, GParamSpec *pspec)
+{
+	MokoAlsaVolumeScalePrivate *priv = ALSA_VOLUME_SCALE_PRIVATE (object);
+	
+	switch (property_id) {
+	    case PROP_CONTROL :
+		g_value_set_object (value, priv->control);
+		break;
+	    default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+	}
+}
+
+static void
+moko_alsa_volume_scale_set_property (GObject *object, guint property_id,
+				     const GValue *value, GParamSpec *pspec)
+{
+	switch (property_id) {
+	    case PROP_CONTROL :
+		moko_alsa_volume_scale_set_control (
+			MOKO_ALSA_VOLUME_SCALE (object),
+			g_value_get_object (value));
+		break;
+	    case PROP_ORIENTATION :
+		create_widgets (MOKO_ALSA_VOLUME_SCALE (object),
+			g_value_get_enum (value));
+		break;
+	    default:
+		G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
+	}
+}
+
+static void
+moko_alsa_volume_scale_finalize (GObject *object)
+{
+	MokoAlsaVolumeScale *scale = MOKO_ALSA_VOLUME_SCALE (object);
+	MokoAlsaVolumeScalePrivate *priv = ALSA_VOLUME_SCALE_PRIVATE (scale);
+	
+	if (priv->control) g_object_unref (priv->control);
+	
+	G_OBJECT_CLASS (moko_alsa_volume_scale_parent_class)->
+		finalize (object);
+}
+
+static void
+moko_alsa_volume_scale_class_init (MokoAlsaVolumeScaleClass *klass)
+{
+	GObjectClass *object_class = G_OBJECT_CLASS (klass);
+
+	g_type_class_add_private (klass, sizeof (MokoAlsaVolumeScalePrivate));
+
+	object_class->get_property = moko_alsa_volume_scale_get_property;
+	object_class->set_property = moko_alsa_volume_scale_set_property;
+	object_class->finalize = moko_alsa_volume_scale_finalize;
+
+	g_object_class_install_property (
+		object_class,
+		PROP_CONTROL,
+		g_param_spec_object (
+			"control",
+			"MokoAlsaVolumeControl",
+			"The volume control object to hook onto.",
+			MOKO_TYPE_ALSA_VOLUME_CONTROL,
+			G_PARAM_READWRITE));
+
+	g_object_class_install_property (
+		object_class,
+		PROP_ORIENTATION,
+		g_param_spec_enum (
+			"orientation",
+			"GtkOrientation",
+			"The orientation of the scale.",
+			GTK_TYPE_ORIENTATION,
+			GTK_ORIENTATION_HORIZONTAL,
+			G_PARAM_WRITABLE | G_PARAM_CONSTRUCT_ONLY));
+}
+
+static void
+moko_alsa_volume_scale_init (MokoAlsaVolumeScale *self)
+{
+}
+
+GtkWidget *
+moko_alsa_volume_scale_new (GtkOrientation orientation)
+{
+	return GTK_WIDGET (g_object_new (MOKO_TYPE_ALSA_VOLUME_SCALE,
+		"orientation", orientation, NULL));
+}
+
+static void
+volume_changed_cb (MokoAlsaVolumeControl *control, gdouble volume,
+		   MokoAlsaVolumeScale *scale)
+{
+	MokoAlsaVolumeScalePrivate *priv = ALSA_VOLUME_SCALE_PRIVATE (scale);
+	gtk_range_set_value (GTK_RANGE (priv->scale), volume);
+}
+
+void
+moko_alsa_volume_scale_set_control (MokoAlsaVolumeScale *scale,
+				     MokoAlsaVolumeControl *control)
+{
+	MokoAlsaVolumeScalePrivate *priv = ALSA_VOLUME_SCALE_PRIVATE (scale);
+	
+	if (priv->control) {
+		g_signal_handlers_disconnect_by_func (priv->control,
+			volume_changed_cb, scale);
+		g_object_unref (priv->control);
+		priv->control = NULL;
+	}
+	
+	if (control) {
+		priv->control = g_object_ref (control);
+		g_signal_connect (priv->control, "volume_changed",
+			G_CALLBACK (volume_changed_cb), scale);
+		gtk_range_set_value (GTK_RANGE (priv->scale),
+			moko_alsa_volume_control_get_volume (control));
+	}
+}
+
+MokoAlsaVolumeControl *
+moko_alsa_volume_scale_get_control (MokoAlsaVolumeScale *scale)
+{
+	MokoAlsaVolumeScalePrivate *priv = ALSA_VOLUME_SCALE_PRIVATE (scale);
+	
+	return priv->control;
+}
+

Added: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-scale.h
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-scale.h	2008-01-16 14:06:46 UTC (rev 3855)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-scale.h	2008-01-16 15:24:27 UTC (rev 3856)
@@ -0,0 +1,53 @@
+#ifndef _MOKO_ALSA_VOLUME_SCALE
+#define _MOKO_ALSA_VOLUME_SCALE
+
+#include <glib-object.h>
+#include <gtk/gtk.h>
+#include "moko-alsa-volume-control.h"
+
+G_BEGIN_DECLS
+
+#define MOKO_TYPE_ALSA_VOLUME_SCALE moko_alsa_volume_scale_get_type()
+
+#define MOKO_ALSA_VOLUME_SCALE(obj) \
+	(G_TYPE_CHECK_INSTANCE_CAST ((obj), \
+	MOKO_TYPE_ALSA_VOLUME_SCALE, MokoAlsaVolumeScale))
+
+#define MOKO_ALSA_VOLUME_SCALE_CLASS(klass) \
+	(G_TYPE_CHECK_CLASS_CAST ((klass), \
+	MOKO_TYPE_ALSA_VOLUME_SCALE, MokoAlsaVolumeScaleClass))
+
+#define MOKO_IS_ALSA_VOLUME_SCALE(obj) \
+	(G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
+	MOKO_TYPE_ALSA_VOLUME_SCALE))
+
+#define MOKO_IS_ALSA_VOLUME_SCALE_CLASS(klass) \
+	(G_TYPE_CHECK_CLASS_TYPE ((klass), \
+	MOKO_TYPE_ALSA_VOLUME_SCALE))
+
+#define MOKO_ALSA_VOLUME_SCALE_GET_CLASS(obj) \
+	(G_TYPE_INSTANCE_GET_CLASS ((obj), \
+	MOKO_TYPE_ALSA_VOLUME_SCALE, MokoAlsaVolumeScaleClass))
+
+typedef struct {
+	GtkEventBox parent;
+} MokoAlsaVolumeScale;
+
+typedef struct {
+	GtkEventBoxClass parent_class;
+} MokoAlsaVolumeScaleClass;
+
+GType moko_alsa_volume_scale_get_type (void);
+
+GtkWidget *moko_alsa_volume_scale_new (GtkOrientation orientation);
+
+void moko_alsa_volume_scale_set_control (MokoAlsaVolumeScale *scale,
+					  MokoAlsaVolumeControl *control);
+
+MokoAlsaVolumeControl *moko_alsa_volume_scale_get_control (
+			MokoAlsaVolumeScale *scale);
+
+G_END_DECLS
+
+#endif /* _MOKO_ALSA_VOLUME_SCALE */
+

Modified: trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-talking.c
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-talking.c	2008-01-16 14:06:46 UTC (rev 3855)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-talking.c	2008-01-16 15:24:27 UTC (rev 3856)
@@ -23,6 +23,8 @@
 #include "moko-talking.h"
 #include "moko-dialer-panel.h"
 #include "moko-dialer-textview.h"
+#include "moko-alsa-volume-control.h"
+#include "moko-alsa-volume-scale.h"
 
 G_DEFINE_TYPE (MokoTalking, moko_talking, GTK_TYPE_WIDGET)
 
@@ -51,6 +53,7 @@
 
   GtkWidget *person;
   GtkWidget *status;
+  GtkWidget *volume;
   
   GtkToolItem *speaker_toggle_btn;
   
@@ -65,6 +68,9 @@
   guint timeout;
   
   gint call_direction;
+  
+  MokoAlsaVolumeControl *amp_left;
+  MokoAlsaVolumeControl *amp_right;
 };
 
 enum
@@ -504,6 +510,13 @@
 }
 
 static void
+volume_changed_cb (MokoAlsaVolumeControl *control1, gdouble volume,
+                   MokoAlsaVolumeControl *control2)
+{
+  moko_alsa_volume_control_set_volume (control2, volume);
+}
+
+static void
 moko_talking_init (MokoTalking *talking)
 {
   MokoTalkingPrivate *priv;
@@ -550,6 +563,22 @@
   gtk_tool_item_set_expand (item, TRUE);
   g_signal_connect (item, "clicked", G_CALLBACK (on_reject_clicked), talking);
   gtk_toolbar_insert (GTK_TOOLBAR (toolbar), item, 4);
+  
+  /* Volume controls */
+  priv->amp_left = moko_alsa_volume_control_new ();
+  moko_alsa_volume_control_set_device_from_name (priv->amp_left, "neo1973");
+  moko_alsa_volume_control_set_element_from_name (priv->amp_left, "Amp Left");
+  priv->amp_right = moko_alsa_volume_control_new ();
+  moko_alsa_volume_control_set_device_from_name (priv->amp_right, "neo1973");
+  moko_alsa_volume_control_set_element_from_name (priv->amp_right, "Amp Right");
+  
+  priv->volume = moko_alsa_volume_scale_new (GTK_ORIENTATION_HORIZONTAL);
+  moko_alsa_volume_scale_set_control (MOKO_ALSA_VOLUME_SCALE (priv->volume),
+                                      priv->amp_left);
+  
+  /* Chain Amp Left to Amp Right */
+  g_signal_connect (priv->amp_left, "volume_changed",
+                    G_CALLBACK (volume_changed_cb), priv->amp_right);
 
   /* Outgoing call and talking share the same toolbar */
   priv->main_bar = toolbar = gtk_toolbar_new ();
@@ -606,6 +635,9 @@
 
   priv->status = label = gtk_label_new ("");
   gtk_box_pack_start (GTK_BOX (hbox), label, TRUE, TRUE, 0);
+  
+  /* The volume control */
+  gtk_box_pack_start (GTK_BOX (vbox), priv->volume, FALSE, TRUE, 12);
 
   /* Load the pixbufs */
   for (i = 0; i < N_PICS; i++)





More information about the commitlog mailing list