From e4b5f9af5ebfb202e9e28f020f4a10aa57af0565 Mon Sep 17 00:00:00 2001 From: Carl Philipp Klemm Date: Wed, 15 Apr 2026 21:26:41 +0200 Subject: [PATCH] Add volume slider --- src/AudioPlayer.cpp | 13 +++++++++++++ src/AudioPlayer.h | 2 ++ src/MainWindow.cpp | 16 ++++++++++++++++ src/MainWindow.h | 1 + src/MainWindow.ui | 46 +++++++++++++++++++++++++++++++++++++++++++-- 5 files changed, 76 insertions(+), 2 deletions(-) diff --git a/src/AudioPlayer.cpp b/src/AudioPlayer.cpp index 46e2ee8..8374027 100644 --- a/src/AudioPlayer.cpp +++ b/src/AudioPlayer.cpp @@ -120,6 +120,19 @@ int AudioPlayer::position() const return mediaPlayer->position(); } +void AudioPlayer::setVolume(int volume) +{ + // Convert from 0-100 range to 0.0-1.0 range + qreal volumeLevel = static_cast(volume) / 100.0; + audioOutput->setVolume(volumeLevel); +} + +int AudioPlayer::getVolume() const +{ + // Convert from 0.0-1.0 range to 0-100 range + return static_cast(audioOutput->volume() * 100); +} + void AudioPlayer::handlePlaybackStateChanged(QMediaPlayer::PlaybackState state) { if (state == QMediaPlayer::PlayingState) diff --git a/src/AudioPlayer.h b/src/AudioPlayer.h index e1d0b47..144010f 100644 --- a/src/AudioPlayer.h +++ b/src/AudioPlayer.h @@ -32,6 +32,8 @@ public: bool isPlaying() const; int duration() const; int position() const; + void setVolume(int volume); + int getVolume() const; signals: void playbackStarted(); diff --git a/src/MainWindow.cpp b/src/MainWindow.cpp index f077f74..565e8a4 100644 --- a/src/MainWindow.cpp +++ b/src/MainWindow.cpp @@ -54,6 +54,7 @@ MainWindow::MainWindow(QWidget *parent) connect(ui->skipButton, &QPushButton::clicked, this, &MainWindow::onSkipButtonClicked); connect(ui->stopButton, &QPushButton::clicked, this, &MainWindow::onStopButtonClicked); connect(ui->shuffleButton, &QPushButton::clicked, this, &MainWindow::onShuffleButtonClicked); + connect(ui->volumeSlider, &QSlider::valueChanged, this, &MainWindow::onVolumeSliderValueChanged); connect(ui->addSongButton, &QPushButton::clicked, this, &MainWindow::onAddSongButtonClicked); connect(ui->removeSongButton, &QPushButton::clicked, this, &MainWindow::onRemoveSongButtonClicked); connect(ui->actionAdvancedSettings, &QAction::triggered, this, &MainWindow::onAdvancedSettingsButtonClicked); @@ -111,6 +112,9 @@ MainWindow::MainWindow(QWidget *parent) currentSong = songModel->getSong(0); + // Set default volume (50% from UI) + audioPlayer->setVolume(ui->volumeSlider->value()); + // Start the worker thread and enter its event loop QObject::connect(&aceThread, &QThread::started, [this]() {qDebug() << "Worker thread started";}); aceThread.start(); @@ -161,6 +165,10 @@ void MainWindow::loadSettings() shuffleMode = settings.value("shuffleMode", false).toBool(); ui->shuffleButton->setChecked(shuffleMode); + // Load volume setting + int savedVolume = settings.value("volume", 50).toInt(); + ui->volumeSlider->setValue(savedVolume); + // Load path settings with defaults based on application directory QString appDir = QCoreApplication::applicationDirPath(); qwen3ModelPath = settings.value("qwen3ModelPath", @@ -189,6 +197,9 @@ void MainWindow::saveSettings() // Save shuffle mode settings.setValue("shuffleMode", shuffleMode); + // Save volume setting + settings.setValue("volume", ui->volumeSlider->value()); + // Save path settings settings.setValue("qwen3ModelPath", qwen3ModelPath); settings.setValue("textEncoderModelPath", textEncoderModelPath); @@ -548,6 +559,11 @@ void MainWindow::onPositionSliderSliderMoved(int position) } } +void MainWindow::onVolumeSliderValueChanged(int value) +{ + audioPlayer->setVolume(value); +} + void MainWindow::ensureSongsInQueue(bool enqeueCurrent) { // Only generate more songs if we're playing and not already at capacity diff --git a/src/MainWindow.h b/src/MainWindow.h index 6b3663f..25cdf9d 100644 --- a/src/MainWindow.h +++ b/src/MainWindow.h @@ -73,6 +73,7 @@ private slots: void onStopButtonClicked(); void onShuffleButtonClicked(); void onPositionSliderSliderMoved(int position); + void onVolumeSliderValueChanged(int value); void updatePosition(int position); void updateDuration(int duration); void onAddSongButtonClicked(); diff --git a/src/MainWindow.ui b/src/MainWindow.ui index 8d0a9ef..37a6f78 100644 --- a/src/MainWindow.ui +++ b/src/MainWindow.ui @@ -223,13 +223,55 @@ - + Qt::Orientation::Horizontal - 40 + 15 + 20 + + + + + + + + Volume: + + + + + + + + 100 + 20 + + + + 100 + + + 50 + + + Qt::Orientation::Horizontal + + + + + + + Qt::Orientation::Horizontal + + + QSizePolicy::Policy::Fixed + + + + 35 20