fix: voice message display, playback, recording UI, audio settings

- messagelist: parse content_type from JSON when DB column is empty
- messagelist: recording indicator (red dot + timer + cancel button)
- messagedelegate: editorEvent for play/pause toggle + progress bar
- messagedelegate: VoicePlayState tracking with QTimer
- InputBar: proper recordingContext (mediaDir + channelId)
- DbManager: dbPath() for media directory resolution
- AudioRecorder: peakLevel() for mic level meter
- VoiceEncoder: codec quality presets (Low/Standard/High)
- audiodevicesettingspage: Default device option first
- audiodevicesettingspage: mic level meter + test microphone
- audiodevicesettingspage: test speaker button
- audiodevicesettingspage: codec preset combo (Low/Standard/High)
- mainwindow: load opus_codec_preset from ui_state on startup
This commit is contained in:
Evgeny committed 2026-07-26 21:19:29 +03:00
1 parent 4fde0b0325
commit 850a260aac
14 files changed
+483 -57

No files matched your search

+7 -3
View File
@@ -9,6 +9,7 @@
#include "invite_link.h"
#include "sound_manager.h"
#include "audiorecorder.h"
#include "voicemessageencoder.h"
#include "animtimer.h"
#include "../db/db_manager.h"
#include "../transport/utun_node.h"
@@ -75,6 +76,7 @@ MainWindow::MainWindow(QWidget *parent, DbManager* db, const QString& cfgPath,
{
setWindowTitle("Chat");
resize(900, 600);
if (m_db) m_db->setDbPath(m_cfgDbPath);
setupUi();
setupTray();
setupSoundFromConfig();
@@ -202,10 +204,12 @@ void MainWindow::setupSoundFromConfig() {
if (m_recorder) {
m_recorder->init();
if (m_db && m_db->isOpen())
if (m_db && m_db->isOpen()) {
m_recorder->setCaptureDeviceIndex(m_db->getUiStateInt("audio_input_device", -1));
qDebug("MainWindow: AudioRecorder initialized (captureDevice=%d)",
m_recorder->captureDeviceIndex());
VoiceEncoder::setPreset(m_db->getUiStateInt("opus_codec_preset", 1));
}
qDebug("MainWindow: AudioRecorder initialized (captureDevice=%d, opusPreset=%d)",
m_recorder->captureDeviceIndex(), VoiceEncoder::preset());
}
}