diff --git a/doc/fixes3-7-0.txt b/doc/fixes3-7-0.txt index 86bff13b4..37f595f3e 100644 --- a/doc/fixes3-7-0.txt +++ b/doc/fixes3-7-0.txt @@ -1360,6 +1360,7 @@ Qt: during role/race/&c selection, update role titles with their icons, and Qt: if a menu of objects contains at least one iron ball, and player is not alreadly in the midst of entering a count, recognize '0' as a group accelerator rather than the start of a count +Qt: to play user sounds with volume, replace QSound with QSoundEffect Qt: {maybe just Qt+OSX:} when viewing a text window ('V' to look at 'history' for instance), clicking on [Search], entering a search target in the resulting popup and clicking on [Okay] or typing , the text diff --git a/win/Qt/qt_bind.cpp b/win/Qt/qt_bind.cpp index 5039f6541..bde7d4036 100644 --- a/win/Qt/qt_bind.cpp +++ b/win/Qt/qt_bind.cpp @@ -12,10 +12,10 @@ extern "C" { #include #include #if QT_VERSION < 0x050000 -#include +#include #elif QT_VERSION < 0x060000 #include -#include +#include #else #include #undef QT_NO_SOUND @@ -1100,14 +1100,24 @@ struct window_procs Qt_procs = { #ifndef WIN32 extern "C" void play_usersound(const char *, int); +QSoundEffect *effect = NULL; + /* called from core, sounds.c */ void -play_usersound(const char *filename, int volume UNUSED) +play_usersound(const char *filename, int volume) { #if defined(USER_SOUNDS) && !defined(QT_NO_SOUND) - QSound::play(filename); + if (!effect) + effect = new QSoundEffect(nethack_qt_::NetHackQtBind::mainWidget()); + if (effect) { + effect->setLoopCount(1); + effect->setVolume((1.00f * volume) / 100.0f); + effect->setSource(QUrl::fromLocalFile(filename)); + effect->play(); + } #else nhUse(filename); + nhUse(volume); #endif } #endif /*!WIN32*/