aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/indicator-sound.c31
-rw-r--r--src/metadata-widget.c10
-rw-r--r--src/mpris2-controller.vala2
-rw-r--r--src/play-button.c20
-rw-r--r--src/play-button.h4
-rw-r--r--src/sound-service.c4
-rw-r--r--src/transport-widget.c25
-rw-r--r--src/volume-widget.c4
8 files changed, 69 insertions, 31 deletions
diff --git a/src/indicator-sound.c b/src/indicator-sound.c
index 63ad72d..b59eb98 100644
--- a/src/indicator-sound.c
+++ b/src/indicator-sound.c
@@ -67,6 +67,8 @@ G_DEFINE_TYPE (IndicatorSound, indicator_sound, INDICATOR_OBJECT_TYPE);
static GtkLabel * get_label (IndicatorObject * io);
static GtkImage * get_icon (IndicatorObject * io);
static GtkMenu * get_menu (IndicatorObject * io);
+static void indicator_sound_scroll (IndicatorObject* io, gint delta, IndicatorScrollDirection direction);
+
//Slider related
static gboolean new_volume_slider_widget(DbusmenuMenuitem * newitem, DbusmenuMenuitem * parent, DbusmenuClient * client);
@@ -135,7 +137,7 @@ indicator_sound_class_init (IndicatorSoundClass *klass)
io_class->get_label = get_label;
io_class->get_image = get_icon;
io_class->get_menu = get_menu;
-
+ io_class->scroll = indicator_sound_scroll;
design_team_size = gtk_icon_size_register("design-team-size", 22, 22);
return;
@@ -493,7 +495,6 @@ start_animation()
{
blocked_iter = blocked_animation_list;
blocked_id = 0;
- //g_debug("exit from blocked hold start the animation\n");
animation_id = g_timeout_add(50, fade_back_to_mute_image, NULL);
return FALSE;
}
@@ -502,7 +503,6 @@ static gboolean
fade_back_to_mute_image()
{
if (blocked_iter != NULL) {
- g_debug("in animation 'loop'\n");
gtk_image_set_from_pixbuf(speaker_image, blocked_iter->data);
blocked_iter = blocked_iter->next;
return TRUE;
@@ -710,3 +710,28 @@ style_changed_cb(GtkWidget *widget, gpointer user_data)
free_the_animation_list();
prepare_blocked_animation();
}
+
+static void
+indicator_sound_scroll (IndicatorObject *io, gint delta, IndicatorScrollDirection direction)
+{
+ g_debug("indicator-sound-scroll - current slider value");
+
+ if (device_available == FALSE || current_state == STATE_MUTED)
+ return;
+
+ IndicatorSoundPrivate* priv = INDICATOR_SOUND_GET_PRIVATE(INDICATOR_SOUND (io));
+
+ GtkWidget* slider_widget = volume_widget_get_ido_slider(VOLUME_WIDGET(priv->volume_widget));
+ GtkWidget* slider = ido_scale_menu_item_get_scale((IdoScaleMenuItem*)slider_widget);
+ GtkRange* range = (GtkRange*)slider;
+ gdouble value = gtk_range_get_value(range);
+ GtkAdjustment *adj = gtk_range_get_adjustment (GTK_RANGE (slider));
+ g_debug("indicator-sound-scroll - current slider value %f", value);
+ if (direction == INDICATOR_OBJECT_SCROLL_UP) {
+ value += adj->step_increment;
+ } else {
+ value -= adj->step_increment;
+ }
+ g_debug("indicator-sound-scroll - update slider with value %f", value);
+ volume_widget_update(VOLUME_WIDGET(priv->volume_widget), value);
+} \ No newline at end of file
diff --git a/src/metadata-widget.c b/src/metadata-widget.c
index 2bca072..18ebd38 100644
--- a/src/metadata-widget.c
+++ b/src/metadata-widget.c
@@ -161,7 +161,7 @@ metadata_widget_init (MetadataWidget *self)
g_signal_connect(self, "style-set", G_CALLBACK(metadata_widget_set_style), GTK_WIDGET(self));
- gtk_widget_set_size_request(GTK_WIDGET(self), 200, 60);
+ gtk_widget_set_size_request(GTK_WIDGET(self), 200, 65);
gtk_container_add (GTK_CONTAINER (self), hbox);
}
@@ -362,10 +362,9 @@ rounded_rectangle (cairo_t *cr,
{
gdouble radius;
gdouble degrees;
-
+
radius = corner_radius / aspect;
degrees = G_PI / 180.0;
-
cairo_new_sub_path (cr);
cairo_arc (cr,
x + width - radius,
@@ -391,6 +390,7 @@ rounded_rectangle (cairo_t *cr,
radius,
180 * degrees,
270 * degrees);
+
cairo_close_path (cr);
}
@@ -415,12 +415,12 @@ image_set_from_pixbuf (GtkWidget *widget,
MetadataWidgetPrivate* priv = METADATA_WIDGET_GET_PRIVATE(metadata);
GtkImage* image = GTK_IMAGE(priv->album_art);
- frame_width = 5;
+ frame_width = 3;
w = gdk_pixbuf_get_width (source) + frame_width * 2;
h = gdk_pixbuf_get_height (source) + frame_width * 2;
- radius = w / 10;
+ radius = 10;
pixmap = gdk_pixmap_new (gtk_widget_get_window (widget), w, h, -1);
bitmask = gdk_pixmap_new (gtk_widget_get_window (widget), w, h, 1);
diff --git a/src/mpris2-controller.vala b/src/mpris2-controller.vala
index dd6a312..cf5a39e 100644
--- a/src/mpris2-controller.vala
+++ b/src/mpris2-controller.vala
@@ -96,7 +96,7 @@ public class Mpris2Controller : GLib.Object
public void property_changed_cb(string interface_source, HashTable<string, Value?> changed_properties, string[] invalid )
{
- debug("properties-changed for interface %s", interface_source);
+ debug("properties-changed for interface %s and owner %s", interface_source, this.owner.name.down());
if(changed_properties == null || interface_source.has_prefix(this.root_interface) == false){
warning("Property-changed hash is null or this is an interface that concerns us");
return;
diff --git a/src/play-button.c b/src/play-button.c
index a2eaf2e..ccc23cb 100644
--- a/src/play-button.c
+++ b/src/play-button.c
@@ -409,11 +409,12 @@ play_button_react_to_button_press(GtkWidget* button, PlayButtonEvent command)
g_return_if_fail(IS_PLAY_BUTTON(button));
PlayButtonPrivate* priv = PLAY_BUTTON_GET_PRIVATE(button);
priv->current_command = command;
-
+
cairo_t *cr;
cr = gdk_cairo_create (button->window);
- GList* list = g_hash_table_lookup(priv->command_coordinates, GINT_TO_POINTER(command));
+ GList* list = g_hash_table_lookup(priv->command_coordinates,
+ GINT_TO_POINTER(priv->current_command));
cairo_rectangle(cr,
GPOINTER_TO_INT(g_list_nth_data(list, 0)),
GPOINTER_TO_INT(g_list_nth_data(list, 1)),
@@ -426,10 +427,19 @@ play_button_react_to_button_press(GtkWidget* button, PlayButtonEvent command)
void
-play_button_react_to_button_release(GtkWidget* button)
+play_button_react_to_button_release(GtkWidget* button, PlayButtonEvent command)
{
g_return_if_fail(IS_PLAY_BUTTON(button));
PlayButtonPrivate* priv = PLAY_BUTTON_GET_PRIVATE(button);
+ if(priv->current_command == TRANSPORT_NADA){
+ g_debug("returning from the playbutton release because my previous command was nada");
+ return;
+ }
+ else if(priv->current_command != TRANSPORT_NADA &&
+ command != TRANSPORT_NADA){
+ priv->current_command = command;
+ }
+
cairo_t *cr;
cr = gdk_cairo_create (button->window);
@@ -437,7 +447,7 @@ play_button_react_to_button_release(GtkWidget* button)
GINT_TO_POINTER(priv->current_command));
priv->current_command = TRANSPORT_NADA;
-
+
cairo_rectangle(cr,
GPOINTER_TO_INT(g_list_nth_data(list, 0)),
GPOINTER_TO_INT(g_list_nth_data(list, 1)),
@@ -456,6 +466,7 @@ play_button_toggle_play_pause(GtkWidget* button, PlayButtonState update)
PlayButtonPrivate* priv = PLAY_BUTTON_GET_PRIVATE(button);
priv->current_state = update;
g_debug("PlayButton::toggle play state : %i", priv->current_state);
+ gtk_widget_queue_draw (GTK_WIDGET(button));
}
@@ -955,7 +966,6 @@ draw (GtkWidget* button, cairo_t *cr)
}
-
/**
* play_button_new:
* @returns: a new #PlayButton.
diff --git a/src/play-button.h b/src/play-button.h
index 727a489..6bacac7 100644
--- a/src/play-button.h
+++ b/src/play-button.h
@@ -56,8 +56,8 @@ struct _PlayButton {
GType play_button_get_type (void);
void play_button_set_style(GtkWidget* button, GtkStyle* style);
PlayButtonEvent determine_button_event(GtkWidget* button, GdkEventButton* event);
-void play_button_react_to_button_press(GtkWidget* button, PlayButtonEvent command);
-void play_button_react_to_button_release(GtkWidget* button);
+void play_button_react_to_button_press(GtkWidget* button, PlayButtonEvent command);
+void play_button_react_to_button_release(GtkWidget* button, PlayButtonEvent command);
void play_button_toggle_play_pause(GtkWidget* button, PlayButtonState update);
GtkWidget* play_button_new();
diff --git a/src/sound-service.c b/src/sound-service.c
index f19379d..51f5f37 100644
--- a/src/sound-service.c
+++ b/src/sound-service.c
@@ -41,8 +41,8 @@ service_shutdown (IndicatorService *service, gpointer user_data)
if (mainloop != NULL) {
g_debug("Service shutdown !");
//TODO: uncomment for release !!
- 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 702b472..979f6fd 100644
--- a/src/transport-widget.c
+++ b/src/transport-widget.c
@@ -136,22 +136,12 @@ transport_widget_button_press_event (GtkWidget *menuitem,
GdkEventButton *event)
{
g_return_val_if_fail(IS_TRANSPORT_WIDGET(menuitem), FALSE);
-
TransportWidgetPrivate * priv = TRANSPORT_WIDGET_GET_PRIVATE(TRANSPORT_WIDGET(menuitem));
-
- GtkWidget *parent;
-
- parent = gtk_widget_get_parent (GTK_WIDGET (menuitem));
-
+
PlayButtonEvent result = determine_button_event(priv->play_button, event);
if(result != TRANSPORT_NADA){
- GValue value = {0};
- g_value_init(&value, G_TYPE_INT);
- g_debug("TransportWidget::menu_press_event - going to send value %i", (int)result);
- g_value_set_int(&value, (int)result);
play_button_react_to_button_press(priv->play_button, result);
- dbusmenu_menuitem_handle_event (priv->twin_item, "Transport state change", &value, 0);
}
return TRUE;
}
@@ -164,7 +154,17 @@ transport_widget_button_release_event (GtkWidget *menuitem,
g_debug("TransportWidget::menu_release_event");
g_return_val_if_fail(IS_TRANSPORT_WIDGET(menuitem), FALSE);
TransportWidgetPrivate * priv = TRANSPORT_WIDGET_GET_PRIVATE(TRANSPORT_WIDGET(menuitem));
- play_button_react_to_button_release(priv->play_button);
+
+ PlayButtonEvent result = determine_button_event(priv->play_button, event);
+
+ if(result != TRANSPORT_NADA){
+ GValue value = {0};
+ g_value_init(&value, G_TYPE_INT);
+ g_debug("TransportWidget::menu_press_event - going to send value %i", (int)result);
+ g_value_set_int(&value, (int)result);
+ dbusmenu_menuitem_handle_event (priv->twin_item, "Transport state change", &value, 0);
+ }
+ play_button_react_to_button_release(priv->play_button, result);
return TRUE;
}
@@ -187,6 +187,7 @@ transport_widget_property_update(DbusmenuMenuitem* item, gchar* property,
int update_value = g_value_get_int(value);
g_debug("transport_widget_update_state - with value %i", update_value);
play_button_toggle_play_pause(priv->play_button, (PlayButtonState)update_value);
+
}
}
diff --git a/src/volume-widget.c b/src/volume-widget.c
index bf1ddb9..5e7cf9f 100644
--- a/src/volume-widget.c
+++ b/src/volume-widget.c
@@ -1,3 +1,4 @@
+
/*
Copyright 2010 Canonical Ltd.
@@ -48,6 +49,7 @@ static void volume_widget_set_twin_item( VolumeWidget* self,
DbusmenuMenuitem* twin_item);
static void volume_widget_property_update( DbusmenuMenuitem* item, gchar* property,
GValue* value, gpointer userdata);
+
static gboolean volume_widget_change_value_cb (GtkRange *range,
GtkScrollType scroll,
gdouble value,
@@ -103,7 +105,7 @@ volume_widget_init (VolumeWidget *self)
g_object_unref(secondary_gicon);
GtkAdjustment *adj = gtk_range_get_adjustment (GTK_RANGE (volume_widget));
- gtk_adjustment_set_step_increment(adj, 3);
+ gtk_adjustment_set_step_increment(adj, 4);
}
static void