Send commitlog mailing list submissions to
commitlog@lists.openmoko.org
To subscribe or unsubscribe via the World Wide Web, visit
http://lists.openmoko.org/mailman/listinfo/commitlog
or, via email, send a message with subject or body 'help' to
[EMAIL PROTECTED]
You can reach the person managing the list at
[EMAIL PROTECTED]
When replying, please edit your Subject line so it is more specific
than "Re: Contents of commitlog digest..."
Today's Topics:
1. r3854 - in
trunk/src/target/OM-2007.2/applications/openmoko-dialer2: .
src/dialer ([EMAIL PROTECTED])
2. r3855 - in
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src:
dialer phone-kit ([EMAIL PROTECTED])
3. r3856 - in
trunk/src/target/OM-2007.2/applications/openmoko-dialer2: .
src/phone-kit ([EMAIL PROTECTED])
--- Begin Message ---
Author: chris
Date: 2008-01-16 13:28:09 +0100 (Wed, 16 Jan 2008)
New Revision: 3854
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-tips.c
Log:
* 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/ChangeLog
===================================================================
--- trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
2008-01-16 06:44:11 UTC (rev 3853)
+++ trunk/src/target/OM-2007.2/applications/openmoko-dialer2/ChangeLog
2008-01-16 12:28:09 UTC (rev 3854)
@@ -1,3 +1,9 @@
+2008-01-16 Chris Lord <[EMAIL PROTECTED]>
+
+ * src/dialer/moko-tips.c: (moko_tips_set_matches):
+ Fix not setting entry data on first contact if it has no photo (bug
+ #1122)
+
2008-01-15 Chris Lord <[EMAIL PROTECTED]>
* src/phone-kit/moko-network.c:
Modified:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-tips.c
===================================================================
---
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-tips.c
2008-01-16 06:44:11 UTC (rev 3853)
+++
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-tips.c
2008-01-16 12:28:09 UTC (rev 3854)
@@ -77,14 +77,14 @@
if (!entry->contact->photo)
{
gtk_image_clear (GTK_IMAGE (priv->image));
- continue;
+ } else {
+ scaled = gdk_pixbuf_scale_simple (entry->contact->photo,
+ 36, 36,
+ GDK_INTERP_BILINEAR);
+
+ gtk_image_set_from_pixbuf (GTK_IMAGE (priv->image), scaled);
+ g_object_unref (scaled);
}
- scaled = gdk_pixbuf_scale_simple (entry->contact->photo,
- 36, 36,
- GDK_INTERP_BILINEAR);
-
- gtk_image_set_from_pixbuf (GTK_IMAGE (priv->image), scaled);
- g_object_unref (scaled);
}
gtk_widget_show (label);
}
--- End Message ---
--- Begin Message ---
Author: chris
Date: 2008-01-16 15:06:46 +0100 (Wed, 16 Jan 2008)
New Revision: 3855
Added:
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
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-control.c
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-control.h
Removed:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-button.c
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-button.h
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-control.c
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-control.h
Log:
Move MokoAlsaVolumeButton/Control to phone-kit from dialer
Deleted:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-button.c
===================================================================
---
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-button.c
2008-01-16 12:28:09 UTC (rev 3854)
+++
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-button.c
2008-01-16 14:06:46 UTC (rev 3855)
@@ -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/dialer/moko-alsa-volume-button.h
===================================================================
---
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-button.h
2008-01-16 12:28:09 UTC (rev 3854)
+++
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-button.h
2008-01-16 14:06:46 UTC (rev 3855)
@@ -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 */
-
Deleted:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-control.c
===================================================================
---
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-control.c
2008-01-16 12:28:09 UTC (rev 3854)
+++
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-control.c
2008-01-16 14:06:46 UTC (rev 3855)
@@ -1,541 +0,0 @@
-
-#include "moko-alsa-volume-control.h"
-
-G_DEFINE_TYPE (MokoAlsaVolumeControl, moko_alsa_volume_control, \
- G_TYPE_OBJECT)
-
-#define ALSA_VOLUME_CONTROL_PRIVATE(o) \
- (G_TYPE_INSTANCE_GET_PRIVATE ((o), MOKO_TYPE_ALSA_VOLUME_CONTROL, \
- MokoAlsaVolumeControlPrivate))
-
-typedef struct _MokoAlsaVolumeControlPrivate MokoAlsaVolumeControlPrivate;
-
-struct _MokoAlsaVolumeControlPrivate {
- gchar *device;
- snd_mixer_selem_id_t *element;
-
- snd_mixer_t *mixer_handle;
- snd_mixer_elem_t *mixer_elem;
- gint control_type;
-
- glong min;
- glong max;
- glong volume;
-};
-
-enum {
- PROP_DEVICE = 1,
- PROP_ELEMENT,
-};
-
-enum {
- PLAYBACK,
- CAPTURE,
- CONTROL
-};
-
-enum {
- VOLUME_CHANGED,
- LAST_SIGNAL
-};
-
-static guint signals[LAST_SIGNAL] = { 0 };
-
-static gboolean
-io_func (GIOChannel *source, GIOCondition condition, MokoAlsaVolumeControl
*self)
-{
- switch (condition) {
- case G_IO_IN : {
- MokoAlsaVolumeControlPrivate *priv =
- ALSA_VOLUME_CONTROL_PRIVATE (self);
- snd_mixer_handle_events (priv->mixer_handle);
-
- break;
- }
- case G_IO_ERR :
- case G_IO_NVAL :
- g_warning ("Encountered an error, stopping IO watch");
- return FALSE;
- default :
- g_warning ("Unhandled IO condition");
- break;
- }
-
- return TRUE;
-}
-
-static void
-update_volume (MokoAlsaVolumeControl *control)
-{
- long volume;
- MokoAlsaVolumeControlPrivate *priv = ALSA_VOLUME_CONTROL_PRIVATE
(control);
-
- /* TODO: Average out volume across channels? */
-
- switch (priv->control_type) {
- case PLAYBACK :
- snd_mixer_selem_get_playback_volume (
- priv->mixer_elem, 0, &volume);
- break;
- case CAPTURE :
- snd_mixer_selem_get_capture_volume (
- priv->mixer_elem, 0, &volume);
- break;
- case CONTROL :
- default :
- /* TODO: Handle switches? */
- g_warning ("Unhandled control type");
- return;
- }
-
- if (priv->volume != volume) {
- priv->volume = volume;
- g_signal_emit (control, signals[VOLUME_CHANGED],
- 0, (gdouble)(priv->volume - priv->min) /
- (gdouble)(priv->max - priv->min));
- }
-}
-
-static int
-mixer_event_cb (snd_mixer_t *mixer, unsigned int mask, snd_mixer_elem_t *elem)
-{
- /* Do we need to update here? */
-
- return 0;
-}
-
-static int
-mixer_elem_event_cb (snd_mixer_elem_t *elem, unsigned int mask)
-{
- MokoAlsaVolumeControl *control = MOKO_ALSA_VOLUME_CONTROL (
- snd_mixer_elem_get_callback_private (elem));
-
- update_volume (control);
-
- return 0;
-}
-
-static void
-open_mixer (MokoAlsaVolumeControl *self)
-{
- MokoAlsaVolumeControlPrivate *priv = ALSA_VOLUME_CONTROL_PRIVATE (self);
-
- if (snd_mixer_open (&priv->mixer_handle, 0) != 0) {
- g_warning ("Failed to get mixer handle");
- priv->mixer_handle = NULL;
- return;
- }
-
- snd_mixer_set_callback (priv->mixer_handle, mixer_event_cb);
- snd_mixer_set_callback_private (priv->mixer_handle, self);
-
- g_debug ("Opened mixer");
-}
-
-static void
-start_polling (MokoAlsaVolumeControl *self)
-{
- struct pollfd *fds;
- gint i, nfds;
-
- MokoAlsaVolumeControlPrivate *priv = ALSA_VOLUME_CONTROL_PRIVATE (self);
-
- if ((nfds = snd_mixer_poll_descriptors_count (priv->mixer_handle))<=0) {
- g_warning ("No poll descriptors on mixer?");
- return;
- }
-
- fds = g_new0 (struct pollfd, nfds);
- if (snd_mixer_poll_descriptors (priv->mixer_handle, fds, nfds) < 0) {
- g_warning ("Error getting polling descriptors for sound mixer");
- g_free (fds);
- return;
- }
-
- for (i = 0; i < nfds; i++) {
- GIOChannel *channel = g_io_channel_unix_new (fds[i].fd);
- g_debug ("Adding IO watch (IN: %d, OUT: %d)",
- fds[i].events & POLLIN, fds[i].events & POLLOUT);
- g_io_add_watch (channel,
- ((fds[i].events & POLLIN) ? G_IO_IN : 0) |
- ((fds[i].events & POLLOUT) ? G_IO_OUT : 0) |
- ((fds[i].events & POLLPRI) ? G_IO_PRI : 0) |
- ((fds[i].events & POLLERR) ? G_IO_ERR : 0) |
- ((fds[i].events & POLLHUP) ? G_IO_HUP : 0) |
- ((fds[i].events & POLLNVAL) ? G_IO_NVAL : 0),
- (GIOFunc)io_func, self);
- }
- g_free (fds);
-
- g_debug ("Polling for events...");
-}
-
-static void
-close_mixer (MokoAlsaVolumeControl *self)
-{
- MokoAlsaVolumeControlPrivate *priv = ALSA_VOLUME_CONTROL_PRIVATE (self);
-
- if (!priv->mixer_handle) return;
-
- snd_mixer_close (priv->mixer_handle);
- priv->mixer_handle = NULL;
- g_debug ("Closed mixer");
-}
-
-static void
-detach_mixer (MokoAlsaVolumeControl *self)
-{
- MokoAlsaVolumeControlPrivate *priv = ALSA_VOLUME_CONTROL_PRIVATE (self);
-
- if (priv->mixer_handle && priv->device &&
- priv->element && priv->mixer_elem) {
- snd_mixer_detach (priv->mixer_handle, priv->device);
- priv->mixer_elem = NULL;
- g_debug ("Detached from mixer");
- close_mixer (self);
- }
-}
-
-static void
-attach_mixer (MokoAlsaVolumeControl *self)
-{
- MokoAlsaVolumeControlPrivate *priv = ALSA_VOLUME_CONTROL_PRIVATE (self);
-
- g_debug ("Trying to attach... %p, %s, %p", priv->mixer_handle,
- priv->device, priv->element);
-
- open_mixer (self);
-
- if (priv->mixer_handle && priv->device && priv->element &&
- (snd_mixer_attach (priv->mixer_handle, priv->device) == 0) &&
- (snd_mixer_selem_register (priv->mixer_handle, NULL, NULL) == 0) &&
- (snd_mixer_load (priv->mixer_handle) == 0)) {
- priv->mixer_elem = snd_mixer_find_selem (
- priv->mixer_handle, priv->element);
- if (!priv->mixer_elem) {
- g_warning ("Unable to find mixer element");
- snd_mixer_detach (priv->mixer_handle, priv->device);
- close_mixer (self);
- } else {
- g_debug ("Attached to mixer");
-
- if (snd_mixer_selem_has_playback_volume (
- priv->mixer_elem)) {
- priv->control_type = PLAYBACK;
- snd_mixer_selem_get_playback_volume_range (
- priv->mixer_elem,
- &priv->min, &priv->max);
- } else if (snd_mixer_selem_has_capture_volume (
- priv->mixer_elem)) {
- priv->control_type = CAPTURE;
- snd_mixer_selem_get_capture_volume_range (
- priv->mixer_elem,
- &priv->min, &priv->max);
- } else
- priv->control_type = CONTROL;
-
- snd_mixer_elem_set_callback (
- priv->mixer_elem, mixer_elem_event_cb);
- snd_mixer_elem_set_callback_private (
- priv->mixer_elem, self);
-
- start_polling (self);
- update_volume (self);
- }
- } else {
- close_mixer (self);
- }
-}
-
-static void
-moko_alsa_volume_control_get_property (GObject *object, guint property_id,
- GValue *value, GParamSpec *pspec)
-{
- MokoAlsaVolumeControlPrivate *priv =
- ALSA_VOLUME_CONTROL_PRIVATE (object);
-
- switch (property_id) {
- case PROP_DEVICE :
- g_value_set_string (value, priv->device);
- break;
- case PROP_ELEMENT :
- g_value_set_pointer (value, priv->element);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- }
-}
-
-static void
-moko_alsa_volume_control_set_property (GObject *object, guint property_id,
- const GValue *value, GParamSpec *pspec)
-{
- switch (property_id) {
- case PROP_DEVICE :
- moko_alsa_volume_control_set_device (
- MOKO_ALSA_VOLUME_CONTROL (object),
- g_value_get_string (value));
- break;
-
- case PROP_ELEMENT :
- moko_alsa_volume_control_set_element (
- MOKO_ALSA_VOLUME_CONTROL (object),
- (snd_mixer_selem_id_t *)g_value_get_pointer (value));
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
- }
-}
-
-static void
-moko_alsa_volume_control_finalize (GObject *object)
-{
- MokoAlsaVolumeControl *control = MOKO_ALSA_VOLUME_CONTROL (object);
- MokoAlsaVolumeControlPrivate *priv =
- ALSA_VOLUME_CONTROL_PRIVATE (control);
-
- detach_mixer (control);
-
- g_free (priv->device);
- if (priv->element) {
- snd_mixer_selem_id_free (priv->element);
- }
-
- G_OBJECT_CLASS (moko_alsa_volume_control_parent_class)->
- finalize (object);
-}
-
-static void
-moko_alsa_volume_control_class_init (MokoAlsaVolumeControlClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
-
- g_type_class_add_private (klass, sizeof (MokoAlsaVolumeControlPrivate));
-
- object_class->get_property = moko_alsa_volume_control_get_property;
- object_class->set_property = moko_alsa_volume_control_set_property;
- object_class->finalize = moko_alsa_volume_control_finalize;
-
- g_object_class_install_property (
- object_class,
- PROP_DEVICE,
- g_param_spec_string (
- "device",
- "gchar *",
- "The alsa device name.",
- "default",
- G_PARAM_READWRITE));
-
- g_object_class_install_property (
- object_class,
- PROP_ELEMENT,
- g_param_spec_pointer (
- "element",
- "snd_mixer_selem_id_t",
- "The alsa simple mixer element ID.",
- G_PARAM_READWRITE));
-
- signals[VOLUME_CHANGED] =
- g_signal_new ("volume_changed",
- G_OBJECT_CLASS_TYPE (object_class),
- G_SIGNAL_RUN_LAST,
- G_STRUCT_OFFSET (MokoAlsaVolumeControlClass,
- volume_changed),
- NULL, NULL,
- g_cclosure_marshal_VOID__DOUBLE,
- G_TYPE_NONE, 1, G_TYPE_DOUBLE);
-}
-
-static void
-moko_alsa_volume_control_init (MokoAlsaVolumeControl *self)
-{
- MokoAlsaVolumeControlPrivate *priv = ALSA_VOLUME_CONTROL_PRIVATE (self);
-
- priv->device = g_strdup ("default");
-}
-
-MokoAlsaVolumeControl *
-moko_alsa_volume_control_new (void)
-{
- return g_object_new (MOKO_TYPE_ALSA_VOLUME_CONTROL, NULL);
-}
-
-void
-moko_alsa_volume_control_set_device (MokoAlsaVolumeControl *control,
- const gchar *device)
-{
- MokoAlsaVolumeControlPrivate *priv =
- ALSA_VOLUME_CONTROL_PRIVATE (control);
-
- detach_mixer (control);
- g_free (priv->device);
- priv->device = g_strdup (device);
- g_debug ("Device set: %s", device);
- attach_mixer (control);
-}
-
-void
-moko_alsa_volume_control_set_element (MokoAlsaVolumeControl *control,
- snd_mixer_selem_id_t *element)
-{
- MokoAlsaVolumeControlPrivate *priv =
- ALSA_VOLUME_CONTROL_PRIVATE (control);
-
- detach_mixer (control);
- if (priv->element) {
- snd_mixer_selem_id_free (priv->element);
- priv->element = NULL;
- }
-
- if (snd_mixer_selem_id_malloc (&priv->element) != 0) {
- g_warning ("Unable to allocate mixer element id");
- } else if (element) {
- snd_mixer_selem_id_copy (priv->element, element);
- g_debug ("Element set");
- attach_mixer (control);
- }
-}
-
-void
-moko_alsa_volume_control_set_device_from_card_number (
- MokoAlsaVolumeControl *control, gint number)
-{
- void **hints;
-
- if (snd_device_name_hint (number, "pcm", &hints) == 0) {
- gchar *device = strdup (snd_device_name_get_hint (
- hints[0], "NAME"));
- snd_device_name_free_hint (hints);
- strchr (device, ':')[0] = '\0';
-
- moko_alsa_volume_control_set_device (control, device);
- g_free (device);
- } else
- g_warning ("Unable to find card number %d", number);
-}
-
-void
-moko_alsa_volume_control_set_device_from_name (MokoAlsaVolumeControl *control,
- const gchar *name)
-{
- gint i = -1;
-
- if (!name) {
- moko_alsa_volume_control_set_device (control, NULL);
- return;
- }
-
- while (snd_card_next (&i) == 0) {
- void **hints;
-
- if (snd_device_name_hint (i, "pcm", &hints) == 0) {
- gchar *device = strdup (snd_device_name_get_hint (
- hints[0], "NAME"));
- snd_device_name_free_hint (hints);
- strchr (device, ':')[0] = '\0';
-
- if (strcmp (device, name) == 0) {
- moko_alsa_volume_control_set_device (
- control, device);
- g_free (device);
- return;
- }
- g_free (device);
- }
- }
-
- g_warning ("Card '%s' not found", name);
-}
-
-void
-moko_alsa_volume_control_set_element_from_name (MokoAlsaVolumeControl *control,
- const gchar *name)
-{
- MokoAlsaVolumeControlPrivate *priv =
- ALSA_VOLUME_CONTROL_PRIVATE (control);
-
- if (!priv->device) return;
-
- detach_mixer (control);
-
- if (!name) {
- moko_alsa_volume_control_set_element (control, NULL);
- return;
- }
-
- open_mixer (control);
- if ((snd_mixer_attach (priv->mixer_handle, priv->device) == 0) &&
- (snd_mixer_selem_register (priv->mixer_handle, NULL, NULL) == 0) &&
- (snd_mixer_load (priv->mixer_handle) == 0)) {
- snd_mixer_elem_t *elem;
-
- elem = snd_mixer_first_elem (priv->mixer_handle);
- while (elem) {
- const char *elem_name = snd_mixer_selem_get_name (elem);
- if (strcmp (elem_name, name) == 0)
- break;
- elem = snd_mixer_elem_next (elem);
- }
-
- if (!elem) {
- snd_mixer_detach (priv->mixer_handle, priv->device);
- close_mixer (control);
- g_warning ("Mixer element '%s' not found", name);
- attach_mixer (control);
- } else {
- snd_mixer_selem_id_t *id;
- if (snd_mixer_selem_id_malloc (&id) != 0) {
- g_warning ("Unable to allocate element id");
- snd_mixer_detach (
- priv->mixer_handle, priv->device);
- close_mixer (control);
- } else {
- snd_mixer_selem_get_id (elem, id);
- snd_mixer_detach (
- priv->mixer_handle, priv->device);
- close_mixer (control);
- g_debug ("Setting element ID");
- moko_alsa_volume_control_set_element (
- control, id);
- snd_mixer_selem_id_free (id);
- }
- }
- } else
- g_warning ("Unable to open mixer on card '%s'", priv->device);
-}
-
-gdouble
-moko_alsa_volume_control_get_volume (MokoAlsaVolumeControl *control)
-{
- MokoAlsaVolumeControlPrivate *priv =
- ALSA_VOLUME_CONTROL_PRIVATE (control);
-
- return (gdouble)(priv->volume - priv->min) /
- (gdouble)(priv->max - priv->min);
-}
-
-void
-moko_alsa_volume_control_set_volume (MokoAlsaVolumeControl *control,
- gdouble volume)
-{
- MokoAlsaVolumeControlPrivate *priv =
- ALSA_VOLUME_CONTROL_PRIVATE (control);
-
- if (!priv->mixer_elem) return;
-
- volume = (long)(volume * (gdouble)(priv->max-priv->min)) + priv->min;
-
- switch (priv->control_type) {
- case PLAYBACK :
- snd_mixer_selem_set_playback_volume_all (
- priv->mixer_elem, volume);
- break;
- case CAPTURE :
- snd_mixer_selem_set_capture_volume_all (
- priv->mixer_elem, volume);
- break;
- default :
- g_warning ("Unhandled control type");
- }
-}
-
Deleted:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-control.h
===================================================================
---
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-control.h
2008-01-16 12:28:09 UTC (rev 3854)
+++
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-control.h
2008-01-16 14:06:46 UTC (rev 3855)
@@ -1,74 +0,0 @@
-#ifndef _MOKO_ALSA_VOLUME_CONTROL
-#define _MOKO_ALSA_VOLUME_CONTROL
-
-#include <glib.h>
-#include <glib-object.h>
-#include <alsa/asoundlib.h>
-
-G_BEGIN_DECLS
-
-#define MOKO_TYPE_ALSA_VOLUME_CONTROL moko_alsa_volume_control_get_type()
-
-#define MOKO_ALSA_VOLUME_CONTROL(obj) \
- (G_TYPE_CHECK_INSTANCE_CAST ((obj), \
- MOKO_TYPE_ALSA_VOLUME_CONTROL, MokoAlsaVolumeControl))
-
-#define MOKO_ALSA_VOLUME_CONTROL_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_CAST ((klass), \
- MOKO_TYPE_ALSA_VOLUME_CONTROL, MokoAlsaVolumeControlClass))
-
-#define MOKO_IS_ALSA_VOLUME_CONTROL(obj) \
- (G_TYPE_CHECK_INSTANCE_TYPE ((obj), \
- MOKO_TYPE_ALSA_VOLUME_CONTROL))
-
-#define MOKO_IS_ALSA_VOLUME_CONTROL_CLASS(klass) \
- (G_TYPE_CHECK_CLASS_TYPE ((klass), \
- MOKO_TYPE_ALSA_VOLUME_CONTROL))
-
-#define MOKO_ALSA_VOLUME_CONTROL_GET_CLASS(obj) \
- (G_TYPE_INSTANCE_GET_CLASS ((obj), \
- MOKO_TYPE_ALSA_VOLUME_CONTROL, MokoAlsaVolumeControlClass))
-
-typedef struct {
- GObject parent;
-} MokoAlsaVolumeControl;
-
-typedef struct {
- GObjectClass parent_class;
-
- /* Signals */
- void (*volume_changed) (MokoAlsaVolumeControl *control,
- gdouble volume);
-} MokoAlsaVolumeControlClass;
-
-GType moko_alsa_volume_control_get_type (void);
-
-MokoAlsaVolumeControl *moko_alsa_volume_control_new (void);
-
-void moko_alsa_volume_control_set_device (MokoAlsaVolumeControl *control,
- const gchar *device);
-
-void moko_alsa_volume_control_set_element (MokoAlsaVolumeControl *control,
- snd_mixer_selem_id_t *element);
-
-void moko_alsa_volume_control_set_device_from_card_number (
- MokoAlsaVolumeControl *control,
- gint number);
-
-void moko_alsa_volume_control_set_device_from_name (
- MokoAlsaVolumeControl *control,
- const gchar *name);
-
-void moko_alsa_volume_control_set_element_from_name (
- MokoAlsaVolumeControl *control,
- const gchar *name);
-
-gdouble moko_alsa_volume_control_get_volume (MokoAlsaVolumeControl *control);
-
-void moko_alsa_volume_control_set_volume (MokoAlsaVolumeControl *control,
- gdouble volume);
-
-G_END_DECLS
-
-#endif /* _MOKO_ALSA_VOLUME_CONTROL */
-
Copied:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-button.c
(from rev 3853,
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-button.c)
Copied:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-button.h
(from rev 3853,
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-button.h)
Copied:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-control.c
(from rev 3853,
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-control.c)
Copied:
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/phone-kit/moko-alsa-volume-control.h
(from rev 3853,
trunk/src/target/OM-2007.2/applications/openmoko-dialer2/src/dialer/moko-alsa-volume-control.h)
--- End Message ---
--- Begin Message ---
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 <[EMAIL PROTECTED]>
+ * 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 <[EMAIL PROTECTED]>
+
* 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++)
--- End Message ---
_______________________________________________
commitlog mailing list
commitlog@lists.openmoko.org
http://lists.openmoko.org/mailman/listinfo/commitlog