mirror of
https://github.com/rozniak/xfce-winxp-tc.git
synced 2026-05-01 11:41:30 +00:00
Enhancement: Fixes #323, Add 'ding' sound for volume control
This commit is contained in:
@@ -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}
|
||||
|
||||
@@ -1,3 +1,5 @@
|
||||
bt,rt:canberra
|
||||
bt,rt:canberra-gtk3
|
||||
bt,rt:garcon
|
||||
bt,rt:garcon-gtk3
|
||||
bt,rt:gdk-pixbuf2
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user