Enhancement: Fixes #323, Add 'ding' sound for volume control

This commit is contained in:
Rory Fewell
2024-06-15 19:33:07 +01:00
parent ed66095d57
commit e42d604079
3 changed files with 59 additions and 11 deletions

View File

@@ -21,17 +21,19 @@ include(../../packaging/cmake-inc/locale/CMakeLists.txt)
include(../../packaging/cmake-inc/packaging/CMakeLists.txt)
include(../../packaging/cmake-inc/resources/CMakeLists.txt)
wintc_resolve_library(garcon-1 GARCON)
wintc_resolve_library(garcon-gtk3-1 GARCON_GTK3)
wintc_resolve_library(gdk-pixbuf-2.0 GDK_PIXBUF)
wintc_resolve_library(glib-2.0 GLIB)
wintc_resolve_library(gtk+-3.0 GTK3)
wintc_resolve_library(wintc-comgtk WINTC_COMGTK)
wintc_resolve_library(wintc-exec WINTC_EXEC)
wintc_resolve_library(wintc-shcommon WINTC_SHCOMMON)
wintc_resolve_library(wintc-shelldpa WINTC_SHELLDPA)
wintc_resolve_library(wintc-shlang WINTC_SHLANG)
wintc_resolve_library(wintc-sndapi WINTC_SNDAPI)
wintc_resolve_library(libcanberra CANBERRA)
wintc_resolve_library(libcanberra-gtk3 CANBERRA_GTK3)
wintc_resolve_library(garcon-1 GARCON)
wintc_resolve_library(garcon-gtk3-1 GARCON_GTK3)
wintc_resolve_library(gdk-pixbuf-2.0 GDK_PIXBUF)
wintc_resolve_library(glib-2.0 GLIB)
wintc_resolve_library(gtk+-3.0 GTK3)
wintc_resolve_library(wintc-comgtk WINTC_COMGTK)
wintc_resolve_library(wintc-exec WINTC_EXEC)
wintc_resolve_library(wintc-shcommon WINTC_SHCOMMON)
wintc_resolve_library(wintc-shelldpa WINTC_SHELLDPA)
wintc_resolve_library(wintc-shlang WINTC_SHLANG)
wintc_resolve_library(wintc-sndapi WINTC_SNDAPI)
wintc_compile_resources()
wintc_create_meta_h()
@@ -83,6 +85,8 @@ target_include_directories(
wintc-taskband
SYSTEM
BEFORE
PRIVATE ${CANBERRA_INCLUDE_DIRS}
PRIVATE ${CANBERRA_GTK3_INCLUDE_DIRS}
PRIVATE ${GARCON_INCLUDE_DIRS}
PRIVATE ${GARCON_GTK3_INCLUDE_DIRS}
PRIVATE ${GDK_PIXBUF_INCLUDE_DIRS}
@@ -98,6 +102,8 @@ target_include_directories(
target_link_directories(
wintc-taskband
PRIVATE ${CANBERRA_LIBRARY_DIRS}
PRIVATE ${CANBERRA_GTK3_LIBRARY_DIRS}
PRIVATE ${GARCON_LIBRARY_DIRS}
PRIVATE ${GARCON_GTK3_LIBRARY_DIRS}
PRIVATE ${GDK_PIXBUF_LIBRARY_DIRS}
@@ -113,6 +119,8 @@ target_link_directories(
target_link_libraries(
wintc-taskband
PRIVATE ${CANBERRA_LIBRARIES}
PRIVATE ${CANBERRA_GTK3_LIBRARIES}
PRIVATE ${GARCON_LIBRARIES}
PRIVATE ${GARCON_GTK3_LIBRARIES}
PRIVATE ${GDK_PIXBUF_LIBRARIES}

View File

@@ -1,3 +1,5 @@
bt,rt:canberra
bt,rt:canberra-gtk3
bt,rt:garcon
bt,rt:garcon-gtk3
bt,rt:gdk-pixbuf2

View File

@@ -1,3 +1,5 @@
#include <canberra.h>
#include <canberra-gtk.h>
#include <glib.h>
#include <gtk/gtk.h>
#include <wintc/comgtk.h>
@@ -74,6 +76,11 @@ static void on_check_mute_toggled(
GtkToggleButton* self,
gpointer user_data
);
static gboolean on_scale_volume_button_release_event(
GtkWidget* self,
GdkEventButton* event,
gpointer user_data
);
static void on_scale_volume_value_changed(
GtkRange* self,
gpointer user_data
@@ -193,6 +200,12 @@ static void wintc_notification_volume_constructed(
G_CALLBACK(on_check_mute_toggled),
object
);
g_signal_connect(
volume->scale_volume,
"button-release-event",
G_CALLBACK(on_scale_volume_button_release_event),
NULL
);
g_signal_connect(
volume->scale_volume,
"value-changed",
@@ -412,6 +425,31 @@ static void on_check_mute_toggled(
);
}
static gboolean on_scale_volume_button_release_event(
WINTC_UNUSED(GtkWidget* self),
GdkEventButton* event,
WINTC_UNUSED(gpointer user_data)
)
{
if (event->button != GDK_BUTTON_PRIMARY)
{
return FALSE;
}
// Ding!
//
ca_context* ctx = ca_gtk_context_get();
ca_context_play(
ctx,
0,
CA_PROP_EVENT_ID, "audio-volume-change",
NULL
);
return FALSE;
}
static void on_scale_volume_value_changed(
GtkRange* self,
gpointer user_data