diff --git a/app/soundviewer.cpp b/app/soundviewer.cpp index 3fc398d..3469e0c 100644 --- a/app/soundviewer.cpp +++ b/app/soundviewer.cpp @@ -1,80 +1,80 @@ -#include "soundviewer.h" -#include "ui_soundviewer.h" - -SoundViewer::SoundViewer(QWidget *parent) - : QWidget(parent) - , ui(new Ui::SoundViewer) - , player(new QMediaPlayer()) - , buffer(new QBuffer()) -{ - ui->setupUi(this); - - connect(ui->pushButton_Play, &QPushButton::clicked, player, &QMediaPlayer::play); - connect(ui->pushButton_Pause, &QPushButton::clicked, player, &QMediaPlayer::pause); - connect(ui->pushButton_Stop, &QPushButton::clicked, this, [this]() { - if (player->isPlaying()) { - player->stop(); - } - }); - connect(ui->pushButton_SkipForward, &QPushButton::clicked, this, [this]() { - player->setPosition(player->position() + 30); - }); - connect(ui->pushButton_SkipBack, &QPushButton::clicked, this, [this]() { - player->setPosition(player->position() - 30); - }); - connect(player, &QMediaPlayer::positionChanged, player, [this](qint64 position) { - ui->horizontalSlider->setSliderPosition(position); - ui->label_Time->setText(QString("%1:%2:%3") - .arg(position / 60000) - .arg((position % 60000) / 1000) - .arg(position % 1000)); - }); - connect(player, &QMediaPlayer::durationChanged, player, [this](qint64 duration) { - ui->horizontalSlider->setMaximum(duration); - ui->label_TimeMax->setText(QString("%1:%2:%3") - .arg(duration / 60000) - .arg((duration % 60000) / 1000) - .arg(duration % 1000)); - }); - connect(ui->horizontalSlider, &QSlider::sliderMoved, this, [this](int position) { - player->setPosition(position); - }); - - for (auto outputDevice : QMediaDevices::audioOutputs()) { - ui->comboBox_Output->addItem(outputDevice.description()); - } - connect(ui->comboBox_Output, &QComboBox::currentIndexChanged, this, [this](int index) { - auto outputDevice = QMediaDevices::audioOutputs()[index]; - QAudioOutput *audioOutput = new QAudioOutput(outputDevice); - player->setAudioOutput(audioOutput); - }); - - auto outputDevice = QMediaDevices::defaultAudioOutput(); - QAudioOutput *audioOutput = new QAudioOutput(outputDevice); - player->setAudioOutput(audioOutput); -} - -SoundViewer::~SoundViewer() -{ - delete buffer; - delete player; - delete ui; -} - -// void SoundViewer::SetSound(std::shared_ptr aSound) -// { -// buffer->setData(aSound->data); -// if (!buffer->open(QIODevice::ReadOnly)) { -// qWarning() << "Failed to open QBuffer."; -// return; -// } - -// ui->groupBox->setTitle(aSound->path); -// player->setSourceDevice(buffer); -// } - -void SoundViewer::SetOutput(QAudioOutput *aOutput) { - if (!aOutput) { return; } - - player->setAudioOutput(aOutput); -} +#include "soundviewer.h" +#include "ui_soundviewer.h" + +SoundViewer::SoundViewer(QWidget *parent) + : QWidget(parent) + , ui(new Ui::SoundViewer) + , player(new QMediaPlayer()) + , buffer(new QBuffer()) +{ + ui->setupUi(this); + + connect(ui->pushButton_Play, &QPushButton::clicked, player, &QMediaPlayer::play); + connect(ui->pushButton_Pause, &QPushButton::clicked, player, &QMediaPlayer::pause); + connect(ui->pushButton_Stop, &QPushButton::clicked, this, [this]() { + if (player->isPlaying()) { + player->stop(); + } + }); + connect(ui->pushButton_SkipForward, &QPushButton::clicked, this, [this]() { + player->setPosition(player->position() + 30); + }); + connect(ui->pushButton_SkipBack, &QPushButton::clicked, this, [this]() { + player->setPosition(player->position() - 30); + }); + connect(player, &QMediaPlayer::positionChanged, player, [this](qint64 position) { + ui->horizontalSlider->setSliderPosition(position); + ui->label_Time->setText(QString("%1:%2:%3") + .arg(position / 60000) + .arg((position % 60000) / 1000) + .arg(position % 1000)); + }); + connect(player, &QMediaPlayer::durationChanged, player, [this](qint64 duration) { + ui->horizontalSlider->setMaximum(duration); + ui->label_TimeMax->setText(QString("%1:%2:%3") + .arg(duration / 60000) + .arg((duration % 60000) / 1000) + .arg(duration % 1000)); + }); + connect(ui->horizontalSlider, &QSlider::sliderMoved, this, [this](int position) { + player->setPosition(position); + }); + + for (auto outputDevice : QMediaDevices::audioOutputs()) { + ui->comboBox_Output->addItem(outputDevice.description()); + } + connect(ui->comboBox_Output, &QComboBox::currentIndexChanged, this, [this](int index) { + auto outputDevice = QMediaDevices::audioOutputs()[index]; + QAudioOutput *audioOutput = new QAudioOutput(outputDevice); + player->setAudioOutput(audioOutput); + }); + + auto outputDevice = QMediaDevices::defaultAudioOutput(); + QAudioOutput *audioOutput = new QAudioOutput(outputDevice); + player->setAudioOutput(audioOutput); +} + +SoundViewer::~SoundViewer() +{ + delete buffer; + delete player; + delete ui; +} + +// void SoundViewer::SetSound(std::shared_ptr aSound) +// { +// buffer->setData(aSound->data); +// if (!buffer->open(QIODevice::ReadOnly)) { +// qWarning() << "Failed to open QBuffer."; +// return; +// } + +// ui->groupBox->setTitle(aSound->path); +// player->setSourceDevice(buffer); +// } + +void SoundViewer::SetOutput(QAudioOutput *aOutput) { + if (!aOutput) { return; } + + player->setAudioOutput(aOutput); +}