chatgui: add sound playback via miniaudio (MP3 notification sounds)
- SoundManager singleton wraps ma_engine + ma_sound (non-blocking, background thread) - MP3 files embedded in QRC, decoded to PCM at startup with MA_SOUND_FLAG_DECODE - miniaudio.h (MIT) in lib/, IMPLEMENTATION in separate miniaudio_impl.c - Sound settings page in SettingsDialog: enable/disable, volume slider (0-100%) - Config keys [gui] sound_enabled, sound_volume - Incoming messages trigger msg_incoming.mp3 sound
This commit is contained in:
1 parent
f6f7e12192
commit
c2ad2e78c3
25 files changed
+101647
-2
No files matched your search
@@ -7,6 +7,7 @@
|
||||
#include "settingsdialog.h"
|
||||
#include "creategroupdialog.h"
|
||||
#include "invite_link.h"
|
||||
#include "sound_manager.h"
|
||||
#include "../db/db_manager.h"
|
||||
#include "../transport/utun_node.h"
|
||||
#include "../transport/gui_bridge.h"
|
||||
@@ -18,6 +19,8 @@
|
||||
#include <QMessageBox>
|
||||
#include <QDebug>
|
||||
#include <QSettings>
|
||||
#include <QFile>
|
||||
#include <QTextStream>
|
||||
|
||||
extern "C" {
|
||||
#include "../transport/chat_core.h"
|
||||
@@ -80,6 +83,29 @@ MainWindow::MainWindow(QWidget *parent, DbManager* db, const QString& cfgPath,
|
||||
setupUi();
|
||||
setupTray();
|
||||
|
||||
SoundManager* sm = SoundManager::instance();
|
||||
if (sm->init()) {
|
||||
QFile cfgFile(m_cfgPath);
|
||||
if (cfgFile.open(QIODevice::ReadOnly | QIODevice::Text)) {
|
||||
bool inGui = false; bool enabled = true; int volume = 80;
|
||||
QTextStream in(&cfgFile);
|
||||
while (!in.atEnd()) {
|
||||
QString line = in.readLine().trimmed();
|
||||
if (line == "[gui]") { inGui = true; continue; }
|
||||
if (line.startsWith("[") && line.endsWith("]")) inGui = false;
|
||||
if (!inGui) continue;
|
||||
if (line.startsWith("sound_enabled="))
|
||||
enabled = line.mid(15).trimmed() != "0";
|
||||
else if (line.startsWith("sound_volume="))
|
||||
volume = line.mid(13).trimmed().toInt();
|
||||
}
|
||||
cfgFile.close();
|
||||
sm->setEnabled(enabled);
|
||||
sm->setVolume(volume / 100.0f);
|
||||
}
|
||||
sm->loadSound("msg_incoming", ":/sounds/msg_incoming.mp3");
|
||||
}
|
||||
|
||||
if (m_db) {
|
||||
s_mainWindow = this;
|
||||
gui_bridge_set_msg_received_cb(onMsgReceivedCallback);
|
||||
@@ -277,6 +303,7 @@ void MainWindow::showSettings() {
|
||||
|
||||
void MainWindow::onMessageReceived(const char* ch_id) {
|
||||
DEBUG_INFO(DEBUG_CATEGORY_DEBUG, "MainWindow: msg received ch=%s", ch_id);
|
||||
SoundManager::instance()->play("msg_incoming");
|
||||
if (m_messageList)
|
||||
m_messageList->refresh();
|
||||
}
|
||||
|
||||
Reference in new issue
Block a user