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

Reply via email to