[goobox] added a volume button



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]