[goobox] added a volume button
- From: Paolo Bacchilega <paobac src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [goobox] added a volume button
- Date: Sun, 30 Dec 2018 12:08:45 +0000 (UTC)
commit e65b981273cfcbd1bf3585d72b3ff2cd9d613727
Author: Paolo Bacchilega <paobac src gnome org>
Date: Sun Dec 30 10:27:56 2018 +0100
added a volume button
src/goo-player.c | 8 +++++---
src/goo-window.c | 46 ++++++++++++++++++++++++++++++++++++++--------
2 files changed, 43 insertions(+), 11 deletions(-)
---
diff --git a/src/goo-player.c b/src/goo-player.c
index b12812c..e73834f 100644
--- a/src/goo-player.c
+++ b/src/goo-player.c
@@ -38,6 +38,8 @@
#define REFRESH_RATE 5
#define PROGRESS_DELAY 400
#define QUEUE_SIZE 16384U /*131072U*/
+#define PIPELINE_VOLUME(x) ((x) / 100.0)
+
struct _GooPlayerPrivate {
BraseroDrive *drive;
@@ -282,6 +284,8 @@ create_pipeline (GooPlayer *self)
"vis-plugin", vis_plugin,
"flags", flags,
"uri", "cdda://",
+ "volume", PIPELINE_VOLUME (self->priv->volume_value),
+ "buffer-duration", (guint64) 10 * GST_SECOND,
NULL);
g_signal_connect (self->priv->pipeline,
@@ -961,10 +965,8 @@ goo_player_set_audio_volume (GooPlayer *player,
return;
player->priv->volume_value = vol;
- /*
if (player->priv->pipeline != NULL)
- g_object_set (G_OBJECT (player->priv->pipeline), "volume", vol, NULL);
- */
+ g_object_set (G_OBJECT (player->priv->pipeline), "volume", PIPELINE_VOLUME
(player->priv->volume_value), NULL);
}
diff --git a/src/goo-window.c b/src/goo-window.c
index 1af0909..bc26f69 100644
--- a/src/goo-window.c
+++ b/src/goo-window.c
@@ -401,7 +401,7 @@ goo_window_finalize (GObject *object)
/* Save preferences */
- g_settings_set_int (window->priv->settings_general, PREF_GENERAL_VOLUME, (int)
(goo_player_get_audio_volume (window->priv->player) * 100.0));
+ g_settings_set_int (window->priv->settings_general, PREF_GENERAL_VOLUME,
goo_player_get_audio_volume (window->priv->player));
/**/
@@ -2100,6 +2100,16 @@ progress_skip_to_cb (GooPlayerProgress *progress,
}
+static void
+volume_button_value_changed_cb (GtkScaleButton *button,
+ gdouble value,
+ gpointer user_data)
+{
+ GooWindow *window = user_data;
+ goo_player_set_audio_volume (window->priv->player, value);
+}
+
+
static void
goo_window_construct (GooWindow *window,
BraseroDrive *drive)
@@ -2126,9 +2136,17 @@ goo_window_construct (GooWindow *window,
if (icon_size == 0)
icon_size = get_icon_size_from_settings (GTK_ICON_SIZE_LARGE_TOOLBAR);
+ /* Create the settings objects */
+
+ window->priv->settings_general = g_settings_new (GOOBOX_SCHEMA_GENERAL);
+ window->priv->settings_ui = g_settings_new (GOOBOX_SCHEMA_UI);
+ window->priv->settings_playlist = g_settings_new (GOOBOX_SCHEMA_PLAYLIST);
+ window->priv->settings_encoder = g_settings_new (GOOBOX_SCHEMA_ENCODER);
+
/* Create the data */
window->priv->player = goo_player_new (drive);
+ goo_player_set_audio_volume (window->priv->player, g_settings_get_int
(window->priv->settings_general, PREF_GENERAL_VOLUME));
g_signal_connect (window->priv->player,
"start",
@@ -2145,13 +2163,6 @@ goo_window_construct (GooWindow *window,
window->priv->playlist = NULL;
- /* Create the settings objects */
-
- window->priv->settings_general = g_settings_new (GOOBOX_SCHEMA_GENERAL);
- window->priv->settings_ui = g_settings_new (GOOBOX_SCHEMA_UI);
- window->priv->settings_playlist = g_settings_new (GOOBOX_SCHEMA_PLAYLIST);
- window->priv->settings_encoder = g_settings_new (GOOBOX_SCHEMA_ENCODER);
-
/* Create the widgets. */
/* * File list. */
@@ -2311,6 +2322,25 @@ goo_window_construct (GooWindow *window,
gtk_actionable_set_action_name (GTK_ACTIONABLE (button), "win.next-track");
gtk_widget_show_all (button);
gtk_box_pack_start (GTK_BOX (button_box), button, FALSE, FALSE, 0);
+
+ button = gtk_volume_button_new ();
+ gtk_button_set_relief (GTK_BUTTON (button), GTK_RELIEF_NORMAL);
+ gtk_widget_set_valign (button, GTK_ALIGN_CENTER);
+ gtk_scale_button_set_adjustment (GTK_SCALE_BUTTON (button),
+ gtk_adjustment_new (0.0,
+ 0.0,
+ 100.0,
+ 1.0,
+ 10.0,
+ 0.0));
+ gtk_scale_button_set_value (GTK_SCALE_BUTTON (button), goo_player_get_audio_volume
(window->priv->player));
+ gtk_widget_show (button);
+ gtk_header_bar_pack_start (GTK_HEADER_BAR (headerbar), button);
+
+ g_signal_connect (button,
+ "value-changed",
+ G_CALLBACK (volume_button_value_changed_cb),
+ window);
}
/* gears menu button */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]