59
59
update_icons (int dev)
61
float val = gtk_range_get_value(GTK_RANGE(slider[dev]));
73
gtk_button_set_image(GTK_BUTTON(button[dev]), GTK_WIDGET(images[dev][icon]));
61
float val = gtk_range_get_value (GTK_RANGE (slider[dev]));
75
gtk_button_set_image (GTK_BUTTON (button[dev]), GTK_WIDGET (images[dev][icon]));
78
slider_moved(GtkRange* range, gchar* device)
80
slider_moved (GtkRange* range, gchar* device)
80
gdouble value = gtk_range_get_value(range);
81
DEBUG("Volume changed for %s: %f ", device, value);
82
dbus_set_volume(device, value);
83
if(strcmp(device, "speaker") == 0)
84
update_icons(SPEAKER);
82
gdouble value = gtk_range_get_value (range);
83
DEBUG ("Volume changed for %s: %f ", device, value);
84
dbus_set_volume (device, value);
86
if (strcmp (device, "speaker") == 0)
87
update_icons (SPEAKER);
90
mute_cb( GtkWidget *widget, gchar* device )
93
mute_cb (GtkWidget *widget, gchar* device)
93
if(strcmp(device, "speaker") == 0)
98
if(gtk_toggle_button_get_active(GTK_TOGGLE_BUTTON(widget)))
101
value[dev] = gtk_range_get_value(GTK_RANGE(slider[dev]));
102
dbus_set_volume(device, 0);
107
dbus_set_volume(device, value[dev]);
97
if (strcmp (device, "speaker") == 0)
102
if (gtk_toggle_button_get_active (GTK_TOGGLE_BUTTON (widget))) { // Save value
104
value[dev] = gtk_range_get_value (GTK_RANGE (slider[dev]));
105
dbus_set_volume (device, 0);
106
} else { //Restore value
108
dbus_set_volume (device, value[dev]);
113
set_slider(const gchar * device, gdouble newval)
115
set_slider (const gchar * device, gdouble newval)
116
if(strcmp(device, "speaker") == 0)
121
gtk_signal_handler_block(GTK_OBJECT(slider[dev]), movedConnId[dev]);
122
gtk_range_set_value(GTK_RANGE(slider[dev]), newval);
123
gtk_signal_handler_unblock(slider[dev], movedConnId[dev]);
125
gtk_signal_handler_block(GTK_OBJECT(button[dev]),toggledConnId[dev]);
126
gtk_toggle_button_set_active(GTK_TOGGLE_BUTTON(button[dev]), (newval == 0 ? TRUE: FALSE));
127
gtk_signal_handler_unblock(button[dev], toggledConnId[dev]);
119
if (strcmp (device, "speaker") == 0)
124
gtk_signal_handler_block (GTK_OBJECT (slider[dev]), movedConnId[dev]);
125
gtk_range_set_value (GTK_RANGE (slider[dev]), newval);
126
gtk_signal_handler_unblock (slider[dev], movedConnId[dev]);
128
gtk_signal_handler_block (GTK_OBJECT (button[dev]),toggledConnId[dev]);
129
gtk_toggle_button_set_active (GTK_TOGGLE_BUTTON (button[dev]), (newval == 0 ? TRUE: FALSE));
130
gtk_signal_handler_unblock (button[dev], toggledConnId[dev]);
132
135
/** Generates the speaker slider and mute button */
134
create_slider(const gchar * device)
137
create_slider (const gchar * device)
136
// Increment the references count for the images
137
// When the image is removed from a button, if the ref count = 0, then it is destroyed
138
// which we don't want ;)
143
if(strcmp(device, "speaker") == 0)
146
images[SPEAKER][MUTED] = gtk_image_new_from_file( ICONS_DIR "/speaker.svg");
147
images[SPEAKER][VOL25] = gtk_image_new_from_file( ICONS_DIR "/speaker_25.svg");
148
images[SPEAKER][VOL50] = gtk_image_new_from_file( ICONS_DIR "/speaker_50.svg");
149
images[SPEAKER][VOL75] = gtk_image_new_from_file( ICONS_DIR "/speaker_75.svg");
150
g_object_ref(images[SPEAKER][MUTED]);
151
g_object_ref(images[SPEAKER][VOL25]);
152
g_object_ref(images[SPEAKER][VOL50]);
153
g_object_ref(images[SPEAKER][VOL75]);
155
else if (strcmp(device, "mic") == 0)
158
images[MIKE][MUTED] = gtk_image_new_from_file( ICONS_DIR "/mic.svg");
159
images[MIKE][VOL25] = gtk_image_new_from_file( ICONS_DIR "/mic_25.svg");
160
images[MIKE][VOL50] = gtk_image_new_from_file( ICONS_DIR "/mic_50.svg");
161
images[MIKE][VOL75] = gtk_image_new_from_file( ICONS_DIR "/mic_75.svg");
162
g_object_ref(images[MIKE][MUTED]);
163
g_object_ref(images[MIKE][VOL25]);
164
g_object_ref(images[MIKE][VOL50]);
165
g_object_ref(images[MIKE][VOL75]);
168
ret = gtk_hbox_new ( FALSE /*homogeneous*/, 5 /*spacing*/);
169
gtk_container_set_border_width (GTK_CONTAINER(ret), 5);
139
// Increment the references count for the images
140
// When the image is removed from a button, if the ref count = 0, then it is destroyed
141
// which we don't want ;)
146
if (strcmp (device, "speaker") == 0) {
148
images[SPEAKER][MUTED] = gtk_image_new_from_file (ICONS_DIR "/speaker.svg");
149
images[SPEAKER][VOL25] = gtk_image_new_from_file (ICONS_DIR "/speaker_25.svg");
150
images[SPEAKER][VOL50] = gtk_image_new_from_file (ICONS_DIR "/speaker_50.svg");
151
images[SPEAKER][VOL75] = gtk_image_new_from_file (ICONS_DIR "/speaker_75.svg");
152
g_object_ref (images[SPEAKER][MUTED]);
153
g_object_ref (images[SPEAKER][VOL25]);
154
g_object_ref (images[SPEAKER][VOL50]);
155
g_object_ref (images[SPEAKER][VOL75]);
156
} else if (strcmp (device, "mic") == 0) {
158
images[MIKE][MUTED] = gtk_image_new_from_file (ICONS_DIR "/mic.svg");
159
images[MIKE][VOL25] = gtk_image_new_from_file (ICONS_DIR "/mic_25.svg");
160
images[MIKE][VOL50] = gtk_image_new_from_file (ICONS_DIR "/mic_50.svg");
161
images[MIKE][VOL75] = gtk_image_new_from_file (ICONS_DIR "/mic_75.svg");
162
g_object_ref (images[MIKE][MUTED]);
163
g_object_ref (images[MIKE][VOL25]);
164
g_object_ref (images[MIKE][VOL50]);
165
g_object_ref (images[MIKE][VOL75]);
168
ret = gtk_hbox_new (FALSE /*homogeneous*/, 5 /*spacing*/);
169
gtk_container_set_border_width (GTK_CONTAINER (ret), 5);
171
171
#if GTK_CHECK_VERSION(2,12,0)
172
if( strcmp( device , "speaker") == 0 )
173
gtk_widget_set_tooltip_text( GTK_WIDGET( ret ), _("Speakers volume"));
175
gtk_widget_set_tooltip_text( GTK_WIDGET( ret ), _("Mic volume"));
173
if (strcmp (device , "speaker") == 0)
174
gtk_widget_set_tooltip_text (GTK_WIDGET (ret), _ ("Speakers volume"));
176
gtk_widget_set_tooltip_text (GTK_WIDGET (ret), _ ("Mic volume"));
178
button[dev] = gtk_toggle_button_new();
179
gtk_box_pack_start (GTK_BOX (ret), button[dev], FALSE /*expand*/, TRUE /*fill*/, 0 /*padding*/);
180
toggledConnId[dev] = g_signal_connect (G_OBJECT (button[dev]), "toggled",
181
G_CALLBACK (mute_cb), (gpointer)device);
183
slider[dev] = gtk_hscale_new_with_range(0, 1, 0.05);
184
gtk_scale_set_draw_value(GTK_SCALE(slider[dev]), FALSE);
185
//gtk_range_set_update_policy(GTK_RANGE(slider), GTK_UPDATE_DELAYED);
186
movedConnId[dev] = g_signal_connect (G_OBJECT (slider[dev]), "value_changed",
187
G_CALLBACK (slider_moved), (gpointer)device);
188
gtk_box_pack_start (GTK_BOX (ret), slider[dev], TRUE /*expand*/, TRUE /*fill*/, 0 /*padding*/);
190
set_slider(device, dbus_get_volume(device));
180
button[dev] = gtk_toggle_button_new();
181
gtk_box_pack_start (GTK_BOX (ret), button[dev], FALSE /*expand*/, TRUE /*fill*/, 0 /*padding*/);
182
toggledConnId[dev] = g_signal_connect (G_OBJECT (button[dev]), "toggled",
183
G_CALLBACK (mute_cb), (gpointer) device);
185
slider[dev] = gtk_hscale_new_with_range (0, 1, 0.05);
186
gtk_scale_set_draw_value (GTK_SCALE (slider[dev]), FALSE);
187
//gtk_range_set_update_policy(GTK_RANGE(slider), GTK_UPDATE_DELAYED);
188
movedConnId[dev] = g_signal_connect (G_OBJECT (slider[dev]), "value_changed",
189
G_CALLBACK (slider_moved), (gpointer) device);
190
gtk_box_pack_start (GTK_BOX (ret), slider[dev], TRUE /*expand*/, TRUE /*fill*/, 0 /*padding*/);
192
set_slider (device, dbus_get_volume (device));