From 64f088f495bdd55903dd62bd8598e8a514355ed9 Mon Sep 17 00:00:00 2001 From: SED4906 Date: Mon, 21 Oct 2024 16:16:58 -0700 Subject: [PATCH] BAlert: play user-selected sound * Alert sounds are separate from notifications Change-Id: I9e5545084faea354ddd339154c10b54d6479b404 Reviewed-on: https://review.haiku-os.org/c/haiku/+/8477 Tested-by: Commit checker robot Reviewed-by: Adrien Destugues --- headers/os/interface/Alert.h | 1 + headers/private/media/MediaSounds.h | 3 +++ src/kits/interface/Alert.cpp | 25 +++++++++++++++++++++++++ src/kits/interface/Jamfile | 2 +- src/servers/media/MediaFilesManager.cpp | 3 +++ 5 files changed, 33 insertions(+), 1 deletion(-) diff --git a/headers/os/interface/Alert.h b/headers/os/interface/Alert.h index 69d838295f..4707c32892 100644 --- a/headers/os/interface/Alert.h +++ b/headers/os/interface/Alert.h @@ -107,6 +107,7 @@ private: BBitmap* _CreateTypeIcon(); BButton* _CreateButton(int32 which, const char* label); void _Prepare(); + void _PlaySound(); private: sem_id fAlertSem; diff --git a/headers/private/media/MediaSounds.h b/headers/private/media/MediaSounds.h index 84835e1656..e172ba45a7 100644 --- a/headers/private/media/MediaSounds.h +++ b/headers/private/media/MediaSounds.h @@ -13,6 +13,9 @@ #define MEDIA_SOUNDS_BEEP "Beep" #define MEDIA_SOUNDS_STARTUP "Startup" +#define MEDIA_SOUNDS_INFORMATION_ALERT "Information alert" +#define MEDIA_SOUNDS_IMPORTANT_ALERT "Important alert" +#define MEDIA_SOUNDS_ERROR_ALERT "Error alert" #define MEDIA_SOUNDS_KEY_DOWN "Key down" #define MEDIA_SOUNDS_KEY_REPEAT "Key repeat" #define MEDIA_SOUNDS_KEY_UP "Key up" diff --git a/src/kits/interface/Alert.cpp b/src/kits/interface/Alert.cpp index d8a6245570..2063db85c0 100644 --- a/src/kits/interface/Alert.cpp +++ b/src/kits/interface/Alert.cpp @@ -6,6 +6,7 @@ * Axel Dörfler, axeld@pinc-software.de * Erik Jaesler, erik@cgsoftware.com * John Scipione, jscipione@gmail.com + * Ron Ben Aroya, sed4906birdie@gmail.com */ @@ -18,6 +19,7 @@ #include +#include #include #include #include @@ -25,6 +27,7 @@ #include #include #include +#include #include #include #include @@ -279,6 +282,7 @@ BAlert::Go() _Prepare(); Show(); + _PlaySound(); if (window != NULL) { status_t status; @@ -316,6 +320,7 @@ BAlert::Go(BInvoker* invoker) fInvoker = invoker; _Prepare(); Show(); + _PlaySound(); return B_OK; } @@ -654,6 +659,26 @@ BAlert::_Prepare() } +void +BAlert::_PlaySound() +{ + switch (Type()) { + case B_INFO_ALERT: + system_beep(MEDIA_SOUNDS_INFORMATION_ALERT); + break; + case B_WARNING_ALERT: + system_beep(MEDIA_SOUNDS_IMPORTANT_ALERT); + break; + case B_STOP_ALERT: + system_beep(MEDIA_SOUNDS_ERROR_ALERT); + break; + + default: + break; + } +} + + // #pragma mark - TAlertView diff --git a/src/kits/interface/Jamfile b/src/kits/interface/Jamfile index 18b3f68eb5..2bec764848 100644 --- a/src/kits/interface/Jamfile +++ b/src/kits/interface/Jamfile @@ -20,7 +20,7 @@ if $(RUN_WITHOUT_APP_SERVER) != 0 { SetSubDirSupportedPlatforms haiku libbe_test ; UseLibraryHeaders agg ; -UsePrivateHeaders app input print interface locale shared support tracker ; +UsePrivateHeaders app input print interface locale media shared support tracker ; UseHeaders [ FDirName $(HAIKU_TOP) src kits tracker ] ; diff --git a/src/servers/media/MediaFilesManager.cpp b/src/servers/media/MediaFilesManager.cpp index 17d30e1773..ba72c70c29 100644 --- a/src/servers/media/MediaFilesManager.cpp +++ b/src/servers/media/MediaFilesManager.cpp @@ -38,6 +38,9 @@ MediaFilesManager::MediaFilesManager() } kInitialItems[] = { {MEDIA_TYPE_SOUNDS, MEDIA_SOUNDS_BEEP}, {MEDIA_TYPE_SOUNDS, MEDIA_SOUNDS_STARTUP}, + {MEDIA_TYPE_SOUNDS, MEDIA_SOUNDS_INFORMATION_ALERT}, + {MEDIA_TYPE_SOUNDS, MEDIA_SOUNDS_IMPORTANT_ALERT}, + {MEDIA_TYPE_SOUNDS, MEDIA_SOUNDS_ERROR_ALERT}, {MEDIA_TYPE_SOUNDS, MEDIA_SOUNDS_KEY_DOWN}, {MEDIA_TYPE_SOUNDS, MEDIA_SOUNDS_KEY_REPEAT}, {MEDIA_TYPE_SOUNDS, MEDIA_SOUNDS_KEY_UP},