From 7cd90199beb0b10bfc22a669ca1954c16573abd5 Mon Sep 17 00:00:00 2001
From: Conor Curran <conor.curran@canonical.com>
Date: Fri, 28 Jan 2011 11:29:18 -0600
Subject: deal with dbusmenu api changes

---
 src/indicator-sound.c  | 41 ++++++++++++++++++++++++++++-------------
 src/sound-service.c    |  4 ++--
 src/transport-widget.c |  1 -
 3 files changed, 30 insertions(+), 16 deletions(-)

diff --git a/src/indicator-sound.c b/src/indicator-sound.c
index 42560c8..8972844 100644
--- a/src/indicator-sound.c
+++ b/src/indicator-sound.c
@@ -77,19 +77,22 @@ static gboolean key_release_cb(GtkWidget* widget, GdkEventKey* event, gpointer d
 //custom widget realisation methods
 static gboolean new_volume_slider_widget (DbusmenuMenuitem * newitem,
                                           DbusmenuMenuitem * parent,
-                                          DbusmenuClient * client);
+                                          DbusmenuClient * client,
+                                          gboolean user_data);
 static gboolean new_transport_widget (DbusmenuMenuitem * newitem,
                                       DbusmenuMenuitem * parent,
-                                      DbusmenuClient * client);
+                                      DbusmenuClient * client,
+                                      gboolean user_data);                                     
 static gboolean new_metadata_widget (DbusmenuMenuitem * newitem,
                                      DbusmenuMenuitem * parent,
-                                     DbusmenuClient * client);
+                                     DbusmenuClient * client,
+                                     gboolean user_data);
 static gboolean new_title_widget (DbusmenuMenuitem * newitem,
                                   DbusmenuMenuitem * parent,
-                                  DbusmenuClient * client);
+                                  DbusmenuClient * client,
+                                  gboolean user_data);
 
 // DBUS communication
-
 static GDBusNodeInfo *node_info = NULL;
 static GDBusInterfaceInfo *interface_info = NULL;
 static void create_connection_to_service (GObject *source_object,
@@ -185,10 +188,18 @@ get_menu (IndicatorObject * io)
         
   DbusmenuGtkClient *client = dbusmenu_gtkmenu_get_client(menu);
   g_object_set_data (G_OBJECT (client), "indicator", io);
-  dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_VOLUME_MENUITEM_TYPE, new_volume_slider_widget);
-  dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_TRANSPORT_MENUITEM_TYPE, new_transport_widget);
-  dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_METADATA_MENUITEM_TYPE, new_metadata_widget);
-  dbusmenu_client_add_type_handler(DBUSMENU_CLIENT(client), DBUSMENU_TITLE_MENUITEM_TYPE, new_title_widget);
+  dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client),
+                                    DBUSMENU_VOLUME_MENUITEM_TYPE,
+                                    (DbusmenuClientTypeHandler)new_volume_slider_widget);
+  dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client),
+                                    DBUSMENU_TRANSPORT_MENUITEM_TYPE,
+                                    (DbusmenuClientTypeHandler)new_transport_widget);
+  dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client),
+                                    DBUSMENU_METADATA_MENUITEM_TYPE,
+                                    (DbusmenuClientTypeHandler)new_metadata_widget);
+  dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client),
+                                    DBUSMENU_TITLE_MENUITEM_TYPE,
+                                    (DbusmenuClientTypeHandler)new_title_widget);
   // Note: Not ideal but all key handling needs to be managed here and then 
   // delegated to the appropriate widget. 
   g_signal_connect (menu, "key-press-event", G_CALLBACK(key_press_cb), io);
@@ -286,7 +297,8 @@ static void create_connection_to_service (GObject *source_object,
 static gboolean
 new_transport_widget (DbusmenuMenuitem * newitem,
                       DbusmenuMenuitem * parent,
-                      DbusmenuClient * client)
+                      DbusmenuClient * client,
+                      gboolean user_data)
 {
   g_debug("indicator-sound: new_transport_bar() called ");
 
@@ -314,7 +326,8 @@ new_transport_widget (DbusmenuMenuitem * newitem,
 static gboolean
 new_metadata_widget (DbusmenuMenuitem * newitem,
                      DbusmenuMenuitem * parent,
-                     DbusmenuClient * client)
+                     DbusmenuClient * client,
+                     gboolean user_data)
 {
   g_debug("indicator-sound: new_metadata_widget");
 
@@ -335,7 +348,8 @@ new_metadata_widget (DbusmenuMenuitem * newitem,
 static gboolean
 new_title_widget(DbusmenuMenuitem * newitem,
                  DbusmenuMenuitem * parent,
-                 DbusmenuClient * client)
+                 DbusmenuClient * client,
+                 gboolean user_data)
 {
   g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE);
   g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE);
@@ -358,7 +372,8 @@ new_title_widget(DbusmenuMenuitem * newitem,
 static gboolean
 new_volume_slider_widget(DbusmenuMenuitem * newitem,
                          DbusmenuMenuitem * parent,
-                         DbusmenuClient * client)
+                         DbusmenuClient * client,
+                         gboolean user_data)
 {
   g_debug("indicator-sound: new_volume_slider_widget");
 
diff --git a/src/sound-service.c b/src/sound-service.c
index 2cb33d3..c1bb9b4 100644
--- a/src/sound-service.c
+++ b/src/sound-service.c
@@ -40,8 +40,8 @@ service_shutdown (IndicatorService *service, gpointer user_data)
 {
   if (mainloop != NULL) {
     g_debug("Service shutdown !");
-    close_pulse_activites();
-    g_main_loop_quit(mainloop);
+    //close_pulse_activites();
+    //g_main_loop_quit(mainloop);
   }
   return;
 }
diff --git a/src/transport-widget.c b/src/transport-widget.c
index 6ddd4bc..5c8e732 100644
--- a/src/transport-widget.c
+++ b/src/transport-widget.c
@@ -422,7 +422,6 @@ transport_widget_determine_button_event( TransportWidget* button,
   //g_debug("event x coordinate = %f", event->x);
   //g_debug("event y coordinate = %f", event->y);
   TransportWidgetEvent button_event = TRANSPORT_NADA;
-  // For now very simple rectangular collision detection
   if(event->x > 67 && event->x < 112
      && event->y > 12 && event->y < 40){
     button_event = TRANSPORT_PREVIOUS;
-- 
cgit v1.2.3


From 1a99cdc112da4a119df08642d583cc6d6f5fca7f Mon Sep 17 00:00:00 2001
From: Conor Curran <conor.curran@canonical.com>
Date: Fri, 28 Jan 2011 12:37:53 -0600
Subject: tidy up on the transport widget, all draw are queue'd for performance
 reasons, bug fixed with regards button release on new hotspot and some
 refactoring done

---
 src/transport-widget.c | 98 ++++++++++++++++----------------------------------
 1 file changed, 31 insertions(+), 67 deletions(-)

diff --git a/src/transport-widget.c b/src/transport-widget.c
index 5c8e732..7c96684 100644
--- a/src/transport-widget.c
+++ b/src/transport-widget.c
@@ -129,10 +129,10 @@ static void transport_widget_toggle_play_pause ( TransportWidget* button,
                                                  TransportWidgetState update);
 static void transport_widget_select (GtkItem* menu, gpointer Userdata);
 static void transport_widget_deselect (GtkItem* menu, gpointer Userdata);
+static TransportWidgetEvent transport_widget_collision_detection (gint x, gint y);
 
 
 /// Init functions //////////////////////////////////////////////////////////
-
 static void
 transport_widget_class_init (TransportWidgetClass *klass)
 { 
@@ -301,30 +301,23 @@ transport_widget_leave_notify_event (GtkWidget *menuitem,
   TransportWidgetPrivate* priv = TRANSPORT_WIDGET_GET_PRIVATE ( TRANSPORT_WIDGET(menuitem) );
   
   priv->motion_event = TRANSPORT_NADA;
-    cairo_t *cr;
-    cr = gdk_cairo_create (menuitem->window);
-    draw ( menuitem, cr );
-    cairo_destroy ( cr );
-
+  priv->current_command = TRANSPORT_NADA;
+  gtk_widget_queue_draw (GTK_WIDGET(menuitem));
+  
   return TRUE;
 }
 
-/* keyevents */
 static gboolean
 transport_widget_button_press_event (GtkWidget *menuitem, 
-                                    GdkEventButton *event)
+                                     GdkEventButton *event)
 {
   g_return_val_if_fail ( IS_TRANSPORT_WIDGET(menuitem), FALSE );
   TransportWidgetPrivate* priv = TRANSPORT_WIDGET_GET_PRIVATE ( TRANSPORT_WIDGET(menuitem) );
   TransportWidgetEvent result = transport_widget_determine_button_event ( TRANSPORT_WIDGET(menuitem),
                                                                             event);
-    
   if(result != TRANSPORT_NADA){
     priv->current_command = result;
-    cairo_t *cr;
-    cr = gdk_cairo_create (menuitem->window);
-    draw ( menuitem, cr );
-    cairo_destroy ( cr );
+    gtk_widget_queue_draw (GTK_WIDGET(menuitem));
   }
   return TRUE;
 }
@@ -333,14 +326,12 @@ static gboolean
 transport_widget_button_release_event (GtkWidget *menuitem, 
                                        GdkEventButton *event)
 {
-    //g_debug("TransportWidget::menu_release_event");
   g_return_val_if_fail(IS_TRANSPORT_WIDGET(menuitem), FALSE);
   TransportWidget* transport = TRANSPORT_WIDGET(menuitem);
   TransportWidgetPrivate * priv = TRANSPORT_WIDGET_GET_PRIVATE ( transport ); 
   TransportWidgetEvent result = transport_widget_determine_button_event ( transport,
                                                                           event );
-  if(result != TRANSPORT_NADA){
-    //g_debug("TransportWidget::menu_press_event - going to send value %i", (int)result);
+  if (result != TRANSPORT_NADA && priv->current_command == result){
     GVariant* new_transport_state = g_variant_new_int32 ((int)result);
     dbusmenu_menuitem_handle_event ( priv->twin_item,
                                      "Transport state change",
@@ -376,17 +367,8 @@ transport_widget_react_to_key_press_event ( TransportWidget* transport,
     TransportWidgetPrivate * priv = TRANSPORT_WIDGET_GET_PRIVATE ( transport );
     priv->current_command = transport_event;
     priv->key_event = transport_event;
-/*    printf("transport_widget_react_to_key_press_event: before drawing\n");*/
     gtk_widget_realize ( GTK_WIDGET(transport) );
-
-    printf ( "transport widget - react to key press event -> is the window null: %i",
-              gtk_widget_get_window (GTK_WIDGET (transport) ) == NULL );
-    cairo_t *cr;
-
-    printf("transport_widget_react_to_key_press_event: before drawing\n");
-    cr = gdk_cairo_create ( GTK_WIDGET(transport)->window );
-    draw ( GTK_WIDGET(transport), cr );
-    cairo_destroy (cr);
+    gtk_widget_queue_draw (GTK_WIDGET(transport) );
   } 
 }
 
@@ -396,7 +378,6 @@ transport_widget_react_to_key_release_event ( TransportWidget* transport,
 {
   if(transport_event != TRANSPORT_NADA){
     TransportWidgetPrivate * priv = TRANSPORT_WIDGET_GET_PRIVATE ( transport );     
-    //g_debug("TransportWidget::menu_press_event - going to send value %i", (int)result);
     GVariant* new_transport_event = g_variant_new_int32((int)transport_event);  
     dbusmenu_menuitem_handle_event ( priv->twin_item,
                                      "Transport state change",
@@ -412,52 +393,41 @@ transport_widget_focus_update ( TransportWidget* transport, gboolean focus )
 {
   TransportWidgetPrivate * priv = TRANSPORT_WIDGET_GET_PRIVATE ( transport );     
   priv->has_focus = focus;  
-  g_debug("new focus update = %i", focus);
 }
 
 static TransportWidgetEvent
 transport_widget_determine_button_event( TransportWidget* button,
                                          GdkEventButton* event )
 {
-  //g_debug("event x coordinate = %f", event->x);
-  //g_debug("event y coordinate = %f", event->y);
-  TransportWidgetEvent button_event = TRANSPORT_NADA;
-  if(event->x > 67 && event->x < 112
-     && event->y > 12 && event->y < 40){
-    button_event = TRANSPORT_PREVIOUS;
-  }
-  else if(event->x > 111 && event->x < 153
-     && event->y > 5 && event->y < 47){
-    button_event = TRANSPORT_PLAY_PAUSE;  
-  }
-  else if(event->x > 152 && event->x < 197
-     && event->y > 12 && event->y < 40){
-    button_event = TRANSPORT_NEXT;
-  } 
-  return button_event;  
+  return transport_widget_collision_detection (event->x, event->y);
 }
 
 static TransportWidgetEvent
 transport_widget_determine_motion_event( TransportWidget* button,
                                          GdkEventMotion* event )
 {
-/*  g_debug("event x coordinate = %f", event->x);*/
-/*  g_debug("event y coordinate = %f", event->y);*/
-  TransportWidgetEvent motion_event = TRANSPORT_NADA;
-  // For now very simple rectangular collision detection
-  if(event->x > 67 && event->x < 112
-     && event->y > 12 && event->y < 40){
-    motion_event = TRANSPORT_PREVIOUS;
+  return transport_widget_collision_detection (event->x, event->y);
+}
+
+static TransportWidgetEvent
+transport_widget_collision_detection ( gint x,
+                                       gint y )
+{
+  TransportWidgetEvent event = TRANSPORT_NADA;
+  
+  if (x > 67 && x < 112
+      && y > 12 && y < 40){
+    event = TRANSPORT_PREVIOUS;
   }
-  else if(event->x > 111 && event->x < 153
-     && event->y > 5 && event->y < 47){
-    motion_event = TRANSPORT_PLAY_PAUSE;  
+  else if (x > 111 && x < 153
+           && y > 5 && y < 47){
+    event = TRANSPORT_PLAY_PAUSE;  
   }
-  else if(event->x > 152 && event->x < 197
-     && event->y > 12 && event->y < 40){
-    motion_event = TRANSPORT_NEXT;
-  } 
-  return motion_event;  
+  else if (x > 152 && x < 197
+           && y > 12 && y < 40){
+    event = TRANSPORT_NEXT;
+  }   
+  return event;
 }
 
 static void 
@@ -466,17 +436,11 @@ transport_widget_react_to_button_release ( TransportWidget* button,
 {
   g_return_if_fail(IS_TRANSPORT_WIDGET(button));
   TransportWidgetPrivate* priv = TRANSPORT_WIDGET_GET_PRIVATE(button);  
-  if(priv->current_command != TRANSPORT_NADA &&
-          command != TRANSPORT_NADA){           
-    priv->current_command = command;
-  }
-  cairo_t *cr;  
-  cr = gdk_cairo_create ( GTK_WIDGET(button)->window );
 
   priv->current_command = TRANSPORT_NADA;
   priv->key_event = TRANSPORT_NADA;
-  draw ( GTK_WIDGET(button), cr );
-  cairo_destroy (cr);
+
+  gtk_widget_queue_draw (GTK_WIDGET(button));
 }
 
 /// internal helper functions //////////////////////////////////////////////////
-- 
cgit v1.2.3


From 3426aa3e89ed01c81f019b4ffd4aea76df864fc7 Mon Sep 17 00:00:00 2001
From: Conor Curran <conor.curran@canonical.com>
Date: Fri, 28 Jan 2011 12:42:36 -0600
Subject: tidy up

---
 src/sound-service.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/src/sound-service.c b/src/sound-service.c
index c1bb9b4..2cb33d3 100644
--- a/src/sound-service.c
+++ b/src/sound-service.c
@@ -40,8 +40,8 @@ service_shutdown (IndicatorService *service, gpointer user_data)
 {
   if (mainloop != NULL) {
     g_debug("Service shutdown !");
-    //close_pulse_activites();
-    //g_main_loop_quit(mainloop);
+    close_pulse_activites();
+    g_main_loop_quit(mainloop);
   }
   return;
 }
-- 
cgit v1.2.3


From 965f48a39a3411106d531cb5d3dffb2e347f4f73 Mon Sep 17 00:00:00 2001
From: Conor Curran <conor.curran@canonical.com>
Date: Fri, 28 Jan 2011 12:57:36 -0600
Subject: silly mistake in signature

---
 src/indicator-sound.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/src/indicator-sound.c b/src/indicator-sound.c
index 8972844..f259dfd 100644
--- a/src/indicator-sound.c
+++ b/src/indicator-sound.c
@@ -78,19 +78,19 @@ static gboolean key_release_cb(GtkWidget* widget, GdkEventKey* event, gpointer d
 static gboolean new_volume_slider_widget (DbusmenuMenuitem * newitem,
                                           DbusmenuMenuitem * parent,
                                           DbusmenuClient * client,
-                                          gboolean user_data);
+                                          gpointer user_data);
 static gboolean new_transport_widget (DbusmenuMenuitem * newitem,
                                       DbusmenuMenuitem * parent,
                                       DbusmenuClient * client,
-                                      gboolean user_data);                                     
+                                      gpointer user_data);                                     
 static gboolean new_metadata_widget (DbusmenuMenuitem * newitem,
                                      DbusmenuMenuitem * parent,
                                      DbusmenuClient * client,
-                                     gboolean user_data);
+                                     gpointer user_data);
 static gboolean new_title_widget (DbusmenuMenuitem * newitem,
                                   DbusmenuMenuitem * parent,
                                   DbusmenuClient * client,
-                                  gboolean user_data);
+                                  gpointer user_data);
 
 // DBUS communication
 static GDBusNodeInfo *node_info = NULL;
@@ -190,16 +190,16 @@ get_menu (IndicatorObject * io)
   g_object_set_data (G_OBJECT (client), "indicator", io);
   dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client),
                                     DBUSMENU_VOLUME_MENUITEM_TYPE,
-                                    (DbusmenuClientTypeHandler)new_volume_slider_widget);
+                                    new_volume_slider_widget);
   dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client),
                                     DBUSMENU_TRANSPORT_MENUITEM_TYPE,
-                                    (DbusmenuClientTypeHandler)new_transport_widget);
+                                    new_transport_widget);
   dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client),
                                     DBUSMENU_METADATA_MENUITEM_TYPE,
-                                    (DbusmenuClientTypeHandler)new_metadata_widget);
+                                    new_metadata_widget);
   dbusmenu_client_add_type_handler (DBUSMENU_CLIENT(client),
                                     DBUSMENU_TITLE_MENUITEM_TYPE,
-                                    (DbusmenuClientTypeHandler)new_title_widget);
+                                    new_title_widget);
   // Note: Not ideal but all key handling needs to be managed here and then 
   // delegated to the appropriate widget. 
   g_signal_connect (menu, "key-press-event", G_CALLBACK(key_press_cb), io);
@@ -298,7 +298,7 @@ static gboolean
 new_transport_widget (DbusmenuMenuitem * newitem,
                       DbusmenuMenuitem * parent,
                       DbusmenuClient * client,
-                      gboolean user_data)
+                      gpointer user_data)
 {
   g_debug("indicator-sound: new_transport_bar() called ");
 
@@ -327,7 +327,7 @@ static gboolean
 new_metadata_widget (DbusmenuMenuitem * newitem,
                      DbusmenuMenuitem * parent,
                      DbusmenuClient * client,
-                     gboolean user_data)
+                     gpointer user_data)
 {
   g_debug("indicator-sound: new_metadata_widget");
 
@@ -349,7 +349,7 @@ static gboolean
 new_title_widget(DbusmenuMenuitem * newitem,
                  DbusmenuMenuitem * parent,
                  DbusmenuClient * client,
-                 gboolean user_data)
+                 gpointer user_data)
 {
   g_return_val_if_fail(DBUSMENU_IS_MENUITEM(newitem), FALSE);
   g_return_val_if_fail(DBUSMENU_IS_GTKCLIENT(client), FALSE);
@@ -373,7 +373,7 @@ static gboolean
 new_volume_slider_widget(DbusmenuMenuitem * newitem,
                          DbusmenuMenuitem * parent,
                          DbusmenuClient * client,
-                         gboolean user_data)
+                         gpointer user_data)
 {
   g_debug("indicator-sound: new_volume_slider_widget");
 
-- 
cgit v1.2.3


From 2b8907890f713242b295183356bd10e9d9c6886b Mon Sep 17 00:00:00 2001
From: Conor Curran <conor.curran@canonical.com>
Date: Fri, 28 Jan 2011 13:14:07 -0600
Subject: prep for 0.5.8

---
 configure.ac | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/configure.ac b/configure.ac
index a50950c..dfd016a 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1,10 +1,10 @@
 
-AC_INIT(indicator-sound, 0.5.7, conor.curran@canonical.com)
+AC_INIT(indicator-sound, 0.5.8, conor.curran@canonical.com)
 
 AC_PREREQ(2.53)
 
 AM_CONFIG_HEADER(config.h)
-AM_INIT_AUTOMAKE(indicator-sound, 0.5.7)
+AM_INIT_AUTOMAKE(indicator-sound, 0.5.8)
 
 AM_MAINTAINER_MODE
 
-- 
cgit v1.2.3


From 7d3595913b0271a2f24aa2bc1359335175dacff0 Mon Sep 17 00:00:00 2001
From: Ken VanDine <ken.vandine@canonical.com>
Date: Fri, 28 Jan 2011 09:27:20 -0500
Subject: distcheck fixes, reference the correct files marked for translation

---
 po/POTFILES.in | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/po/POTFILES.in b/po/POTFILES.in
index 423ff8e..9cceace 100644
--- a/po/POTFILES.in
+++ b/po/POTFILES.in
@@ -1,3 +1,3 @@
 [encoding: UTF-8]
-data/indicator-sound.schemas.in
-src/dbus-menu-manager.c
+src/mute-menu-item.c
+src/sound-service-dbus.c
-- 
cgit v1.2.3