notification sounds with miniaudio

This commit is contained in:
ouwou 2023-03-06 20:45:10 -05:00
parent 64085fafec
commit fbbfdc9606
6 changed files with 41 additions and 2 deletions

View File

@ -63,7 +63,7 @@ jobs:
with:
cond: ${{ matrix.mindeps == true }}
if_true: |
cmake -GNinja -Bbuild -DCMAKE_BUILD_TYPE=${{ matrix.buildtype }} -DUSE_LIBHANDY=OFF
cmake -GNinja -Bbuild -DCMAKE_BUILD_TYPE=${{ matrix.buildtype }} -DUSE_LIBHANDY=OFF -DUSE_MINIAUDIO=OFF
cmake --build build
if_false: |
cmake -GNinja -Bbuild -DCMAKE_BUILD_TYPE=${{ matrix.buildtype }}

3
.gitmodules vendored
View File

@ -7,3 +7,6 @@
[submodule "subprojects/keychain"]
path = subprojects/keychain
url = https://github.com/hrantzsch/keychain
[submodule "subprojects/miniaudio"]
path = subprojects/miniaudio
url = https://github.com/mackron/miniaudio

View File

@ -9,6 +9,7 @@ set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_SOURCE_DIR}/cmake/")
option(USE_LIBHANDY "Enable features that require libhandy (default)" ON)
option(USE_KEYCHAIN "Store the token in the keychain (default)" ON)
option(USE_MINIAUDIO "Enable features that require miniaudio (default)" ON)
find_package(nlohmann_json REQUIRED)
find_package(CURL)
@ -123,3 +124,8 @@ if (USE_KEYCHAIN)
target_compile_definitions(abaddon PRIVATE WITH_KEYCHAIN)
endif ()
endif ()
if (USE_MINIAUDIO)
target_include_directories(abaddon PUBLIC subprojects/miniaudio)
target_compile_definitions(abaddon PRIVATE WITH_MINIAUDIO)
endif ()

View File

@ -2,9 +2,19 @@
#include <glibmm/ustring.h>
#include <gdkmm/pixbuf.h>
#ifdef WITH_MINIAUDIO
#include <miniaudio.h>
#endif
class Notifier {
public:
Notifier();
~Notifier();
void Notify(const Glib::ustring &title, const Glib::ustring &text, const Glib::ustring &default_action);
private:
#ifdef WITH_MINIAUDIO
ma_engine m_engine;
#endif
};

View File

@ -1,11 +1,30 @@
#include "notifier.hpp"
#include <giomm/notification.h>
Notifier::Notifier() {}
#define MINIAUDIO_IMPLEMENTATION
#include <miniaudio.h>
Notifier::Notifier() {
#ifdef WITH_MINIAUDIO
if (ma_engine_init(nullptr, &m_engine) != MA_SUCCESS) {
printf("failed to initialize miniaudio engine\n");
}
#endif
}
Notifier::~Notifier() {
#ifdef WITH_MINIAUDIO
ma_engine_uninit(&m_engine);
#endif
}
void Notifier::Notify(const Glib::ustring &title, const Glib::ustring &text, const Glib::ustring &default_action) {
auto n = Gio::Notification::create(title);
n->set_body(text);
n->set_default_action(default_action);
Abaddon::Get().GetApp()->send_notification(n);
#ifdef WITH_MINIAUDIO
ma_engine_play_sound(&m_engine, Abaddon::Get().GetResPath("/sound/message.mp3").c_str(), nullptr);
#endif
}

1
subprojects/miniaudio Submodule

@ -0,0 +1 @@
Subproject commit c153a947919808419b0bf3f56b6f2ee606d6c5f4